a3js 0.0.59 → 0.0.60
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/a3js.cjs.js +1 -1
- package/dist/a3js.cjs.js.map +1 -1
- package/dist/a3js.es.js +1 -1
- package/dist/a3js.es.js.map +1 -1
- package/package.json +1 -1
package/dist/a3js.cjs.js
CHANGED
|
@@ -137,7 +137,7 @@ Make sure that all grammar rule definitions are done before 'performSelfAnalysis
|
|
|
137
137
|
`}e.createSyntaxDiagramsCode=n}),vt=G(e=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Parser=e.createSyntaxDiagramsCode=e.clearCache=e.GAstVisitor=e.serializeProduction=e.serializeGrammar=e.Terminal=e.Rule=e.RepetitionWithSeparator=e.RepetitionMandatoryWithSeparator=e.RepetitionMandatory=e.Repetition=e.Option=e.NonTerminal=e.Alternative=e.Alternation=e.defaultLexerErrorProvider=e.NoViableAltException=e.NotAllInputParsedException=e.MismatchedTokenException=e.isRecognitionException=e.EarlyExitException=e.defaultParserErrorProvider=e.tokenName=e.tokenMatcher=e.tokenLabel=e.EOF=e.createTokenInstance=e.createToken=e.LexerDefinitionErrorType=e.Lexer=e.EMPTY_ALT=e.ParserDefinitionErrorType=e.EmbeddedActionsParser=e.CstParser=e.VERSION=void 0;var t=Pe();Object.defineProperty(e,"VERSION",{enumerable:!0,get:function(){return t.VERSION}});var n=J();Object.defineProperty(e,"CstParser",{enumerable:!0,get:function(){return n.CstParser}}),Object.defineProperty(e,"EmbeddedActionsParser",{enumerable:!0,get:function(){return n.EmbeddedActionsParser}}),Object.defineProperty(e,"ParserDefinitionErrorType",{enumerable:!0,get:function(){return n.ParserDefinitionErrorType}}),Object.defineProperty(e,"EMPTY_ALT",{enumerable:!0,get:function(){return n.EMPTY_ALT}});var r=Ve();Object.defineProperty(e,"Lexer",{enumerable:!0,get:function(){return r.Lexer}}),Object.defineProperty(e,"LexerDefinitionErrorType",{enumerable:!0,get:function(){return r.LexerDefinitionErrorType}});var i=He();Object.defineProperty(e,"createToken",{enumerable:!0,get:function(){return i.createToken}}),Object.defineProperty(e,"createTokenInstance",{enumerable:!0,get:function(){return i.createTokenInstance}}),Object.defineProperty(e,"EOF",{enumerable:!0,get:function(){return i.EOF}}),Object.defineProperty(e,"tokenLabel",{enumerable:!0,get:function(){return i.tokenLabel}}),Object.defineProperty(e,"tokenMatcher",{enumerable:!0,get:function(){return i.tokenMatcher}}),Object.defineProperty(e,"tokenName",{enumerable:!0,get:function(){return i.tokenName}});var a=Ye();Object.defineProperty(e,"defaultParserErrorProvider",{enumerable:!0,get:function(){return a.defaultParserErrorProvider}});var o=tt();Object.defineProperty(e,"EarlyExitException",{enumerable:!0,get:function(){return o.EarlyExitException}}),Object.defineProperty(e,"isRecognitionException",{enumerable:!0,get:function(){return o.isRecognitionException}}),Object.defineProperty(e,"MismatchedTokenException",{enumerable:!0,get:function(){return o.MismatchedTokenException}}),Object.defineProperty(e,"NotAllInputParsedException",{enumerable:!0,get:function(){return o.NotAllInputParsedException}}),Object.defineProperty(e,"NoViableAltException",{enumerable:!0,get:function(){return o.NoViableAltException}});var s=Be();Object.defineProperty(e,"defaultLexerErrorProvider",{enumerable:!0,get:function(){return s.defaultLexerErrorProvider}});var c=q();Object.defineProperty(e,"Alternation",{enumerable:!0,get:function(){return c.Alternation}}),Object.defineProperty(e,"Alternative",{enumerable:!0,get:function(){return c.Alternative}}),Object.defineProperty(e,"NonTerminal",{enumerable:!0,get:function(){return c.NonTerminal}}),Object.defineProperty(e,"Option",{enumerable:!0,get:function(){return c.Option}}),Object.defineProperty(e,"Repetition",{enumerable:!0,get:function(){return c.Repetition}}),Object.defineProperty(e,"RepetitionMandatory",{enumerable:!0,get:function(){return c.RepetitionMandatory}}),Object.defineProperty(e,"RepetitionMandatoryWithSeparator",{enumerable:!0,get:function(){return c.RepetitionMandatoryWithSeparator}}),Object.defineProperty(e,"RepetitionWithSeparator",{enumerable:!0,get:function(){return c.RepetitionWithSeparator}}),Object.defineProperty(e,"Rule",{enumerable:!0,get:function(){return c.Rule}}),Object.defineProperty(e,"Terminal",{enumerable:!0,get:function(){return c.Terminal}});var l=q();Object.defineProperty(e,"serializeGrammar",{enumerable:!0,get:function(){return l.serializeGrammar}}),Object.defineProperty(e,"serializeProduction",{enumerable:!0,get:function(){return l.serializeProduction}});var u=We();Object.defineProperty(e,"GAstVisitor",{enumerable:!0,get:function(){return u.GAstVisitor}});function d(){console.warn(`The clearCache function was 'soft' removed from the Chevrotain API.
|
|
138
138
|
It performs no action other than printing this message.
|
|
139
139
|
Please avoid using it as it will be completely removed in the future`)}e.clearCache=d;var f=_t();Object.defineProperty(e,"createSyntaxDiagramsCode",{enumerable:!0,get:function(){return f.createSyntaxDiagramsCode}}),e.Parser=function(){function e(){throw Error(`The Parser class has been deprecated, use CstParser or EmbeddedActionsParser instead.
|
|
140
|
-
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return e}()})(),yt=class extends c.Loader{backgroundTexture;fog;constructor(e){super(e)}load(e,t,n,r){this.backgroundTexture=void 0,this.fog=void 0;let i=this,a=i.path===``?c.LoaderUtils.extractUrlBase(e):i.path,o=new c.FileLoader(i.manager);o.setPath(i.path),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(n){try{t(i.parse(n,a))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e,t){let n={};function r(e){let t=i(),n=new bt(t.tokens),r=new St(t.tokenVocabulary),o=a(r.getBaseCstVisitorConstructor());r.input=n.lex(e).tokens;let s=r.vrml();if(r.errors.length>0)throw console.error(r.errors),Error(`THREE.VRMLLoader2: Parsing errors detected.`);return o.visit(s)}function i(){let e=vt.createToken,t=e({name:`RouteIdentifier`,pattern:/[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*[\.][^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*/}),n=e({name:`Identifier`,pattern:/[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]([^\0-\x20\x22\x27\x23\x2b\x2c\x2e\x5b\x5d\x5c\x7b\x7d])*/,longer_alt:t}),r=`Anchor.Billboard.Collision.Group.Transform.Inline.LOD.Switch.AudioClip.DirectionalLight.PointLight.Script.Shape.Sound.SpotLight.WorldInfo.CylinderSensor.PlaneSensor.ProximitySensor.SphereSensor.TimeSensor.TouchSensor.VisibilitySensor.Box.Cone.Cylinder.ElevationGrid.Extrusion.IndexedFaceSet.IndexedLineSet.PointSet.Sphere.Color.Coordinate.Normal.TextureCoordinate.Appearance.FontStyle.ImageTexture.Material.MovieTexture.PixelTexture.TextureTransform.ColorInterpolator.CoordinateInterpolator.NormalInterpolator.OrientationInterpolator.PositionInterpolator.ScalarInterpolator.Background.Fog.NavigationInfo.Viewpoint.Text`.split(`.`),i=e({name:`Version`,pattern:/#VRML.*/,longer_alt:n}),a=e({name:`NodeName`,pattern:new RegExp(r.join(`|`)),longer_alt:n}),o=e({name:`DEF`,pattern:/DEF/,longer_alt:n}),s=e({name:`USE`,pattern:/USE/,longer_alt:n}),c=e({name:`ROUTE`,pattern:/ROUTE/,longer_alt:n}),l=e({name:`TO`,pattern:/TO/,longer_alt:n}),u=e({name:`StringLiteral`,pattern:/"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/}),d=e({name:`HexLiteral`,pattern:/0[xX][0-9a-fA-F]+/}),f=e({name:`NumberLiteral`,pattern:/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/}),p=e({name:`TrueLiteral`,pattern:/TRUE/}),m=e({name:`FalseLiteral`,pattern:/FALSE/}),h=e({name:`NullLiteral`,pattern:/NULL/}),g=e({name:`LSquare`,pattern:/\[/}),_=e({name:`RSquare`,pattern:/]/}),v=e({name:`LCurly`,pattern:/{/}),y=e({name:`RCurly`,pattern:/}/}),b=e({name:`Comment`,pattern:/#.*/,group:vt.Lexer.SKIPPED}),x=[e({name:`WhiteSpace`,pattern:/[ ,\s]/,group:vt.Lexer.SKIPPED}),a,o,s,c,l,p,m,h,i,n,t,u,d,f,g,_,v,y,b],S={};for(let e=0,t=x.length;e<t;e++){let t=x[e];S[t.name]=t}return{tokens:x,tokenVocabulary:S}}function a(e){class t extends e{constructor(){super(),this.validateVisitor()}vrml(e){let t={version:this.visit(e.version),nodes:[],routes:[]};for(let n=0,r=e.node.length;n<r;n++){let r=e.node[n];t.nodes.push(this.visit(r))}if(e.route)for(let n=0,r=e.route.length;n<r;n++){let r=e.route[n];t.routes.push(this.visit(r))}return t}version(e){return e.Version[0].image}node(e){let t={name:e.NodeName[0].image,fields:[]};if(e.field)for(let n=0,r=e.field.length;n<r;n++){let r=e.field[n];t.fields.push(this.visit(r))}return e.def&&(t.DEF=this.visit(e.def[0])),t}field(e){let t={name:e.Identifier[0].image,type:null,values:null},n;return e.singleFieldValue&&(n=this.visit(e.singleFieldValue[0])),e.multiFieldValue&&(n=this.visit(e.multiFieldValue[0])),t.type=n.type,t.values=n.values,t}def(e){return(e.Identifier||e.NodeName)[0].image}use(e){return{USE:(e.Identifier||e.NodeName)[0].image}}singleFieldValue(e){return n(this,e)}multiFieldValue(e){return n(this,e)}route(e){return{FROM:e.RouteIdentifier[0].image,TO:e.RouteIdentifier[1].image}}}function n(e,t){let n={type:null,values:[]};if(t.node){n.type=`node`;for(let r=0,i=t.node.length;r<i;r++){let i=t.node[r];n.values.push(e.visit(i))}}if(t.use){n.type=`use`;for(let r=0,i=t.use.length;r<i;r++){let i=t.use[r];n.values.push(e.visit(i))}}if(t.StringLiteral){n.type=`string`;for(let e=0,r=t.StringLiteral.length;e<r;e++){let r=t.StringLiteral[e];n.values.push(r.image.replace(/'|"/g,``))}}if(t.NumberLiteral){n.type=`number`;for(let e=0,r=t.NumberLiteral.length;e<r;e++){let r=t.NumberLiteral[e];n.values.push(parseFloat(r.image))}}if(t.HexLiteral){n.type=`hex`;for(let e=0,r=t.HexLiteral.length;e<r;e++){let r=t.HexLiteral[e];n.values.push(r.image)}}if(t.TrueLiteral){n.type=`boolean`;for(let e=0,r=t.TrueLiteral.length;e<r;e++)t.TrueLiteral[e].image===`TRUE`&&n.values.push(!0)}if(t.FalseLiteral){n.type=`boolean`;for(let e=0,r=t.FalseLiteral.length;e<r;e++)t.FalseLiteral[e].image===`FALSE`&&n.values.push(!1)}return t.NullLiteral&&(n.type=`null`,t.NullLiteral.forEach(function(){n.values.push(null)})),n}return new t}function o(e){let t=e.nodes,n=new c.Scene;for(let e=0,n=t.length;e<n;e++){let n=t[e];s(n)}for(let e=0,r=t.length;e<r;e++){let r=t[e],i=l(r);i instanceof c.Object3D&&n.add(i),r.name===`WorldInfo`&&(n.userData.worldInfo=i)}return n}function s(e){e.DEF&&(n[e.DEF]=e);let t=e.fields;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.type===`node`){let e=n.values;for(let t=0,n=e.length;t<n;t++)s(e[t])}}}function l(e){return e.USE?re(e.USE):(e.build===void 0&&(e.build=u(e)),e.build)}function u(e){let t=e.name,n;switch(t){case`Anchor`:case`Group`:case`Transform`:case`Collision`:n=d(e);break;case`Background`:n=p(e);break;case`Shape`:n=m(e);break;case`Appearance`:n=h(e);break;case`Material`:n=g(e);break;case`ImageTexture`:n=b(e);break;case`PixelTexture`:n=y(e);break;case`TextureTransform`:n=x(e);break;case`IndexedFaceSet`:n=O(e);break;case`IndexedLineSet`:n=k(e);break;case`PointSet`:n=A(e);break;case`Box`:n=j(e);break;case`Cone`:n=M(e);break;case`Cylinder`:n=N(e);break;case`Sphere`:n=ee(e);break;case`ElevationGrid`:n=te(e);break;case`Extrusion`:n=ne(e);break;case`Color`:case`Coordinate`:case`Normal`:case`TextureCoordinate`:n=S(e);break;case`WorldInfo`:n=C(e);break;case`DirectionalLight`:n=w(e);break;case`PointLight`:n=T(e);break;case`SpotLight`:n=E(e);break;case`Fog`:n=D(e);break;case`Billboard`:case`Inline`:case`LOD`:case`Switch`:case`AudioClip`:case`Script`:case`Sound`:case`CylinderSensor`:case`PlaneSensor`:case`ProximitySensor`:case`SphereSensor`:case`TimeSensor`:case`TouchSensor`:case`VisibilitySensor`:case`Text`:case`FontStyle`:case`MovieTexture`:case`ColorInterpolator`:case`CoordinateInterpolator`:case`NormalInterpolator`:case`OrientationInterpolator`:case`PositionInterpolator`:case`ScalarInterpolator`:case`NavigationInfo`:case`Viewpoint`:break;default:console.warn(`THREE.VRMLLoader2: Unknown node:`,t);break}return n!==void 0&&e.DEF!==void 0&&n.hasOwnProperty(`name`)===!0&&(n.name=e.DEF),n}function d(e){let t=new c.Group,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`bboxCenter`:break;case`bboxSize`:break;case`center`:break;case`children`:ie(a,t);break;case`description`:break;case`collide`:break;case`parameter`:break;case`rotation`:let e=new c.Vector3(a[0],a[1],a[2]).normalize(),n=a[3];t.quaternion.setFromAxisAngle(e,n);break;case`scale`:t.scale.set(a[0],a[1],a[2]);break;case`scaleOrientation`:break;case`translation`:t.position.set(a[0],a[1],a[2]);break;case`proxy`:break;case`url`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}let f=this;function p(e){let t=new c.Group,n,r,i,a,o,s,l,u,d,p,m=e.fields;for(let e=0,t=m.length;e<t;e++){let t=m[e],c=t.name,f=t.values;switch(c){case`groundAngle`:n=f;break;case`groundColor`:r=f;break;case`backUrl`:o=f;break;case`bottomUrl`:s=f;break;case`frontUrl`:l=f;break;case`leftUrl`:u=f;break;case`rightUrl`:d=f;break;case`topUrl`:p=f;break;case`skyAngle`:i=f;break;case`skyColor`:a=f;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}if(o&&s&&l&&u&&d&&p)f.backgroundTexture=new c.CubeTextureLoader(f.manager).load([d[0],u[0],p[0],s[0],l[0],o[0]]);else{if(a){let e=[];for(let t=0;t<a.length;t+=3)e.push([a[t],a[t+1],a[t+2]]);a=e}if(r){let e=[];for(let t=0;t<r.length;t+=3)e.push([r[t],r[t+1],r[t+2]]);r=e}this.backgroundTexture=new wt({skyColor:a,skyAngle:i,groundColor:r,groundAngle:n}).buildTexture()}return t}function m(e){let t=e.fields,n=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0}),r;for(let e=0,i=t.length;e<i;e++){let i=t[e],a=i.name,o=i.values;switch(a){case`appearance`:o[0]!==null&&(n=l(o[0]));break;case`geometry`:o[0]!==null&&(r=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i;if(r&&r.attributes.position){let e=r._type;if(e===`points`){let e=new c.PointsMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.Points(r,e)}else if(e===`line`){let e=new c.LineBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.LineSegments(r,e)}else r._solid!==void 0&&(n.side=r._solid?c.FrontSide:c.DoubleSide),r.attributes.color!==void 0&&(n.vertexColors=!0),i=new c.Mesh(r,n)}else i=new c.Object3D,i.visible=!1;return i}function h(e){let t=new c.MeshPhongMaterial,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`material`:if(o[0]!==null){let e=l(o[0]);e.diffuseColor&&t.color.copy(e.diffuseColor),e.emissiveColor&&t.emissive.copy(e.emissiveColor),e.shininess&&(t.shininess=e.shininess),e.specularColor&&t.specular.copy(e.specularColor),e.transparency&&(t.opacity=1-e.transparency),e.transparency>0&&(t.transparent=!0)}else t=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0});break;case`texture`:let e=o[0];e!==null&&(e.name===`ImageTexture`||e.name===`PixelTexture`||e.USE)&&(t.map=l(e));break;case`textureTransform`:o[0]!==null&&(n=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}if(t.map){if(t.map.__type){switch(t.map.__type){case Y.INTENSITY_ALPHA:t.opacity=1;break;case Y.RGB:t.color.set(16777215);break;case Y.RGBA:t.color.set(16777215),t.opacity=1;break;default:}delete t.map.__type}n&&(t.map.center.copy(n.center),t.map.rotation=n.rotation,t.map.repeat.copy(n.scale),t.map.offset.copy(n.translation))}return t.map&&t.map.fookHolder&&t.map.fookHolder.fooks.push(async e=>{let n=await Tt(e.source.data);t.transparent=n,t.needsUpdate=n}),t}function g(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`ambientIntensity`:break;case`diffuseColor`:t.diffuseColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`emissiveColor`:t.emissiveColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`shininess`:t.shininess=a[0];break;case`specularColor`:t.specularColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`transparency`:t.transparency=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function _(e,t,n){let r;switch(t){case Y.INTENSITY:r=parseInt(e),n.r=r,n.g=r,n.b=r,n.a=1;break;case Y.INTENSITY_ALPHA:r=parseInt(`0x`+e.substring(2,4)),n.r=r,n.g=r,n.b=r,n.a=parseInt(`0x`+e.substring(4,6));break;case Y.RGB:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=1;break;case Y.RGBA:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=parseInt(`0x`+e.substring(8,10));break;default:}}function v(e){let t;switch(e){case 1:t=Y.INTENSITY;break;case 2:t=Y.INTENSITY_ALPHA;break;case 3:t=Y.RGB;break;case 4:t=Y.RGBA;break;default:}return t}function y(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`image`:let e=s[0],i=s[1],a=s[2],l=v(a),u=new Uint8Array(4*e*i),d={r:0,g:0,b:0,a:0};for(let e=3,t=0,n=s.length;e<n;e++,t++){_(s[e],l,d);let n=t*4;u[n+0]=d.r,u[n+1]=d.g,u[n+2]=d.b,u[n+3]=d.a}t=new c.DataTexture(u,e,i),t.colorSpace=c.SRGBColorSpace,t.needsUpdate=!0,t.__type=l;break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r),t}function b(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`url`:let e=s[0],i={fooks:[]};e&&(t=he.load(e,e=>{i.fooks&&i.fooks.map(t=>t(e))})),t&&(t.fookHolder=i);break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r,t.colorSpace=c.SRGBColorSpace),t}function x(e){let t={center:new c.Vector2,rotation:0,scale:new c.Vector2(1,1),translation:new c.Vector2},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`center`:t.center.set(a[0],a[1]);break;case`rotation`:t.rotation=a[0];break;case`scale`:t.scale.set(a[0],a[1]);break;case`translation`:t.translation.set(a[0],a[1]);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function S(e){return e.fields[0]?e.fields[0].values:{}}function C(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`title`:t.title=a[0];break;case`info`:t.info=a;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function w(e){let t=0,n=new c.Color(1,1,1),r=new c.Vector3(0,0,-1),i=1,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,l=s.values;switch(c){case`ambientIntensity`:t=l[0];break;case`color`:n.set(l[0],l[1],l[2]);break;case`direction`:r.set(l[0],l[1],l[2]);break;case`intensity`:i=l[0];break;case`on`:a=l[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,c);break}}i=a?i:0;let s=new c.Object3D,l=new c.DirectionalLight(n,i);r.normalize(),r.multiplyScalar(-10),l.position.copy(r),s.add(l);let u=new c.AmbientLight(n,i*t);return s.add(u),s}function T(e){let t=0,n=new c.Vector3(1,0,0),r=new c.Color(1,1,1),i=1,a=new c.Vector3(0,0,0),o=!0,s=100,l=e.fields;for(let e=0,c=l.length;e<c;e++){let c=l[e],u=c.name,d=c.values;switch(u){case`ambientIntensity`:t=d[0];break;case`attenuation`:n.set(d[0],d[1],d[2]);break;case`color`:r.set(d[0],d[1],d[2]);break;case`intensity`:i=d[0];break;case`location`:a.set(d[0],d[1],d[2]);break;case`on`:o=d[0];break;case`radius`:s=d[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,u);break}}i=o?i:0;let u=new c.Object3D,d=new c.PointLight(r,i,s);d.position.copy(a),d.decay=2,u.add(d);let f=new c.AmbientLight(r,i*t);return u.add(f),u}function E(e){let t=0,n=new c.Vector3(1,0,0),r=1.570796,i=new c.Color(1,1,1),a=.785398,o=new c.Vector3(0,0,-1),s=1,l=new c.Vector3(0,0,-1),u=!0,d=100,f=e.fields;for(let e=0,c=f.length;e<c;e++){let c=f[e],p=c.name,m=c.values;switch(p){case`ambientIntensity`:t=m[0];break;case`attenuation`:n.set(m[0],m[1],m[2]);break;case`beamWidth`:r=m[0];break;case`color`:i.set(m[0],m[1],m[2]);break;case`cutOffAngle`:a=m[0];break;case`direction`:o.set(m[0],m[1],m[2]);break;case`intensity`:s=m[0];break;case`location`:l.set(m[0],m[1],m[2]);break;case`on`:u=m[0];break;case`radius`:d=m[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,p);break}}s=u?s:0;let p=new c.Object3D;r=r>a?a:r;let m=1-r/a,h=new c.SpotLight(i,s,d,a,m);o.normalize(),h.position.copy(o),h.decay=0,p.add(h);let g=new c.AmbientLight(i,s*t);return p.add(g),p.position.copy(l),p}function D(e){let t=new c.Color(1,1,1),n=`LINEAR`,r=0,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`color`:t.set(s[0],s[1],s[2]);break;case`fogType`:n=s[0];break;case`visibilityRange`:r=s[0];break;case`set_bind`:break;case`isBound`:break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,o);break}}if(n===`LINEAR`)f.fog=new c.Fog(t,0,r);else if(n===`EXPONENTIAL`){let e=.02;r!==0&&(e=2.146/r),f.fog=new c.FogExp2(t,e)}else console.warn(`ThreeMFLoader.VRMLLoader2: Unknown fogType:`,n);return new c.Object3D}function O(e){let t,n,r,i,a=!0,o=!0,s=0,u,d,f,p,m=!0,h=!0,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`coord`:let c=v[0];c!==null&&(n=l(c));break;case`normal`:let g=v[0];g!==null&&(r=l(g));break;case`texCoord`:let y=v[0];y!==null&&(i=l(y));break;case`ccw`:a=v[0];break;case`colorIndex`:u=v;break;case`colorPerVertex`:m=v[0];break;case`convex`:break;case`coordIndex`:d=v;break;case`creaseAngle`:s=v[0];break;case`normalIndex`:f=v;break;case`normalPerVertex`:h=v[0];break;case`solid`:o=v[0];break;case`texCoordIndex`:p=v;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}if(d===void 0)return console.warn(`THREE.VRMLLoader2: Missing coordIndex.`),new c.BufferGeometry;let _=ae(d,a),v,y,b;t&&(v=m===!0?u&&u.length>0?B(_,ae(u,a),t,3):V(_,new c.Float32BufferAttribute(t,3)):u&&u.length>0?ue(_,oe(P(t,u),d)):ue(_,oe(t,d)),me(v)),y=r?h===!0?f&&f.length>0?B(_,ae(f,a),r,3):V(_,new c.Float32BufferAttribute(r,3)):f&&f.length>0?ue(_,oe(P(r,f),d)):ue(_,oe(r,d)):pe(_,n,s),i&&(b=p&&p.length>0?B(_,ae(p,a),i,2):V(_,new c.Float32BufferAttribute(i,2)));let x=new c.BufferGeometry,S=V(_,new c.Float32BufferAttribute(n,3));return x.setAttribute(`position`,S),x.setAttribute(`normal`,y),v&&x.setAttribute(`color`,v),b&&x.setAttribute(`uv`,b),x._solid=o,x._type=`mesh`,x}function k(e){let t,n,r,i,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,u=s.values;switch(c){case`color`:let e=u[0];e!==null&&(t=l(e));break;case`coord`:let o=u[0];o!==null&&(n=l(o));break;case`colorIndex`:r=u;break;case`colorPerVertex`:a=u[0];break;case`coordIndex`:i=u;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}let s,u=se(i);t&&(s=a===!0?r.length>0?B(u,se(r),t,3):V(u,new c.Float32BufferAttribute(t,3)):r.length>0?de(u,ce(P(t,r),i)):de(u,ce(t,i)),me(s));let d=new c.BufferGeometry,f=V(u,new c.Float32BufferAttribute(n,3));return d.setAttribute(`position`,f),s&&d.setAttribute(`color`,s),d._type=`line`,d}function A(e){let t,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`color`:let e=o[0];e!==null&&(t=l(e));break;case`coord`:let r=o[0];r!==null&&(n=l(r));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i=new c.BufferGeometry;if(i.setAttribute(`position`,new c.Float32BufferAttribute(n,3)),t){let e=new c.Float32BufferAttribute(t,3);me(e),i.setAttribute(`color`,e)}return i._type=`points`,i}function j(e){let t=new c.Vector3(2,2,2),n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`size`:t.x=a[0],t.y=a[1],t.z=a[2];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.BoxGeometry(t.x,t.y,t.z)}function M(e){let t=1,n=2,r=!1,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`bottom`:r=!s[0];break;case`bottomRadius`:t=s[0];break;case`height`:n=s[0];break;case`side`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return new c.ConeGeometry(t,n,16,1,r)}function N(e){let t=1,n=2,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`bottom`:break;case`radius`:t=o[0];break;case`height`:n=o[0];break;case`side`:break;case`top`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}return new c.CylinderGeometry(t,t,n,16,1)}function ee(e){let t=1,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`radius`:t=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.SphereGeometry(t,16,16)}function te(e){let t,n,r,i,a=!0,o=!0,s=!0,u=!0,d=0,f=2,p=2,m=1,h=1,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`normal`:let c=v[0];c!==null&&(n=l(c));break;case`texCoord`:let g=v[0];g!==null&&(r=l(g));break;case`height`:i=v;break;case`ccw`:u=v[0];break;case`colorPerVertex`:a=v[0];break;case`creaseAngle`:d=v[0];break;case`normalPerVertex`:o=v[0];break;case`solid`:s=v[0];break;case`xDimension`:f=v[0];break;case`xSpacing`:m=v[0];break;case`zDimension`:p=v[0];break;case`zSpacing`:h=v[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}let _=[],v=[],y=[],b=[];for(let e=0;e<p;e++)for(let s=0;s<f;s++){let c=e*f+s,l=m*e,u=i[c],d=h*s;if(_.push(l,u,d),t&&a===!0){let e=t[c*3+0],n=t[c*3+1],r=t[c*3+2];y.push(e,n,r)}if(n&&o===!0){let e=n[c*3+0],t=n[c*3+1],r=n[c*3+2];v.push(e,t,r)}if(r){let e=r[c*2+0],t=r[c*2+1];b.push(e,t)}else b.push(e/(f-1),s/(p-1))}let x=[];for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let n=e+t*f,r=e+(t+1)*f,i=e+1+(t+1)*f,a=e+1+t*f;u===!0?(x.push(n,i,r),x.push(i,n,a)):(x.push(n,r,i),x.push(i,a,n))}let S=V(x,new c.Float32BufferAttribute(_,3)),C=V(x,new c.Float32BufferAttribute(b,2)),w,T;if(t){if(a===!1){for(let e=0;e<f-1;e++)for(let n=0;n<p-1;n++){let r=e+n*(f-1),i=t[r*3+0],a=t[r*3+1],o=t[r*3+2];y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o)}w=new c.Float32BufferAttribute(y,3)}else w=V(x,new c.Float32BufferAttribute(y,3));me(w)}if(n)if(o===!1){for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let r=e+t*(f-1),i=n[r*3+0],a=n[r*3+1],o=n[r*3+2];v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o)}T=new c.Float32BufferAttribute(v,3)}else T=V(x,new c.Float32BufferAttribute(v,3));else T=pe(x,_,d);let E=new c.BufferGeometry;return E.setAttribute(`position`,S),E.setAttribute(`normal`,T),E.setAttribute(`uv`,C),w&&E.setAttribute(`color`,w),E._solid=s,E._type=`mesh`,E}function ne(e){let t=[1,1,1,-1,-1,-1,-1,1,1,1],n=[0,0,0,0,1,0],r,i,a=!0,o=!0,s=0,l=!0,u=!0,d=e.fields;for(let e=0,c=d.length;e<c;e++){let c=d[e],f=c.name,p=c.values;switch(f){case`beginCap`:a=p[0];break;case`ccw`:o=p[0];break;case`convex`:break;case`creaseAngle`:s=p[0];break;case`crossSection`:t=p;break;case`endCap`:l=p[0];break;case`orientation`:i=p;break;case`scale`:r=p;break;case`solid`:u=p[0];break;case`spine`:n=p;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,f);break}}let f=t[0]===t[t.length-2]&&t[1]===t[t.length-1],p=[],m=new c.Vector3,h=new c.Vector3,g=new c.Vector3,_=new c.Vector3,v=new c.Quaternion;for(let e=0,a=0,o=0,s=n.length;e<s;e+=3,a+=2,o+=4){m.fromArray(n,e),h.x=r?r[a+0]:1,h.y=1,h.z=r?r[a+1]:1,g.x=i?i[o+0]:0,g.y=i?i[o+1]:0,g.z=i?i[o+2]:1;let s=i?i[o+3]:0;for(let e=0,n=t.length;e<n;e+=2)_.x=t[e+0],_.y=0,_.z=t[e+1],_.multiply(h),v.setFromAxisAngle(g,s),_.applyQuaternion(v),_.add(m),p.push(_.x,_.y,_.z)}let y=[],b=n.length/3,x=t.length/2;for(let e=0;e<b-1;e++)for(let t=0;t<x-1;t++){let n=t+e*x,r=t+1+e*x,i=t+(e+1)*x,a=t+1+(e+1)*x;t===x-2&&f===!0&&(r=e*x,a=(e+1)*x),o===!0?(y.push(n,r,i),y.push(i,r,a)):(y.push(n,i,r),y.push(i,a,r))}if(a===!0||l===!0){let e=[];for(let n=0,r=t.length;n<r;n+=2)e.push(new c.Vector2(t[n],t[n+1]));let n=c.ShapeUtils.triangulateShape(e,[]),r=[];for(let e=0,t=n.length;e<t;e++){let t=n[e];r.push(t[0],t[1],t[2])}if(a===!0)for(let e=0,t=r.length;e<t;e+=3)o===!0?y.push(r[e+0],r[e+1],r[e+2]):y.push(r[e+0],r[e+2],r[e+1]);if(l===!0){let e=x*(b-1);for(let t=0,n=r.length;t<n;t+=3)o===!0?y.push(e+r[t+0],e+r[t+2],e+r[t+1]):y.push(e+r[t+0],e+r[t+1],e+r[t+2])}}let S=V(y,new c.Float32BufferAttribute(p,3)),C=pe(y,p,s),w=new c.BufferGeometry;return w.setAttribute(`position`,S),w.setAttribute(`normal`,C),w._solid=u,w._type=`mesh`,w}function re(e){let t=n[e],r=l(t);return r.isObject3D||r.isMaterial?r.clone():r}function ie(e,t){for(let n=0,r=e.length;n<r;n++){let r=l(e[n]);r instanceof c.Object3D&&t.add(r)}}function ae(e,t){let n=[],r=0;for(let i=0,a=e.length;i<a;i++){let o=e[r],s=e[i+(t?1:2)],c=e[i+(t?2:1)];n.push(o,s,c),(e[i+3]===-1||i+3>=a)&&(i+=3,r=i+1)}return n}function oe(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+3]===-1||i+3>=a)&&(i+=3,r++)}return n}function P(e,t){let n=[];for(let r=0,i=t.length;r<i;r++){let i=t[r]*3,a=e[i],o=e[i+1],s=e[i+2];n.push(a,o,s)}return n}function se(e){let t=[];for(let n=0,r=e.length;n<r;n++){let i=e[n],a=e[n+1];t.push(i,a),(e[n+2]===-1||n+2>=r)&&(n+=2)}return t}function ce(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+2]===-1||i+2>=a)&&(i+=2,r++)}return n}let F=new c.Vector3,I=new c.Vector3,L=new c.Vector3,R=new c.Vector2,le=new c.Vector2,z=new c.Vector2;function B(e,t,n,r){let i=[];for(let a=0,o=e.length;a<o;a+=3){let e=t[a],o=t[a+1],s=t[a+2];r===2?(R.fromArray(n,e*r),le.fromArray(n,o*r),z.fromArray(n,s*r),i.push(R.x,R.y),i.push(le.x,le.y),i.push(z.x,z.y)):(F.fromArray(n,e*r),I.fromArray(n,o*r),L.fromArray(n,s*r),i.push(F.x,F.y,F.z),i.push(I.x,I.y,I.z),i.push(L.x,L.y,L.z))}return new c.Float32BufferAttribute(i,r)}function ue(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=3,i++)F.fromArray(t,i*3),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z);return new c.Float32BufferAttribute(n,3)}function de(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=2,i++)F.fromArray(t,i*3),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z);return new c.Float32BufferAttribute(n,3)}function V(e,t){let n=t.array,r=t.itemSize,i=new n.constructor(e.length*r),a=0,o=0;for(let t=0,s=e.length;t<s;t++){a=e[t]*r;for(let e=0;e<r;e++)i[o++]=n[a++]}return new c.Float32BufferAttribute(i,r)}let fe=new c.Vector3,H=new c.Vector3;function pe(e,t,n){let r=[],i={};for(let n=0,a=e.length;n<a;n+=3){let a=e[n],o=e[n+1],s=e[n+2],c=new Ct(a,o,s);F.fromArray(t,a*3),I.fromArray(t,o*3),L.fromArray(t,s*3),H.subVectors(L,I),fe.subVectors(F,I),H.cross(fe),H.normalize(),c.normal.copy(H),i[a]===void 0&&(i[a]=[]),i[o]===void 0&&(i[o]=[]),i[s]===void 0&&(i[s]=[]),i[a].push(c.normal),i[o].push(c.normal),i[s].push(c.normal),r.push(c)}let a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e],s=U(i[o.a],o.normal,n),c=U(i[o.b],o.normal,n),l=U(i[o.c],o.normal,n);F.fromArray(t,o.a*3),I.fromArray(t,o.b*3),L.fromArray(t,o.c*3),a.push(s.x,s.y,s.z),a.push(c.x,c.y,c.z),a.push(l.x,l.y,l.z)}return new c.Float32BufferAttribute(a,3)}function U(e,t,n){let r=new c.Vector3;if(n===0)r.copy(t);else for(let i=0,a=e.length;i<a;i++)e[i].angleTo(t)<n&&r.add(e[i]);return r.normalize()}function me(e){let t=new c.Color;for(let n=0;n<e.count;n++)t.fromBufferAttribute(e,n),c.ColorManagement.colorSpaceToWorking(t,c.SRGBColorSpace),e.setXYZ(n,t.r,t.g,t.b)}let he=new c.TextureLoader(this.manager);if(he.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),e.indexOf(`#VRML V2.0`)===-1)throw Error(`THREE.VRMLLexer: Version of VRML asset not supported.`);return o(r(e))}},bt=class{constructor(e){this.lexer=new vt.Lexer(e)}lex(e){let t=this.lexer.tokenize(e);if(t.errors.length>0)throw console.error(t.errors),Error(`THREE.VRMLLexer: Lexing errors detected.`);return t}},xt=vt.CstParser,St=class extends xt{constructor(e){super(e);let t=this,n=e.Version,r=e.LCurly,i=e.RCurly,a=e.LSquare,o=e.RSquare,s=e.Identifier,c=e.RouteIdentifier,l=e.StringLiteral,u=e.HexLiteral,d=e.NumberLiteral,f=e.TrueLiteral,p=e.FalseLiteral,m=e.NullLiteral,h=e.DEF,g=e.USE,_=e.ROUTE,v=e.TO,y=e.NodeName;t.RULE(`vrml`,function(){t.SUBRULE(t.version),t.AT_LEAST_ONE(function(){t.SUBRULE(t.node)}),t.MANY(function(){t.SUBRULE(t.route)})}),t.RULE(`version`,function(){t.CONSUME(n)}),t.RULE(`node`,function(){t.OPTION(function(){t.SUBRULE(t.def)}),t.CONSUME(y),t.CONSUME(r),t.MANY(function(){t.SUBRULE(t.field)}),t.CONSUME(i)}),t.RULE(`field`,function(){t.CONSUME(s),t.OR2([{ALT:function(){t.SUBRULE(t.singleFieldValue)}},{ALT:function(){t.SUBRULE(t.multiFieldValue)}}])}),t.RULE(`def`,function(){t.CONSUME(h),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),t.RULE(`use`,function(){t.CONSUME(g),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),t.RULE(`singleFieldValue`,function(){t.AT_LEAST_ONE(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(f)}},{ALT:function(){t.CONSUME(p)}},{ALT:function(){t.CONSUME(m)}}])})}),t.RULE(`multiFieldValue`,function(){t.CONSUME(a),t.MANY(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(m)}}])}),t.CONSUME(o)}),t.RULE(`route`,function(){t.CONSUME(_),t.CONSUME(c),t.CONSUME(v),t.CONSUME2(c)}),this.performSelfAnalysis()}},Ct=class{constructor(e,t,n){this.a=e,this.b=t,this.c=n,this.normal=new c.Vector3}},Y={INTENSITY:1,INTENSITY_ALPHA:2,RGB:3,RGBA:4},wt=class{constructor({skyColor:e=[[0,0,0]],skyAngle:t=[],groundColor:n=[],groundAngle:r=[],size:i=128}={}){this._skyColor=e,this._skyAngle=t,this._groundColor=n,this._groundAngle=r,this._size=i,this._texture=null}applyToScene(e){e.background=this._buildCubeTexture()}buildTexture(){return this._texture||=this._buildCubeTexture(),this._texture}dispose(){this._texture&&=(this._texture.dispose(),null)}_colorAtPitch(e){let t=Math.PI/2;if(e<=t){if(this._skyAngle.length===0)return this._skyColor[0];if(e<=this._skyAngle[0])return this._lerpColor(this._skyColor[0],this._skyColor[1],e/this._skyAngle[0]);let t=this._skyAngle.length-1;if(e>=this._skyAngle[t])return this._skyColor[t+1]??this._skyColor[this._skyColor.length-1];for(let n=0;n<t;n++)if(e<=this._skyAngle[n+1]){let t=(e-this._skyAngle[n])/(this._skyAngle[n+1]-this._skyAngle[n]);return this._lerpColor(this._skyColor[n+1]??this._skyColor[this._skyColor.length-1],this._skyColor[n+2]??this._skyColor[this._skyColor.length-1],t)}return this._skyColor[this._skyColor.length-1]}else{if(this._groundColor.length===0)return this._skyColor[this._skyColor.length-1];let n=e-t;if(this._groundAngle.length===0)return this._groundColor[0];if(n<=this._groundAngle[0])return this._lerpColor(this._groundColor[0],this._groundColor[1],n/this._groundAngle[0]);let r=this._groundAngle.length-1;if(n>=this._groundAngle[r])return this._groundColor[r+1]??this._groundColor[this._groundColor.length-1];for(let e=0;e<r;e++)if(n<=this._groundAngle[e+1]){let t=(n-this._groundAngle[e])/(this._groundAngle[e+1]-this._groundAngle[e]);return this._lerpColor(this._groundColor[e+1]??this._groundColor[this._groundColor.length-1],this._groundColor[e+2]??this._groundColor[this._groundColor.length-1],t)}return this._groundColor[this._groundColor.length-1]}}_lerpColor(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n]}_buildSideCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=1-2*((t+.5)/e);for(let r=0;r<e;r++){let a=2*((r+.5)/e)-1,o=Math.sqrt(a*a+n*n+1),s=Math.acos(Math.max(-1,Math.min(1,n/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildTopCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildBottomCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,-1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildCubeTexture(){let e=this._buildSideCanvas(),t=new c.CubeTexture([e,e,this._buildTopCanvas(),this._buildBottomCanvas(),e,e]);return t.needsUpdate=!0,t.minFilter=c.LinearMipmapLinearFilter,t.magFilter=c.LinearFilter,t}};async function Tt(e){await new Promise((t,n)=>{if(e.complete)return t();e.onload=t,e.onerror=n});let t=document.createElement(`canvas`),n=t.getContext(`2d`);t.width=e.naturalWidth,t.height=e.naturalHeight,n.drawImage(e,0,0);let r=n.getImageData(0,0,t.width,t.height).data;for(let e=3;e<r.length;e+=4)if(r[e]<255)return!0;return!1}var Et=class extends c.Loader{constructor(e){super(e),this.animateBonePositions=!0,this.animateBoneRotations=!0,this.animateBoneScales=!0}load(e,t,n,r){let i=this,a=new c.FileLoader(i.manager);a.setPath(i.path),a.setRequestHeader(i.requestHeader),a.setWithCredentials(i.withCredentials),a.load(e,function(n){try{t(i.parse(n))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e){function t(e){o(e)!==`HIERARCHY`&&console.error(`THREE.BVHLoader2: HIERARCHY expected.`);let t=[],i=r(e,o(e),t);o(e)!==`MOTION`&&console.error(`THREE.BVHLoader2: MOTION expected.`);let a=o(e).split(/[\s]+/),s=parseInt(a[1]);isNaN(s)&&console.error(`THREE.BVHLoader2: Failed to read number of frames.`),a=o(e).split(/[\s]+/);let c=parseFloat(a[2]);isNaN(c)&&console.error(`THREE.BVHLoader2: Failed to read frame time.`);for(let t=0;t<s;t++)a=o(e).split(/[\s]+/),n(a,t*c,i);return t}function n(e,t,r){if(r.type===`ENDSITE`)return;let i={time:t,position:new c.Vector3,rotation:new c.Quaternion,scale:new c.Vector3(1,1,1)};r.frames.push(i);let a=new c.Quaternion,o=new c.Vector3(1,0,0),s=new c.Vector3(0,1,0),l=new c.Vector3(0,0,1);for(let t=0;t<r.channels.length;t++)switch(r.channels[t]){case`Xposition`:i.position.x=parseFloat(e.shift().trim());break;case`Yposition`:i.position.y=parseFloat(e.shift().trim());break;case`Zposition`:i.position.z=parseFloat(e.shift().trim());break;case`Xrotation`:a.setFromAxisAngle(o,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Yrotation`:a.setFromAxisAngle(s,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Zrotation`:a.setFromAxisAngle(l,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Xscale`:i.scale.x=parseFloat(e.shift().trim());break;case`Yscale`:i.scale.y=parseFloat(e.shift().trim());break;case`Zscale`:i.scale.z=parseFloat(e.shift().trim());break;default:console.warn(`THREE.BVHLoader2: Invalid channel type.`)}for(let i=0;i<r.children.length;i++)n(e,t,r.children[i])}function r(e,t,n){let i={name:``,type:``,frames:[]};n.push(i);let a=t.split(/[\s]+/);a[0].toUpperCase()===`END`&&a[1].toUpperCase()===`SITE`?(i.type=`ENDSITE`,i.name=`ENDSITE`):(i.name=a[1],i.type=a[0].toUpperCase()),o(e)!==`{`&&console.error(`THREE.BVHLoader2: Expected opening { after type & name`),a=o(e).split(/[\s]+/),a[0]!==`OFFSET`&&console.error(`THREE.BVHLoader2: Expected OFFSET but got: `+a[0]),a.length!==4&&console.error(`THREE.BVHLoader2: Invalid number of values for OFFSET.`);let s=new c.Vector3(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3]));if((isNaN(s.x)||isNaN(s.y)||isNaN(s.z))&&console.error(`THREE.BVHLoader2: Invalid values of OFFSET.`),i.offset=s,i.type!==`ENDSITE`){a=o(e).split(/[\s]+/),a[0]!==`CHANNELS`&&console.error(`THREE.BVHLoader2: Expected CHANNELS definition.`);let t=parseInt(a[1]);i.channels=a.splice(2,t),i.children=[]}for(;;){let t=o(e);if(t===`}`)return i;i.children.push(r(e,t,n))}}function i(e,t){let n=new c.Bone;if(t.push(n),n.position.add(e.offset),n.name=e.name,e.type!==`ENDSITE`)for(let r=0;r<e.children.length;r++)n.add(i(e.children[r],t));return n}function a(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type===`ENDSITE`)continue;let i=[],a=[],o=[],l=[];for(let e=0;e<r.frames.length;e++){let t=r.frames[e];i.push(t.time),a.push(t.position.x+r.offset.x),a.push(t.position.y+r.offset.y),a.push(t.position.z+r.offset.z),o.push(t.rotation.x),o.push(t.rotation.y),o.push(t.rotation.z),o.push(t.rotation.w),l.push(t.scale.x),l.push(t.scale.y),l.push(t.scale.z)}s.animateBonePositions&&t.push(new c.VectorKeyframeTrack(r.name+`.position`,i,a)),s.animateBoneRotations&&t.push(new c.QuaternionKeyframeTrack(r.name+`.quaternion`,i,o)),s.animateBoneScales&&t.push(new c.VectorKeyframeTrack(r.name+`.scale`,i,l))}return new c.AnimationClip(`animation`,-1,t)}function o(e){let t;for(;(t=e.shift().trim()).length===0;);return t}let s=this,l=t(e.split(/[\r\n]+/g)),u=[];i(l[0],u);let d=a(l);return{skeleton:new c.Skeleton(u),clip:d}}};async function Dt(e,t){let n=new c.LoadingManager;n.setURLModifier(t=>(t.startsWith(`./`)&&(t=t.substring(2)),URL.createObjectURL(_e(e,t))));let r=new yt(n);return{object3D:await r.loadAsync(t),bgTexture:r.backgroundTexture,fog:r.fog}}var Ot;async function kt(e,t){Ot||=new Et;let n=ge(e,t);return await Ot.parse(n)}function At(e){let t=e.clip.clone(),n=e.skeleton.bones[0].clone(!0),r=[];n.traverse(e=>{e instanceof c.Bone&&r.push(e)});let i=new c.Skeleton(r);return i.calculateInverses(),{clip:t,skeleton:i}}var jt=class{name;time;finishListener;duration;isPaused;playCount;interpolants;constructor(e,t){this.name=t||e.name,this.time=0,this.duration=e.duration,this.isPaused=!1,this.playCount=0,this.interpolants={};for(let t of e.tracks){let e=t.getValueSize(),n;n=t.getInterpolation()===c.InterpolateDiscrete?new c.DiscreteInterpolant(t.times,t.values,e):t.ValueTypeName===`quaternion`?new c.QuaternionLinearInterpolant(t.times,t.values,e):new c.LinearInterpolant(t.times,t.values,e),this.interpolants[t.name]=n}}init(e){}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){this.isPaused=e}setTime(e){this.time=e}setFinishListener(e){this.finishListener=e}update(e){this.time+=e,this.time>this.duration&&(this.time-=this.duration,this.playCount++,this.finishListener&&this.finishListener());let t={};for(let[e,n]of Object.entries(this.interpolants)){let r=e.substring(0,e.lastIndexOf(`.`)),i=e.substring(e.lastIndexOf(`.`)+1,e.length),a=t[r];a||(a={},t[r]=a);let o=n.evaluate(this.time);if(i===`position`)a.loc=new u(o[0],o[1],o[2]);else if(i===`quaternion`)a.quat=new d(o[0],o[1],o[2],o[3]);else if(i===`scale`)a.scale=new u(o[0],o[1],o[2]);else if(i===`morphTargetInfluences`){a.morphs||=[];let e=Array.from(o);a.morphs.push({name:r,vals:e})}else console.warn(`ClipMotion: update. unknown property(${i})`)}return t}},Mt={type:`audio`,autoplay:!1,loop:!1,volume:1,positional:{refDistance:1,maxDistance:1e3,rolloffFactor:1,directional:{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}}};async function Nt(){try{Pt.listener.context.state!==`running`&&await Pt.listener.context.resume()}catch{console.warn(`AudioContext resume failed. Did you call on user gesture?`)}}var Pt=class e extends W{static listener=new c.AudioListener;static audioLoader=new c.AudioLoader;ready;options;sound;constructor(e,t={}){super(),this.options=be(Mt,t),this.ready=this.asyncInit(e)}initObject(){return new c.Object3D}async asyncInit(t){if(this.options.type===`positional`){let t=new c.PositionalAudio(e.listener);t.setRefDistance(this.options.positional.refDistance),t.setMaxDistance(this.options.positional.maxDistance),t.setRolloffFactor(this.options.positional.rolloffFactor);let n=this.options.positional.directional;t.setDirectionalCone(n.coneInnerAngle,n.coneOuterAngle,n.coneOuterGain),t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}else{let t=new c.Audio(e.listener);t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}return this.object3D.add(this.sound),new Promise(n=>{e.audioLoader.load(t,e=>{this.sound&&this.sound.setBuffer(e),n(this)})})}play(){this.sound?.stop(),this.sound?.play()}stop(){this.sound?.stop()}},Ft=class{isDummy=!0;skeleton=new c.Skeleton([new c.Bone]);clip=new c.AnimationClip(`dummy`)},It={},Lt={},Rt=class extends je{loop;sound;soundLoop;soundContinue;backgroundTexture;fog;constructor(e,t,n,r,i=!1,a=!0,o,s){super(e,t),this.loop=n,this.sound=r,this.soundLoop=i,this.soundContinue=a,this.backgroundTexture=o,this.fog=s}enable(e,t){super.enable(e,t),this.sound&&(this.sound.play(),this.loop&&!this.soundContinue&&this.motion.setFinishListener(()=>{this.sound?.play()}),this.loop&&!this.soundLoop&&this.motion.setFinishListener(()=>{this.sound?.play()})),t&&(this.backgroundTexture&&(t.scene.background=this.backgroundTexture,t.scene.environment=this.backgroundTexture),this.fog&&(t.scene.fog=this.fog))}disable(e,t){super.disable(e,t),this.sound&&(this.loop&&this.sound.stop(),this.soundContinue||this.sound.stop(),this.motion.setFinishListener=()=>{})}},zt=class extends Me{comment=null;tags=[];profiles=[];thumbnails=[];rdf=null;htmlfile=``;constructor(e){super(e)}async asyncInit(e){let t=await he(e),n=new DOMParser,r=ge(t,`CATALOG.XML`),i=n.parseFromString(r,`application/xml`);if(i.querySelector(`parsererror`))return console.error(`Acerola3D.asyncInit(): CATALOG.XML parse error.`),this;let a=`http://acerola3d.sourceforge.jp/a3/catalog`,o=i.getElementsByTagNameNS(a,`a3`),s=i.getElementsByTagNameNS(a,`c`);s[0]&&(this.comment=s[0].textContent);let l=i.getElementsByTagNameNS(a,`tag`);Array.from(l).forEach(e=>{let t=e.getAttribute(`name`);t&&this.tags.push(t)});let d=i.getElementsByTagNameNS(a,`profile`);Array.from(d).forEach(e=>{let t=e.getAttribute(`uri`);t&&this.profiles.push(t)});let f=i.getElementsByTagNameNS(a,`thumbnail`);Array.from(f).forEach(e=>{let n=e.getAttribute(`src`);if(n){let e=_e(t,n);this.thumbnails.push(e)}});let p=i.getElementsByTagNameNS(`http://www.w3.org/1999/02/22-rdf-syntax-ns#`,`RDF`);p[0]&&(this.rdf=p[0]);let m=i.getElementsByTagNameNS(a,`htmlfile`);if(m[0]){let e=m[0].getAttribute(`src`);e&&(this.htmlfile=ge(t,e))}let h=[],g=i.getElementsByTagNameNS(a,`a`),_={},v;for(let e of Array.from(g)){let n=e.getAttribute(`an`);if(n){h.push(n),v||=n;let r,i=e.getAttribute(`bvh`);if(i&&i!==`none`){let e=t.zipUrl+`!`+i;It[e]||(It[e]=await kt(t,i)),r=At(It[e]),r&&r.clip.tracks.forEach(e=>{e.setInterpolation(c.InterpolateDiscrete)})}else r=new Ft;let o={};r.skeleton.bones.forEach(e=>{o[e.name]=e});let s=e.getAttribute(`scale`),l=s?Number(s):1,d=e.getAttribute(`offset`),f=new u;if(d){let e=d.split(` `);f.set(Number(e[0]),Number(e[1]),Number(e[2]))}let p=e.getAttribute(`rot`),m=new u;if(p){let e=p.split(` `);m.set(Number(e[0]),Number(e[1]),Number(e[2]))}let g=e.getAttribute(`loop`)===`true`,y,b,x={},S=e.getElementsByTagNameNS(a,`p`);for(let e of Array.from(S)){let n=e.getAttribute(`name`),r=e.getAttribute(`wrl`);if(n&&r){let i=t.zipUrl+`!`+r;if(!Lt[i]){let e=await Dt(t,r);Lt[i]=e.object3D,e.bgTexture&&(y=e.bgTexture),e.fog&&(b=e.fog)}let a=e.getAttribute(`scale`);if(a){let e=Number(a);Lt[i].scale.set(e,e,e)}let o=e.getAttribute(`rot`);if(o){let e=o.split(` `);Lt[i].rotation.set(Number(e[0])/180*Math.PI,Number(e[1])/180*Math.PI,Number(e[2])/180*Math.PI,`ZXY`)}let s=e.getAttribute(`offset`);if(s){let e=s.split(` `);Lt[i].position.set(Number(e[0]),Number(e[1]),Number(e[2]))}x[n]=Lt[i].clone(!0)}}let C=new c.Object3D;C.add(r.skeleton.bones[0]),r instanceof Ft||Bt(C,x),Object.values(x).forEach(e=>{C.add(e)}),C.scale.set(l,l,l),m.scale(Math.PI/180),C.setRotationFromEuler(new c.Euler(m.x,m.y,m.z,`ZXY`)),C.position.add(f),C.traverse(e=>{e.userData.a3js={objectA3:this}});let w,T=!1,E=!0,D=e.getElementsByTagNameNS(a,`s`);if(D[0]){let e=D[0].getAttribute(`file`),n=D[0].getAttribute(`type`)||`PointSound`,r=D[0].getAttribute(`loop`)||`false`;T=r===`true`;let i=D[0].getAttribute(`gain`)||`1.0`,a=D[0].getAttribute(`offset`)||`0.0 0.0 0.0`,o=D[0].getAttribute(`direction`)||`0.0 0.0 1.0`;E=(D[0].getAttribute(`continue`)||`true`)===`true`;let s=a.split(` `).map(e=>Number(e)),c=new u(s[0],s[1],s[2]),l=o.split(` `).map(e=>Number(e)),d=new u(l[0],l[1],l[2]),f=n===`PointSound`||n===`ConeSound`?`positional`:`audio`,p=n===`PointSound`?{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}:{coneInnerAngle:30,coneOuterAngle:90,coneOuterGain:.1};if(e){let n=_e(t,e),a=URL.createObjectURL(n);w=await new Pt(a,{type:f,autoplay:!1,loop:r===`true`,volume:Number(i),positional:{directional:p}}).ready,w.setPosition(c),w.lookAt(d),URL.revokeObjectURL(a),C.add(w.object3D)}}_[n]=new Rt({root:C,bones:o,skeleton:r.skeleton},new jt(r.clip,n),g,w,T,E,y,b)}}return o[0]&&(o[0].getAttribute(`haltActionNo`)!==null&&(this.haltActionName=h[Number(o[0].getAttribute(`haltActionNo`))]),o[0].getAttribute(`walkActionNo`)!==null&&(this.walkActionName=h[Number(o[0].getAttribute(`walkActionNo`))]),o[0].getAttribute(`runActionNo`)!==null&&(this.runActionName=h[Number(o[0].getAttribute(`runActionNo`))]),o[0].getAttribute(`minWalkSpeed`)!==null&&(this.minWalkSpeed=Number(o[0].getAttribute(`minWalkSpeed`))),o[0].getAttribute(`minRunSpeed`)!==null&&(this.minRunSpeed=Number(o[0].getAttribute(`minRunSpeed`)))),v&&this.syncInit(v,_),this}};function Bt(e,t){if(ce(e)){let n=t[e.name];n&&(e.add(n),delete t[e.name])}e.children&&e.children.forEach(e=>{Bt(e,t)})}var Vt=class{scene;objects;physicsWorld=null;physicsDt=1/60;collisionListener;rapierLines;constructor(){this.scene=new c.Scene,this.objects=[],H.isInitialized&&(this.physicsWorld=H.createWorld({gravity:{x:0,y:-9.81,z:0},timestep:this.physicsDt}))}add(e){if(this.scene.add(e.object3D),this.objects.push(e),e.scene=this,this.physicsWorld&&(e.addOneselfToPhysics(this.physicsWorld),e instanceof Me))for(let t of Object.values(e.actions))t.motion.addOneselfToPhysics(this.physicsWorld);e instanceof zt&&e.currentAction instanceof Rt&&(e.currentAction.backgroundTexture&&(this.scene.background=e.currentAction.backgroundTexture,this.scene.environment=e.currentAction.backgroundTexture),e.currentAction.fog&&(this.scene.fog=e.currentAction.fog))}remove(e){this.scene.remove(e.object3D);{let t=this.objects.indexOf(e);this.objects[t]=this.objects[this.objects.length-1],this.objects.pop()}if(e.scene=void 0,this.physicsWorld&&(e.removeOneselfFromPhysics(this.physicsWorld),e instanceof Me))for(let t of Object.values(e.actions))t.motion.removeOneselfFromPhysics(this.physicsWorld);e instanceof Me&&e.currentAction instanceof Rt&&(e.currentAction.backgroundTexture&&(this.scene.background=null,this.scene.environment=null),e.currentAction.fog&&(this.scene.fog=null))}removeAll(){[...this.objects].forEach(e=>{this.remove(e)})}setCollisionListener(e){this.collisionListener=e}update(e){if(this.physicsWorld){this.physicsWorld.update(e);let t=this.physicsWorld.getCollisions();if(t.forEach(e=>{e.objectA.handleCollision(e.objectB,e.started,e.partOfA,e.partOfB),e.objectB.handleCollision(e.objectA,e.started,e.partOfB,e.partOfA)}),this.collisionListener&&t.length>0&&this.collisionListener(t),this.rapierLines&&this.physicsWorld instanceof z){let{vertices:e,colors:t}=this.physicsWorld.world.debugRender();this.rapierLines.geometry.setAttribute(`position`,new c.BufferAttribute(e,3)),this.rapierLines.geometry.setAttribute(`color`,new c.BufferAttribute(t,4))}}for(let t of this.objects)t.update(e)}setPhysicsDebugMode(e){e?(this.rapierLines=new c.LineSegments(new c.BufferGeometry,new c.LineBasicMaterial({vertexColors:!0})),this.scene.add(this.rapierLines)):this.rapierLines&&=(this.scene.remove(this.rapierLines),void 0)}},Ht=class extends W{view;setView(e){this.view=e}lookAt(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuat(a)}lookAtNow(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuatNow(a)}},Ut=class{view;setView(e){this.view=e}update(e){}activate(){}deactivate(){}keyDown(e){}keyUp(e){}keyPress(e){}mouseDown(e){}mouseUp(e){}mouseMove(e){}mouseClick(e){}mouseEnter(e){}mouseLeave(e){}mouseWheel(e){}touchStart(e){}touchEnd(e){}touchMove(e){}touchCancel(e){}},Wt=class extends Ut{lastMousePosition;dx=0;dy=0;isLeftDown=!1;isRightDown=!1;ctrlKey=!1;deltaY=0;target;constructor(e,t,n){super(),this.lastMousePosition={x:0,y:0},typeof e==`number`?this.target=new u(e,t,n):this.target=new u(e)}update(e){if(!this.view)return;let t=this.view.camera.getPosition(),n=this.view.camera.getQuat();if(this.isLeftDown&&!this.ctrlKey){let e=.01,r=Math.sin(-this.dx*e),i=Math.cos(-this.dx*e),a=Math.sin(-this.dy*e),o=Math.cos(-this.dy*e),s=new u(1,0,0).apply(n),c=new u(0,1,0).apply(n),l=new d(s.x*a,s.y*a,s.z*a,o),f=new d(c.x*r,c.y*r,c.z*r,i),m=new u(t);m.sub(this.target),m.apply(l),m.apply(f),m.add(this.target),t.set(m);let h=p(t,this.target,new u(0,1,0));h.mul(new d(0,1,0,0)),n.set(h)}else if(this.isLeftDown){U.v0.set(this.target),U.v0.sub(t);let e=.005*U.v0.length(),r=new u(1,0,0).apply(n).scale(-this.dx*e),i=new u(0,1,0).apply(n).scale(this.dy*e);t.add(r),t.add(i),this.target.add(r),this.target.add(i)}if(this.deltaY!==0){let e=new u(this.target).sub(t);this.deltaY>0?e.scale(.05):this.deltaY<0&&e.scale(-.05),t.add(e)}this.view.camera.setPosition(t),this.view.camera.setQuat(n),this.dx=0,this.dy=0,this.deltaY=0}mouseDown(e){e.button===0?(this.isLeftDown=!0,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY):e.button===2&&(this.isRightDown=!0,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY)}mouseMove(e){this.dx+=e.clientX-this.lastMousePosition.x,this.dy+=e.clientY-this.lastMousePosition.y,this.ctrlKey=e.ctrlKey,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY}mouseUp(e){e.button===0?this.isLeftDown=!1:e.button===2&&(this.isRightDown=!1)}mouseWheel(e){this.deltaY=e.deltaY}},Gt={speed:.1,angSpeed:.01},Kt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextLoc;_avatarNextQuat;_velY;constructor(e,t){super(),this.options={...Gt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextLoc=new u,this._avatarNextQuat=new d,this._velY=0}keyDown(e){e.code===`KeyW`?this._keyW=!0:e.code===`KeyA`?this._keyA=!0:e.code===`KeyS`?this._keyS=!0:e.code===`KeyD`?this._keyD=!0:e.code===`ArrowLeft`?this._keyLeft=!0:e.code===`ArrowRight`?this._keyRight=!0:e.code===`Space`&&(this._keySpace=!0)}keyUp(e){e.code===`KeyW`?this._keyW=!1:e.code===`KeyA`?this._keyA=!1:e.code===`KeyS`?this._keyS=!1:e.code===`KeyD`?this._keyD=!1:e.code===`ArrowLeft`?this._keyLeft=!1:e.code===`ArrowRight`?this._keyRight=!1:e.code===`Space`&&(this._keySpace=!1)}update(e){let t=this._avatar,n=new v;n.set(t);let r=t.getUnitVecZ().scale(this.options.speed),i=t.getUnitVecX().scale(this.options.speed);this._avatarNextLoc.set(n.loc),this._avatarNextQuat.set(n.quat),this._keyW&&this._avatarNextLoc.add(r),this._keyA&&this._avatarNextLoc.add(i),this._keyS&&this._avatarNextLoc.sub(r),this._keyD&&this._avatarNextLoc.sub(i),this._velY+=-9.8*e*.1,t.isGrounded()&&(this._velY=0,this._keySpace&&(this._velY=.5)),this._avatarNextLoc.add(0,this._velY,0),this._keyLeft&&(U.v0.set(0,this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),this._keyRight&&(U.v0.set(0,-this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),t.setPosition(this._avatarNextLoc),t.setQuat(this._avatarNextQuat)}},qt={speed:5,angSpeed:.3,jumpSpeed:15},Jt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextVel;_avatarNextAngVel;_velY;constructor(e,t){super(),this.options={...qt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextVel=new u,this._avatarNextAngVel=new u,this._velY=0}keyDown(e){e.code===`KeyW`?this._keyW=!0:e.code===`KeyA`?this._keyA=!0:e.code===`KeyS`?this._keyS=!0:e.code===`KeyD`?this._keyD=!0:e.code===`ArrowLeft`?this._keyLeft=!0:e.code===`ArrowRight`?this._keyRight=!0:e.code===`Space`&&(this._keySpace=!0)}keyUp(e){e.code===`KeyW`?this._keyW=!1:e.code===`KeyA`?this._keyA=!1:e.code===`KeyS`?this._keyS=!1:e.code===`KeyD`?this._keyD=!1:e.code===`ArrowLeft`?this._keyLeft=!1:e.code===`ArrowRight`?this._keyRight=!1:e.code===`Space`&&(this._keySpace=!1)}update(e){let t=this._avatar;new v().set(t);let n=t.getUnitVecZ().scale(this.options.speed),r=t.getUnitVecX().scale(this.options.speed);this._avatarNextVel.set(0,0,0),this._avatarNextAngVel.set(0,0,0),this._keyW&&this._avatarNextVel.add(n),this._keyA&&this._avatarNextVel.add(r),this._keyS&&this._avatarNextVel.sub(n),this._keyD&&this._avatarNextVel.sub(r),this._velY+=-9.8*e,t.isGrounded()&&(this._velY=0,this._keySpace&&(this._velY=this.options.jumpSpeed)),this._avatarNextVel.add(0,this._velY,0),this._keyLeft&&this._avatarNextAngVel.add(0,this.options.angSpeed,0),this._keyRight&&this._avatarNextAngVel.add(0,-this.options.angSpeed,0),t.setLinearVelocity(this._avatarNextVel),t.setAngularVelocity(this._avatarNextAngVel)}},Yt=class{scene;camera;controller;constructor(e){e.setView(this),this.camera=e,this.camera.setAudioListener(Pt.listener),this.camera.setPosition(0,0,3),this.scene=new Vt,this.scene.scene.add(this.camera.object3D),this.controller=new Wt(0,0,0),this.controller.setView(this),this.controller.activate()}replaceScene(e){this.scene.scene.remove(this.camera.object3D),e.scene.add(this.camera.object3D);let t=this.scene;return this.scene=e,t}updateScene(e){this.scene.update(e),this.controller?.update(e),this.camera.update(e)}setController(e){this.controller.deactivate(),this.controller=e,this.controller.setView(this),this.controller.activate()}worldToScreen(e){throw Error(`BaseViewはworldToScreen()は実装していません`)}screenToWorld(e,t,n){throw Error(`BaseViewはscreenToWorld()は実装していません`)}cameraToScreen(e){throw Error(`BaseViewはcameraToScreen()は実装していません`)}screenToCamera(e,t,n){throw Error(`BaseViewはscreenToCamera()は実装していません`)}async waitForRender(){throw Error(`BaseViewはwaitForRender()は実装していません`)}setShadowMap(e){throw Error(`BaseViewはsetShadowMap()は実装していません`)}},Xt=class extends Ht{camera;headLight;constructor(e){super(),this.camera=e,this.headLight=new c.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);let t=new c.Object3D;t.position.set(0,0,-10),this.headLight.target=t,this.object3D.add(this.camera),this.object3D.add(this.headLight),this.object3D.add(t)}initObject(){return new c.Object3D}setAudioListener(e){this.camera.add(e)}getHeadLight(){return this.headLight}setAspect(e){F(this.camera)&&(this.camera.aspect=e,this.camera.updateProjectionMatrix())}setHeadLight(e){e?this.headLight.intensity=1:this.headLight.intensity=0}calcNDC(e){let t=new c.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}},Zt=class extends c.Object3D{constructor(e=document.createElement(`div`)){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position=`absolute`,this.element.style.userSelect=`none`,this.element.setAttribute(`draggable`,!1),this.center=new c.Vector2(.5,.5),this.addEventListener(`removed`,function(){this.traverse(function(e){e.element&&e.element instanceof e.element.ownerDocument.defaultView.Element&&e.element.parentNode!==null&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this.center=e.center,this}},Qt=new c.Vector3,$t=new c.Matrix4,en=new c.Matrix4,tn=new c.Vector3,nn=new c.Vector3,rn=class{constructor(e={}){let t=this,n,r,i,a,o={objects:new WeakMap},s=e.element===void 0?document.createElement(`div`):e.element;s.style.overflow=`hidden`,this.domElement=s,this.sortObjects=!0,this.getSize=function(){return{width:n,height:r}},this.render=function(e,t){e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),$t.copy(t.matrixWorldInverse),en.multiplyMatrices(t.projectionMatrix,$t),l(e,e,t),this.sortObjects&&f(e)},this.setSize=function(e,t){n=e,r=t,i=n/2,a=r/2,s.style.width=e+`px`,s.style.height=t+`px`};function c(e){e.isCSS2DObject&&(e.element.style.display=`none`);for(let t=0,n=e.children.length;t<n;t++)c(e.children[t])}function l(e,n,r){if(e.visible===!1){c(e);return}if(e.isCSS2DObject){Qt.setFromMatrixPosition(e.matrixWorld),Qt.applyMatrix4(en);let c=Qt.z>=-1&&Qt.z<=1&&e.layers.test(r.layers)===!0,l=e.element;l.style.display=c===!0?``:`none`,c===!0&&(e.onBeforeRender(t,n,r),l.style.transform=`translate(`+-100*e.center.x+`%,`+-100*e.center.y+`%)translate(`+(Qt.x*i+i)+`px,`+(-Qt.y*a+a)+`px)`,l.parentNode!==s&&s.appendChild(l),e.onAfterRender(t,n,r));let d={distanceToCameraSquared:u(r,e)};o.objects.set(e,d)}for(let t=0,i=e.children.length;t<i;t++)l(e.children[t],n,r)}function u(e,t){return tn.setFromMatrixPosition(e.matrixWorld),nn.setFromMatrixPosition(t.matrixWorld),tn.distanceToSquared(nn)}function d(e){let t=[];return e.traverseVisible(function(e){e.isCSS2DObject&&t.push(e)}),t}function f(e){let t=d(e).sort(function(e,t){return e.renderOrder===t.renderOrder?o.objects.get(e).distanceToCameraSquared-o.objects.get(t).distanceToCameraSquared:t.renderOrder-e.renderOrder}),n=t.length;for(let e=0,r=t.length;e<r;e++)t[e].element.style.zIndex=n-e}}};function an(e,t){if(t===c.TrianglesDrawMode)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===c.TriangleFanDrawMode||t===c.TriangleStripDrawMode){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}let r=n.count-2,i=[];if(t===c.TriangleFanDrawMode)for(let e=1;e<=r;e++)i.push(n.getX(0)),i.push(n.getX(e)),i.push(n.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(i.push(n.getX(e)),i.push(n.getX(e+1)),i.push(n.getX(e+2))):(i.push(n.getX(e+2)),i.push(n.getX(e+1)),i.push(n.getX(e)));i.length/3!==r&&console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);let a=e.clone();return a.setIndex(i),a.clearGroups(),a}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:`,t),e}function on(e){let t=new Map,n=new Map,r=e.clone();return sn(e,r,function(e,r){t.set(r,e),n.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;let r=e,i=t.get(e),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(e){return n.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function sn(e,t,n){n(e,t);for(let r=0;r<e.children.length;r++)sn(e.children[r],t.children[r],n)}var cn=class extends c.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new pn(e)}),this.register(function(e){return new mn(e)}),this.register(function(e){return new Cn(e)}),this.register(function(e){return new wn(e)}),this.register(function(e){return new Tn(e)}),this.register(function(e){return new gn(e)}),this.register(function(e){return new _n(e)}),this.register(function(e){return new vn(e)}),this.register(function(e){return new yn(e)}),this.register(function(e){return new fn(e)}),this.register(function(e){return new bn(e)}),this.register(function(e){return new hn(e)}),this.register(function(e){return new Sn(e)}),this.register(function(e){return new xn(e)}),this.register(function(e){return new un(e)}),this.register(function(e){return new En(e,Z.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new En(e,Z.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Dn(e)})}load(e,t,n,r){let i=this,a;if(this.resourcePath!==``)a=this.resourcePath;else if(this.path!==``){let t=c.LoaderUtils.extractUrlBase(e);a=c.LoaderUtils.resolveURL(t,this.path)}else a=c.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let o=function(t){r?r(t):console.error(t),i.manager.itemError(e),i.manager.itemEnd(e)},s=new c.FileLoader(this.manager);s.setPath(this.path),s.setResponseType(`arraybuffer`),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(n){try{i.parse(n,a,function(n){t(n),i.manager.itemEnd(e)},o)}catch(e){o(e)}},n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let i,a={},o={},s=new TextDecoder;if(typeof e==`string`)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===On){try{a[Z.KHR_BINARY_GLTF]=new jn(e)}catch(e){r&&r(e);return}i=JSON.parse(a[Z.KHR_BINARY_GLTF].content)}else i=JSON.parse(s.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2){r&&r(Error(`THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.`));return}let c=new nr(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](c);t.name||console.error(`THREE.GLTFLoader: Invalid plugin found: missing name`),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],n=i.extensionsRequired||[];switch(t){case Z.KHR_MATERIALS_UNLIT:a[t]=new dn;break;case Z.KHR_DRACO_MESH_COMPRESSION:a[t]=new Mn(i,this.dracoLoader);break;case Z.KHR_TEXTURE_TRANSFORM:a[t]=new Nn;break;case Z.KHR_MESH_QUANTIZATION:a[t]=new Pn;break;default:n.indexOf(t)>=0&&o[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function ln(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function X(e,t,n){let r=e.json.materials[t];return r.extensions&&r.extensions[n]?r.extensions[n]:null}var Z={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,KHR_MESHOPT_COMPRESSION:`KHR_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},un=class{constructor(e){this.parser=e,this.name=Z.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n=`light:`+e,r=t.cache.get(n);if(r)return r;let i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e],o,s=new c.Color(16777215);a.color!==void 0&&s.setRGB(a.color[0],a.color[1],a.color[2],c.LinearSRGBColorSpace);let l=a.range===void 0?0:a.range;switch(a.type){case`directional`:o=new c.DirectionalLight(s),o.target.position.set(0,0,-1),o.add(o.target);break;case`point`:o=new c.PointLight(s),o.distance=l;break;case`spot`:o=new c.SpotLight(s),o.distance=l,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle===void 0?0:a.spot.innerConeAngle,a.spot.outerConeAngle=a.spot.outerConeAngle===void 0?Math.PI/4:a.spot.outerConeAngle,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw Error(`THREE.GLTFLoader: Unexpected light type: `+a.type)}return o.position.set(0,0,0),Jn(o,a),a.intensity!==void 0&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||`light_`+e),r=Promise.resolve(o),t.cache.add(n,r),r}getDependency(e,t){if(e===`light`)return this._loadLight(t)}createNodeAttachment(e){let t=this,n=this.parser,r=n.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}},dn=class{constructor(){this.name=Z.KHR_MATERIALS_UNLIT}getMaterialType(){return c.MeshBasicMaterial}extendParams(e,t,n){let r=[];e.color=new c.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],c.LinearSRGBColorSpace),e.opacity=t[3]}i.baseColorTexture!==void 0&&r.push(n.assignTexture(e,`map`,i.baseColorTexture,c.SRGBColorSpace))}return Promise.all(r)}},fn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},pn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatMap`,n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatRoughnessMap`,n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(r.push(this.parser.assignTexture(t,`clearcoatNormalMap`,n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new c.Vector2(e,e)}return Promise.all(r)}},mn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_DISPERSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion===void 0?0:n.dispersion),Promise.resolve()}},hn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceMap`,n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceThicknessMap`,n.iridescenceThicknessTexture)),Promise.all(r)}},gn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SHEEN}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(t.sheenColor=new c.Color(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenColorMap`,n.sheenColorTexture,c.SRGBColorSpace)),n.sheenRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenRoughnessMap`,n.sheenRoughnessTexture)),Promise.all(r)}},_n=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&r.push(this.parser.assignTexture(t,`transmissionMap`,n.transmissionTexture)),Promise.all(r)}},vn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_VOLUME}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.thickness=n.thicknessFactor===void 0?0:n.thicknessFactor,n.thicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`thicknessMap`,n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let i=n.attenuationColor||[1,1,1];return t.attenuationColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),Promise.all(r)}},yn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IOR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null?Promise.resolve():(t.ior=n.ior===void 0?1.5:n.ior,t.ior===0&&(t.ior=1e3),Promise.resolve())}},bn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SPECULAR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.specularIntensity=n.specularFactor===void 0?1:n.specularFactor,n.specularTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularIntensityMap`,n.specularTexture));let i=n.specularColorFactor||[1,1,1];return t.specularColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),n.specularColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularColorMap`,n.specularColorTexture,c.SRGBColorSpace)),Promise.all(r)}},xn=class{constructor(e){this.parser=e,this.name=Z.EXT_MATERIALS_BUMP}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return t.bumpScale=n.bumpFactor===void 0?1:n.bumpFactor,n.bumpTexture!==void 0&&r.push(this.parser.assignTexture(t,`bumpMap`,n.bumpTexture)),Promise.all(r)}},Sn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&r.push(this.parser.assignTexture(t,`anisotropyMap`,n.anisotropyTexture)),Promise.all(r)}},Cn=class{constructor(e){this.parser=e,this.name=Z.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},wn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},Tn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},En=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Dn=class{constructor(e){this.name=Z.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let r=t.meshes[n.mesh];for(let e of r.primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&e.mode!==void 0)return null;let i=n.extensions[this.name].attributes,a=[],o={};for(let e in i)a.push(this.parser.getDependency(`accessor`,i[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),n=t.isGroup?t.children:[t],r=e[0].count,i=[];for(let e of n){let t=new c.Matrix4,n=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,r);for(let e=0;e<r;e++)o.TRANSLATION&&n.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&a.fromBufferAttribute(o.ROTATION,e),o.SCALE&&s.fromBufferAttribute(o.SCALE,e),l.setMatrixAt(e,t.compose(n,a,s));for(let t in o)if(t===`_COLOR_0`){let e=o[t];l.instanceColor=new c.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else t!==`TRANSLATION`&&t!==`ROTATION`&&t!==`SCALE`&&e.geometry.setAttribute(t,o[t]);c.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}},On=`glTF`,kn=12,An={JSON:1313821514,BIN:5130562},jn=class{constructor(e){this.name=Z.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,kn),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==On)throw Error(`THREE.GLTFLoader: Unsupported glTF-Binary header.`);if(this.header.version<2)throw Error(`THREE.GLTFLoader: Legacy binary file detected.`);let r=this.header.length-kn,i=new DataView(e,kn),a=0;for(;a<r;){let t=i.getUint32(a,!0);a+=4;let r=i.getUint32(a,!0);if(a+=4,r===An.JSON){let r=new Uint8Array(e,kn+a,t);this.content=n.decode(r)}else if(r===An.BIN){let n=kn+a;this.body=e.slice(n,n+t)}a+=t}if(this.content===null)throw Error(`THREE.GLTFLoader: JSON content not found.`)}},Mn=class{constructor(e,t){if(!t)throw Error(`THREE.GLTFLoader: No DRACOLoader instance provided.`);this.name=Z.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},l={};for(let e in a){let t=Hn[e]||e.toLowerCase();o[t]=a[e]}for(let t in e.attributes){let r=Hn[t]||t.toLowerCase();if(a[t]!==void 0){let i=n.accessors[e.attributes[t]];l[r]=Rn[i.componentType].name,s[r]=i.normalized===!0}}return t.getDependency(`bufferView`,i).then(function(e){return new Promise(function(t,n){r.decodeDracoFile(e,function(e){for(let t in e.attributes){let n=e.attributes[t],r=s[t];r!==void 0&&(n.normalized=r)}t(e)},o,l,c.LinearSRGBColorSpace,n)})})}},Nn=class{constructor(){this.name=Z.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0?e:(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e)}},Pn=class{constructor(){this.name=Z.KHR_MESH_QUANTIZATION}},Fn=class extends c.Interpolant{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=n[i+e];return t}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u;for(let e=0;e!==o;e++){let t=a[m+e+o],n=a[m+e+s]*l,r=a[p+e+o],c=a[p+e]*l;i[e]=_*t+v*n+h*r+g*c}return i}},In=new c.Quaternion,Ln=class extends Fn{interpolate_(e,t,n,r){let i=super.interpolate_(e,t,n,r);return In.fromArray(i).normalize().toArray(i),i}},Q={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Rn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},zn={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},Bn={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},Vn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hn={POSITION:`position`,NORMAL:`normal`,TANGENT:`tangent`,TEXCOORD_0:`uv`,TEXCOORD_1:`uv1`,TEXCOORD_2:`uv2`,TEXCOORD_3:`uv3`,COLOR_0:`color`,WEIGHTS_0:`skinWeight`,JOINTS_0:`skinIndex`},Un={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},Wn={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},Gn={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`};function Kn(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),e.DefaultMaterial}function qn(e,t,n){for(let r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function Jn(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function Yn(e,t,n){let r=!1,i=!1,a=!1;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.POSITION!==void 0&&(r=!0),n.NORMAL!==void 0&&(i=!0),n.COLOR_0!==void 0&&(a=!0),r&&i&&a)break}if(!r&&!i&&!a)return Promise.resolve(e);let o=[],s=[],c=[];for(let l=0,u=t.length;l<u;l++){let u=t[l];if(r){let t=u.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,u.POSITION);o.push(t)}if(i){let t=u.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,u.NORMAL);s.push(t)}if(a){let t=u.COLOR_0===void 0?e.attributes.color:n.getDependency(`accessor`,u.COLOR_0);c.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c)]).then(function(t){let n=t[0],o=t[1],s=t[2];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}function Xn(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(let n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){let n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,r=n.length;t<r;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function Zn(e){let t,n=e.extensions&&e.extensions[Z.KHR_DRACO_MESH_COMPRESSION];if(t=n?`draco:`+n.bufferView+`:`+n.indices+`:`+Qn(n.attributes):e.indices+`:`+Qn(e.attributes)+`:`+e.mode,e.targets!==void 0)for(let n=0,r=e.targets.length;n<r;n++)t+=`:`+Qn(e.targets[n]);return t}function Qn(e){let t=``,n=Object.keys(e).sort();for(let r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function $n(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error(`THREE.GLTFLoader: Unsupported normalized accessor component type.`)}}function er(e){return e.search(/\.jpe?g($|\?)/i)>0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:e.search(/\.ktx2($|\?)/i)>0||e.search(/^data\:image\/ktx2/)===0?`image/ktx2`:`image/png`}var tr=new c.Matrix4,nr=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ln,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,i=!1,a=-1;if(typeof navigator<`u`&&navigator.userAgent!==void 0){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new c.TextureLoader(this.options.manager):this.textureLoader=new c.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new c.FileLoader(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return qn(i,a,r),Jn(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n].joints;for(let t=0,n=r.length;t<n;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;let r=n.clone(),i=(e,t)=>{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let r=e(t[n]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&n.push(i)}return n}getDependency(e,t){let n=e+`:`+t,r=this.cache.get(n);if(!r){switch(e){case`scene`:r=this.loadScene(t);break;case`node`:r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case`mesh`:r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case`accessor`:r=this.loadAccessor(t);break;case`bufferView`:r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case`buffer`:r=this.loadBuffer(t);break;case`material`:r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case`texture`:r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case`skin`:r=this.loadSkin(t);break;case`animation`:r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case`camera`:r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)}),!r)throw Error(`Unknown type: `+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[Z.KHR_BINARY_GLTF].body);let r=this.options;return new Promise(function(e,i){n.load(c.LoaderUtils.resolveURL(t.uri,r.path),e,void 0,function(){i(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){let n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})}loadAccessor(e){let t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){let e=Vn[r.type],t=Rn[r.componentType],n=r.normalized===!0,i=new t(r.count*e);return Promise.resolve(new c.BufferAttribute(i,e,n))}let i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){let i=e[0],a=Vn[r.type],o=Rn[r.componentType],s=o.BYTES_PER_ELEMENT,l=s*a,u=r.byteOffset||0,d=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,f=r.normalized===!0,p,m;if(d&&d!==l){let e=Math.floor(u/d),n=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+e+`:`+r.count,l=t.cache.get(n);l||(p=new o(i,e*d,r.count*d/s),l=new c.InterleavedBuffer(p,d/s),t.cache.add(n,l)),m=new c.InterleavedBufferAttribute(l,a,u%d/s,f)}else p=i===null?new o(r.count*a):new o(i,u,r.count*a),m=new c.BufferAttribute(p,a,f);if(r.sparse!==void 0){let t=Vn.SCALAR,n=Rn[r.sparse.indices.componentType],s=r.sparse.indices.byteOffset||0,l=r.sparse.values.byteOffset||0,u=new n(e[1],s,r.sparse.count*t),d=new o(e[2],l,r.sparse.count*a);i!==null&&(m=new c.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,t=u.length;e<t;e++){let t=u[e];if(m.setX(t,d[e*a]),a>=2&&m.setY(t,d[e*a+1]),a>=3&&m.setZ(t,d[e*a+2]),a>=4&&m.setW(t,d[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}m.normalized=f}return m})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=zn[n.magFilter]||c.LinearFilter,t.minFilter=zn[n.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=Bn[n.wrapS]||c.RepeatWrapping,t.wrapT=Bn[n.wrapT]||c.RepeatWrapping,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==c.NearestFilter&&t.minFilter!==c.LinearFilter,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,l=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let u=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new c.Texture(e);t.needsUpdate=!0,n(t)}),t.load(c.LoaderUtils.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return l===!0&&o.revokeObjectURL(s),Jn(e,a),e.userData.mimeType=a.mimeType||er(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[Z.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[Z.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[Z.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},l=[];if(s[Z.KHR_MATERIALS_UNLIT]){let e=r[Z.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),l.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new c.Color(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace),o.opacity=e[3]}n.baseColorTexture!==void 0&&l.push(t.assignTexture(o,`map`,n.baseColorTexture,c.SRGBColorSpace)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),l.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=c.DoubleSide);let u=i.alphaMode||Gn.OPAQUE;if(u===Gn.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===Gn.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new c.Vector2(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==c.MeshBasicMaterial){let e=i.emissiveFactor;o.emissive=new c.Color().setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&a!==c.MeshBasicMaterial&&l.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,c.SRGBColorSpace)),Promise.all(l).then(function(){let n=new a(o);return i.name&&(n.name=i.name),Jn(n,i),t.associations.set(n,{materials:e}),i.extensions&&qn(r,n,i),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[Z.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return ir(n,e,t)})}let a=[];for(let n=0,o=e.length;n<o;n++){let o=e[n],s=Zn(o),l=r[s];if(l)a.push(l.promise);else{let e;e=o.extensions&&o.extensions[Z.KHR_DRACO_MESH_COMPRESSION]?i(o):ir(new c.BufferGeometry,o,t),r[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,n=this.json,r=this.extensions,i=n.meshes[e],a=i.primitives,o=[];for(let e=0,t=a.length;e<t;e++){let t=a[e].material===void 0?Kn(this.cache):this.getDependency(`material`,a[e].material);o.push(t)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(n){let o=n.slice(0,n.length-1),s=n[n.length-1],l=[];for(let n=0,u=s.length;n<u;n++){let u=s[n],d=a[n],f,p=o[n];if(d.mode===Q.TRIANGLES||d.mode===Q.TRIANGLE_STRIP||d.mode===Q.TRIANGLE_FAN||d.mode===void 0)f=i.isSkinnedMesh===!0?new c.SkinnedMesh(u,p):new c.Mesh(u,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),d.mode===Q.TRIANGLE_STRIP?f.geometry=an(f.geometry,c.TriangleStripDrawMode):d.mode===Q.TRIANGLE_FAN&&(f.geometry=an(f.geometry,c.TriangleFanDrawMode));else if(d.mode===Q.LINES)f=new c.LineSegments(u,p);else if(d.mode===Q.LINE_STRIP)f=new c.Line(u,p);else if(d.mode===Q.LINE_LOOP)f=new c.LineLoop(u,p);else if(d.mode===Q.POINTS)f=new c.Points(u,p);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+d.mode);Object.keys(f.geometry.morphAttributes).length>0&&Xn(f,i),f.name=t.createUniqueName(i.name||`mesh_`+e),Jn(f,i),d.extensions&&qn(r,f,d),t.assignFinalMaterial(f),l.push(f)}for(let n=0,r=l.length;n<r;n++)t.associations.set(l[n],{meshes:e,primitives:n});if(l.length===1)return i.extensions&&qn(r,l[0],i),l[0];let u=new c.Group;i.extensions&&qn(r,u,i),t.associations.set(u,{meshes:e});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t,n=this.json.cameras[e],r=n[n.type];if(!r){console.warn(`THREE.GLTFLoader: Missing camera parameters.`);return}return n.type===`perspective`?t=new c.PerspectiveCamera(c.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new c.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),Jn(t,n),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],n=[];for(let e=0,r=t.joints.length;e<r;e++)n.push(this._loadNodeShallow(t.joints[e]));return t.inverseBindMatrices===void 0?n.push(null):n.push(this.getDependency(`accessor`,t.inverseBindMatrices)),Promise.all(n).then(function(e){let n=e.pop(),r=e,i=[],a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e];if(o){i.push(o);let t=new c.Matrix4;n!==null&&t.fromArray(n.array,e*16),a.push(t)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,t.joints[e])}return new c.Skeleton(i,a)})}loadAnimation(e){let t=this.json,n=this,r=t.animations[e],i=r.name?r.name:`animation_`+e,a=[],o=[],s=[],l=[],u=[];for(let e=0,t=r.channels.length;e<t;e++){let t=r.channels[e],n=r.samplers[t.sampler],i=t.target,c=i.node,d=r.parameters===void 0?n.input:r.parameters[n.input],f=r.parameters===void 0?n.output:r.parameters[n.output];i.node!==void 0&&(a.push(this.getDependency(`node`,c)),o.push(this.getDependency(`accessor`,d)),s.push(this.getDependency(`accessor`,f)),l.push(n),u.push(i))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u)]).then(function(e){let t=e[0],a=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=a[e],c=o[e],d=s[e],f=l[e];if(r===void 0)continue;r.updateMatrix&&r.updateMatrix();let p=n._createAnimationTracks(r,i,c,d,f);if(p)for(let e=0;e<p.length;e++)u.push(p[e])}let d=new c.AnimationClip(i,void 0,u);return Jn(d,r),d})}createNodeMesh(e){let t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency(`mesh`,r.mesh).then(function(e){let t=n._getNodeRef(n.meshCache,r.mesh,e);return r.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(let t=0,n=r.weights.length;t<n;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json,n=this,r=t.nodes[e],i=n._loadNodeShallow(e),a=[],o=r.children||[];for(let e=0,t=o.length;e<t;e++)a.push(n.getDependency(`node`,o[e]));let s=r.skin===void 0?Promise.resolve(null):n.getDependency(`skin`,r.skin);return Promise.all([i,Promise.all(a),s]).then(function(e){let t=e[0],n=e[1],r=e[2];r!==null&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(r,tr)});for(let e=0,r=n.length;e<r;e++)t.add(n[e]);if(t.userData.pivot!==void 0&&n.length>0){let e=t.userData.pivot,r=n[0];t.pivot=new c.Vector3().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],r.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){let t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let i=t.nodes[e],a=i.name?r.createUniqueName(i.name):``,o=[],s=r._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return s&&o.push(s),i.camera!==void 0&&o.push(r.getDependency(`camera`,i.camera).then(function(e){return r._getNodeRef(r.cameraCache,i.camera,e)})),r._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){o.push(e)}),this.nodeCache[e]=Promise.all(o).then(function(t){let o;if(o=i.isBone===!0?new c.Bone:t.length>1?new c.Group:t.length===1?t[0]:new c.Object3D,o!==t[0])for(let e=0,n=t.length;e<n;e++)o.add(t[e]);if(i.name&&(o.userData.name=i.name,o.name=a),Jn(o,i),i.extensions&&qn(n,o,i),i.matrix!==void 0){let e=new c.Matrix4;e.fromArray(i.matrix),o.applyMatrix4(e)}else i.translation!==void 0&&o.position.fromArray(i.translation),i.rotation!==void 0&&o.quaternion.fromArray(i.rotation),i.scale!==void 0&&o.scale.fromArray(i.scale);if(!r.associations.has(o))r.associations.set(o,{});else if(i.mesh!==void 0&&r.meshCache.refs[i.mesh]>1){let e=r.associations.get(o);r.associations.set(o,{...e})}return r.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],r=this,i=new c.Group;n.name&&(i.name=r.createUniqueName(n.name)),Jn(i,n),n.extensions&&qn(t,i,n);let a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(r.getDependency(`node`,a[e]));return Promise.all(o).then(function(e){for(let t=0,n=e.length;t<n;t++){let n=e[t];n.parent===null?i.add(n):i.add(on(n))}return r.associations=(e=>{let t=new Map;for(let[e,n]of r.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];function l(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}Un[i.path]===Un.weights?(l(e),e.isGroup&&e.children.forEach(l)):s.push(o);let u;switch(Un[i.path]){case Un.weights:u=c.NumberKeyframeTrack;break;case Un.rotation:u=c.QuaternionKeyframeTrack;break;case Un.translation:case Un.scale:u=c.VectorKeyframeTrack;break;default:switch(n.itemSize){case 1:u=c.NumberKeyframeTrack;break;default:u=c.VectorKeyframeTrack;break}break}let d=r.interpolation===void 0?c.InterpolateLinear:Wn[r.interpolation],f=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){let n=new u(s[e]+`.`+Un[i.path],t.array,f,d);r.interpolation===`CUBICSPLINE`&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=$n(t.constructor),n=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)n[r]=t[r]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof c.QuaternionKeyframeTrack?Ln:Fn)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function rr(e,t,n){let r=t.attributes,i=new c.Box3;if(r.POSITION!==void 0){let e=n.json.accessors[r.POSITION],t=e.min,a=e.max;if(t!==void 0&&a!==void 0){if(i.set(new c.Vector3(t[0],t[1],t[2]),new c.Vector3(a[0],a[1],a[2])),e.normalized){let t=$n(Rn[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;let a=t.targets;if(a!==void 0){let e=new c.Vector3,t=new c.Vector3;for(let r=0,i=a.length;r<i;r++){let i=a[r];if(i.POSITION!==void 0){let r=n.json.accessors[i.POSITION],a=r.min,o=r.max;if(a!==void 0&&o!==void 0){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),r.normalized){let e=$n(Rn[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}i.expandByVector(e)}e.boundingBox=i;let o=new c.Sphere;i.getCenter(o.center),o.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=o}function ir(e,t,n){let r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(let t in r){let n=Hn[t]||t.toLowerCase();n in e.attributes||i.push(a(r[t],n))}if(t.indices!==void 0&&!e.index){let r=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(r)}return c.ColorManagement.workingColorSpace!==c.LinearSRGBColorSpace&&`COLOR_0`in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${c.ColorManagement.workingColorSpace}" not supported.`),Jn(e,t),rr(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:Yn(e,t.targets,n)})}var ar=new WeakMap,or=class extends c.Loader{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,r){let i=new c.FileLoader(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,c.SRGBColorSpace,n).catch(n)}decodeDracoFile(e,t,n,r,i=c.LinearSRGBColorSpace,a=()=>{}){let o={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,o).then(t).catch(a)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ar.has(e)){let t=ar.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ar.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let{name:r,array:i,itemSize:a,stride:o,vertexColorSpace:s}=e.attributes[n],l;l=a===o?new c.BufferAttribute(i,a):new c.InterleavedBufferAttribute(new c.InterleavedBuffer(i,o),a,0),r===`color`&&(this._assignVertexColorSpace(l,s),l.normalized=!(i instanceof Float32Array)),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==c.SRGBColorSpace)return;let n=new c.Color;for(let t=0,r=e.count;t<r;t++)n.fromBufferAttribute(e,t),c.ColorManagement.colorSpaceToWorking(n,c.SRGBColorSpace),e.setXYZ(t,n.r,n.g,n.b)}_loadLibrary(e,t){let n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((t,r)=>{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=sr.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
|
|
140
|
+
See: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_7-0-0`)}return e}()})(),yt=class extends c.Loader{backgroundTexture;fog;constructor(e){super(e)}load(e,t,n,r){this.backgroundTexture=void 0,this.fog=void 0;let i=this,a=i.path===``?c.LoaderUtils.extractUrlBase(e):i.path,o=new c.FileLoader(i.manager);o.setPath(i.path),o.setRequestHeader(i.requestHeader),o.setWithCredentials(i.withCredentials),o.load(e,function(n){try{t(i.parse(n,a))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e,t){let n={};function r(e){let t=i(),n=new bt(t.tokens),r=new St(t.tokenVocabulary),o=a(r.getBaseCstVisitorConstructor());r.input=n.lex(e).tokens;let s=r.vrml();if(r.errors.length>0)throw console.error(r.errors),Error(`THREE.VRMLLoader2: Parsing errors detected.`);return o.visit(s)}function i(){let e=vt.createToken,t=e({name:`RouteIdentifier`,pattern:/[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*[\.][^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d][^\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]*/}),n=e({name:`Identifier`,pattern:/[^\x30-\x39\0-\x20\x22\x27\x23\x2b\x2c\x2d\x2e\x5b\x5d\x5c\x7b\x7d]([^\0-\x20\x22\x27\x23\x2b\x2c\x2e\x5b\x5d\x5c\x7b\x7d])*/,longer_alt:t}),r=`Anchor.Billboard.Collision.Group.Transform.Inline.LOD.Switch.AudioClip.DirectionalLight.PointLight.Script.Shape.Sound.SpotLight.WorldInfo.CylinderSensor.PlaneSensor.ProximitySensor.SphereSensor.TimeSensor.TouchSensor.VisibilitySensor.Box.Cone.Cylinder.ElevationGrid.Extrusion.IndexedFaceSet.IndexedLineSet.PointSet.Sphere.Color.Coordinate.Normal.TextureCoordinate.Appearance.FontStyle.ImageTexture.Material.MovieTexture.PixelTexture.TextureTransform.ColorInterpolator.CoordinateInterpolator.NormalInterpolator.OrientationInterpolator.PositionInterpolator.ScalarInterpolator.Background.Fog.NavigationInfo.Viewpoint.Text`.split(`.`),i=e({name:`Version`,pattern:/#VRML.*/,longer_alt:n}),a=e({name:`NodeName`,pattern:new RegExp(r.join(`|`)),longer_alt:n}),o=e({name:`DEF`,pattern:/DEF/,longer_alt:n}),s=e({name:`USE`,pattern:/USE/,longer_alt:n}),c=e({name:`ROUTE`,pattern:/ROUTE/,longer_alt:n}),l=e({name:`TO`,pattern:/TO/,longer_alt:n}),u=e({name:`StringLiteral`,pattern:/"(?:[^\\"\n\r]|\\[bfnrtv"\\/]|\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F])*"/}),d=e({name:`HexLiteral`,pattern:/0[xX][0-9a-fA-F]+/}),f=e({name:`NumberLiteral`,pattern:/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/}),p=e({name:`TrueLiteral`,pattern:/TRUE/}),m=e({name:`FalseLiteral`,pattern:/FALSE/}),h=e({name:`NullLiteral`,pattern:/NULL/}),g=e({name:`LSquare`,pattern:/\[/}),_=e({name:`RSquare`,pattern:/]/}),v=e({name:`LCurly`,pattern:/{/}),y=e({name:`RCurly`,pattern:/}/}),b=e({name:`Comment`,pattern:/#.*/,group:vt.Lexer.SKIPPED}),x=[e({name:`WhiteSpace`,pattern:/[ ,\s]/,group:vt.Lexer.SKIPPED}),a,o,s,c,l,p,m,h,i,n,t,u,d,f,g,_,v,y,b],S={};for(let e=0,t=x.length;e<t;e++){let t=x[e];S[t.name]=t}return{tokens:x,tokenVocabulary:S}}function a(e){class t extends e{constructor(){super(),this.validateVisitor()}vrml(e){let t={version:this.visit(e.version),nodes:[],routes:[]};for(let n=0,r=e.node.length;n<r;n++){let r=e.node[n];t.nodes.push(this.visit(r))}if(e.route)for(let n=0,r=e.route.length;n<r;n++){let r=e.route[n];t.routes.push(this.visit(r))}return t}version(e){return e.Version[0].image}node(e){let t={name:e.NodeName[0].image,fields:[]};if(e.field)for(let n=0,r=e.field.length;n<r;n++){let r=e.field[n];t.fields.push(this.visit(r))}return e.def&&(t.DEF=this.visit(e.def[0])),t}field(e){let t={name:e.Identifier[0].image,type:null,values:null},n;return e.singleFieldValue&&(n=this.visit(e.singleFieldValue[0])),e.multiFieldValue&&(n=this.visit(e.multiFieldValue[0])),t.type=n.type,t.values=n.values,t}def(e){return(e.Identifier||e.NodeName)[0].image}use(e){return{USE:(e.Identifier||e.NodeName)[0].image}}singleFieldValue(e){return n(this,e)}multiFieldValue(e){return n(this,e)}route(e){return{FROM:e.RouteIdentifier[0].image,TO:e.RouteIdentifier[1].image}}}function n(e,t){let n={type:null,values:[]};if(t.node){n.type=`node`;for(let r=0,i=t.node.length;r<i;r++){let i=t.node[r];n.values.push(e.visit(i))}}if(t.use){n.type=`use`;for(let r=0,i=t.use.length;r<i;r++){let i=t.use[r];n.values.push(e.visit(i))}}if(t.StringLiteral){n.type=`string`;for(let e=0,r=t.StringLiteral.length;e<r;e++){let r=t.StringLiteral[e];n.values.push(r.image.replace(/'|"/g,``))}}if(t.NumberLiteral){n.type=`number`;for(let e=0,r=t.NumberLiteral.length;e<r;e++){let r=t.NumberLiteral[e];n.values.push(parseFloat(r.image))}}if(t.HexLiteral){n.type=`hex`;for(let e=0,r=t.HexLiteral.length;e<r;e++){let r=t.HexLiteral[e];n.values.push(r.image)}}if(t.TrueLiteral){n.type=`boolean`;for(let e=0,r=t.TrueLiteral.length;e<r;e++)t.TrueLiteral[e].image===`TRUE`&&n.values.push(!0)}if(t.FalseLiteral){n.type=`boolean`;for(let e=0,r=t.FalseLiteral.length;e<r;e++)t.FalseLiteral[e].image===`FALSE`&&n.values.push(!1)}return t.NullLiteral&&(n.type=`null`,t.NullLiteral.forEach(function(){n.values.push(null)})),n}return new t}function o(e){let t=e.nodes,n=new c.Scene;for(let e=0,n=t.length;e<n;e++){let n=t[e];s(n)}for(let e=0,r=t.length;e<r;e++){let r=t[e],i=l(r);i instanceof c.Object3D&&n.add(i),r.name===`WorldInfo`&&(n.userData.worldInfo=i)}return n}function s(e){e.DEF&&(n[e.DEF]=e);let t=e.fields;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.type===`node`){let e=n.values;for(let t=0,n=e.length;t<n;t++)s(e[t])}}}function l(e){return e.USE?re(e.USE):(e.build===void 0&&(e.build=u(e)),e.build)}function u(e){let t=e.name,n;switch(t){case`Anchor`:case`Group`:case`Transform`:case`Collision`:n=d(e);break;case`Background`:n=p(e);break;case`Shape`:n=m(e);break;case`Appearance`:n=h(e);break;case`Material`:n=g(e);break;case`ImageTexture`:n=b(e);break;case`PixelTexture`:n=y(e);break;case`TextureTransform`:n=x(e);break;case`IndexedFaceSet`:n=O(e);break;case`IndexedLineSet`:n=k(e);break;case`PointSet`:n=A(e);break;case`Box`:n=j(e);break;case`Cone`:n=M(e);break;case`Cylinder`:n=N(e);break;case`Sphere`:n=ee(e);break;case`ElevationGrid`:n=te(e);break;case`Extrusion`:n=ne(e);break;case`Color`:case`Coordinate`:case`Normal`:case`TextureCoordinate`:n=S(e);break;case`WorldInfo`:n=C(e);break;case`DirectionalLight`:n=w(e);break;case`PointLight`:n=T(e);break;case`SpotLight`:n=E(e);break;case`Fog`:n=D(e);break;case`Billboard`:case`Inline`:case`LOD`:case`Switch`:case`AudioClip`:case`Script`:case`Sound`:case`CylinderSensor`:case`PlaneSensor`:case`ProximitySensor`:case`SphereSensor`:case`TimeSensor`:case`TouchSensor`:case`VisibilitySensor`:case`Text`:case`FontStyle`:case`MovieTexture`:case`ColorInterpolator`:case`CoordinateInterpolator`:case`NormalInterpolator`:case`OrientationInterpolator`:case`PositionInterpolator`:case`ScalarInterpolator`:case`NavigationInfo`:case`Viewpoint`:break;default:console.warn(`THREE.VRMLLoader2: Unknown node:`,t);break}return n!==void 0&&e.DEF!==void 0&&n.hasOwnProperty(`name`)===!0&&(n.name=e.DEF),n}function d(e){let t=new c.Group,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`bboxCenter`:break;case`bboxSize`:break;case`center`:break;case`children`:ie(a,t);break;case`description`:break;case`collide`:break;case`parameter`:break;case`rotation`:let e=new c.Vector3(a[0],a[1],a[2]).normalize(),n=a[3];t.quaternion.setFromAxisAngle(e,n);break;case`scale`:t.scale.set(a[0],a[1],a[2]);break;case`scaleOrientation`:break;case`translation`:t.position.set(a[0],a[1],a[2]);break;case`proxy`:break;case`url`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}let f=this;function p(e){let t=new c.Group,n,r,i,a,o,s,l,u,d,p,m=e.fields;for(let e=0,t=m.length;e<t;e++){let t=m[e],c=t.name,f=t.values;switch(c){case`groundAngle`:n=f;break;case`groundColor`:r=f;break;case`backUrl`:o=f;break;case`bottomUrl`:s=f;break;case`frontUrl`:l=f;break;case`leftUrl`:u=f;break;case`rightUrl`:d=f;break;case`topUrl`:p=f;break;case`skyAngle`:i=f;break;case`skyColor`:a=f;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}if(o&&s&&l&&u&&d&&p)f.backgroundTexture=new c.CubeTextureLoader(f.manager).load([d[0],u[0],p[0],s[0],l[0],o[0]]);else{if(a){let e=[];for(let t=0;t<a.length;t+=3)e.push([a[t],a[t+1],a[t+2]]);a=e}if(r){let e=[];for(let t=0;t<r.length;t+=3)e.push([r[t],r[t+1],r[t+2]]);r=e}this.backgroundTexture=new wt({skyColor:a,skyAngle:i,groundColor:r,groundAngle:n}).buildTexture()}return t}function m(e){let t=e.fields,n=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0}),r;for(let e=0,i=t.length;e<i;e++){let i=t[e],a=i.name,o=i.values;switch(a){case`appearance`:o[0]!==null&&(n=l(o[0]));break;case`geometry`:o[0]!==null&&(r=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i;if(r&&r.attributes.position){let e=r._type;if(e===`points`){let e=new c.PointsMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.Points(r,e)}else if(e===`line`){let e=new c.LineBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:16777215,opacity:n.opacity,transparent:n.transparent});r.attributes.color===void 0?n.isMeshPhongMaterial&&e.color.copy(n.emissive):e.vertexColors=!0,i=new c.LineSegments(r,e)}else r._solid!==void 0&&(n.side=r._solid?c.FrontSide:c.DoubleSide),r.attributes.color!==void 0&&(n.vertexColors=!0),i=new c.Mesh(r,n)}else i=new c.Object3D,i.visible=!1;return i}function h(e){let t=new c.MeshPhongMaterial,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`material`:if(o[0]!==null){let e=l(o[0]);e.diffuseColor&&t.color.copy(e.diffuseColor),e.emissiveColor&&t.emissive.copy(e.emissiveColor),e.shininess&&(t.shininess=e.shininess),e.specularColor&&t.specular.copy(e.specularColor),e.transparency&&(t.opacity=1-e.transparency),e.transparency>0&&(t.transparent=!0)}else t=new c.MeshBasicMaterial({name:c.Loader.DEFAULT_MATERIAL_NAME,color:0});break;case`texture`:let e=o[0];e!==null&&(e.name===`ImageTexture`||e.name===`PixelTexture`||e.USE)&&(t.map=l(e));break;case`textureTransform`:o[0]!==null&&(n=l(o[0]));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}if(t.map){if(t.map.__type){switch(t.map.__type){case Y.INTENSITY_ALPHA:t.opacity=1;break;case Y.RGB:t.color.set(16777215);break;case Y.RGBA:t.color.set(16777215),t.opacity=1;break;default:}delete t.map.__type}n&&(t.map.center.copy(n.center),t.map.rotation=n.rotation,t.map.repeat.copy(n.scale),t.map.offset.copy(n.translation))}return t.map&&t.map.fookHolder&&t.map.fookHolder.fooks.push(async e=>{let n=await Tt(e.source.data);t.transparent=n,t.needsUpdate=n}),t}function g(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`ambientIntensity`:break;case`diffuseColor`:t.diffuseColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`emissiveColor`:t.emissiveColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`shininess`:t.shininess=a[0];break;case`specularColor`:t.specularColor=new c.Color().setRGB(a[0],a[1],a[2],c.SRGBColorSpace);break;case`transparency`:t.transparency=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function _(e,t,n){let r;switch(t){case Y.INTENSITY:r=parseInt(e),n.r=r,n.g=r,n.b=r,n.a=1;break;case Y.INTENSITY_ALPHA:r=parseInt(`0x`+e.substring(2,4)),n.r=r,n.g=r,n.b=r,n.a=parseInt(`0x`+e.substring(4,6));break;case Y.RGB:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=1;break;case Y.RGBA:n.r=parseInt(`0x`+e.substring(2,4)),n.g=parseInt(`0x`+e.substring(4,6)),n.b=parseInt(`0x`+e.substring(6,8)),n.a=parseInt(`0x`+e.substring(8,10));break;default:}}function v(e){let t;switch(e){case 1:t=Y.INTENSITY;break;case 2:t=Y.INTENSITY_ALPHA;break;case 3:t=Y.RGB;break;case 4:t=Y.RGBA;break;default:}return t}function y(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`image`:let e=s[0],i=s[1],a=s[2],l=v(a),u=new Uint8Array(4*e*i),d={r:0,g:0,b:0,a:0};for(let e=3,t=0,n=s.length;e<n;e++,t++){_(s[e],l,d);let n=t*4;u[n+0]=d.r,u[n+1]=d.g,u[n+2]=d.b,u[n+3]=d.a}t=new c.DataTexture(u,e,i),t.colorSpace=c.SRGBColorSpace,t.needsUpdate=!0,t.__type=l;break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r),t}function b(e){let t,n=c.RepeatWrapping,r=c.RepeatWrapping,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`url`:let e=s[0],i={fooks:[]};e&&(t=he.load(e,e=>{i.fooks&&i.fooks.map(t=>t(e))})),t&&(t.fookHolder=i);break;case`repeatS`:s[0]===!1&&(n=c.ClampToEdgeWrapping);break;case`repeatT`:s[0]===!1&&(r=c.ClampToEdgeWrapping);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return t&&(t.wrapS=n,t.wrapT=r,t.colorSpace=c.SRGBColorSpace),t}function x(e){let t={center:new c.Vector2,rotation:0,scale:new c.Vector2(1,1),translation:new c.Vector2},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`center`:t.center.set(a[0],a[1]);break;case`rotation`:t.rotation=a[0];break;case`scale`:t.scale.set(a[0],a[1]);break;case`translation`:t.translation.set(a[0],a[1]);break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function S(e){return e.fields[0]?e.fields[0].values:{}}function C(e){let t={},n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`title`:t.title=a[0];break;case`info`:t.info=a;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return t}function w(e){let t=0,n=new c.Color(1,1,1),r=new c.Vector3(0,0,-1),i=1,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,l=s.values;switch(c){case`ambientIntensity`:t=l[0];break;case`color`:n.set(l[0],l[1],l[2]);break;case`direction`:r.set(l[0],l[1],l[2]);break;case`intensity`:i=l[0];break;case`on`:a=l[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,c);break}}i=a?i:0;let s=new c.Object3D,l=new c.DirectionalLight(n,i);r.normalize(),r.multiplyScalar(-10),l.position.copy(r),s.add(l);let u=new c.AmbientLight(n,i*t);return s.add(u),s}function T(e){let t=0,n=new c.Vector3(1,0,0),r=new c.Color(1,1,1),i=1,a=new c.Vector3(0,0,0),o=!0,s=100,l=e.fields;for(let e=0,c=l.length;e<c;e++){let c=l[e],u=c.name,d=c.values;switch(u){case`ambientIntensity`:t=d[0];break;case`attenuation`:n.set(d[0],d[1],d[2]);break;case`color`:r.set(d[0],d[1],d[2]);break;case`intensity`:i=d[0];break;case`location`:a.set(d[0],d[1],d[2]);break;case`on`:o=d[0];break;case`radius`:s=d[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,u);break}}i=o?i:0;let u=new c.Object3D,d=new c.PointLight(r,i,s);d.position.copy(a),d.decay=2,u.add(d);let f=new c.AmbientLight(r,i*t);return u.add(f),u}function E(e){let t=0,n=new c.Vector3(1,0,0),r=1.570796,i=new c.Color(1,1,1),a=.785398,o=new c.Vector3(0,0,-1),s=1,l=new c.Vector3(0,0,-1),u=!0,d=100,f=e.fields;for(let e=0,c=f.length;e<c;e++){let c=f[e],p=c.name,m=c.values;switch(p){case`ambientIntensity`:t=m[0];break;case`attenuation`:n.set(m[0],m[1],m[2]);break;case`beamWidth`:r=m[0];break;case`color`:i.set(m[0],m[1],m[2]);break;case`cutOffAngle`:a=m[0];break;case`direction`:o.set(m[0],m[1],m[2]);break;case`intensity`:s=m[0];break;case`location`:l.set(m[0],m[1],m[2]);break;case`on`:u=m[0];break;case`radius`:d=m[0];break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,p);break}}s=u?s:0;let p=new c.Object3D;r=r>a?a:r;let m=1-r/a,h=new c.SpotLight(i,s,d,a,m);o.normalize(),h.position.copy(o),h.decay=0,p.add(h);let g=new c.AmbientLight(i,s*t);return p.add(g),p.position.copy(l),p}function D(e){let t=new c.Color(1,1,1),n=`LINEAR`,r=0,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`color`:t.set(s[0],s[1],s[2]);break;case`fogType`:n=s[0];break;case`visibilityRange`:r=s[0];break;case`set_bind`:break;case`isBound`:break;default:console.warn(`ThreeMFLoader.VRMLLoader2: Unknown field:`,o);break}}if(n===`LINEAR`)f.fog=new c.Fog(t,0,r);else if(n===`EXPONENTIAL`){let e=.02;r!==0&&(e=2.146/r),f.fog=new c.FogExp2(t,e)}else console.warn(`ThreeMFLoader.VRMLLoader2: Unknown fogType:`,n);return new c.Object3D}function O(e){let t,n,r,i,a=!0,o=!0,s=0,u,d,f,p,m=!0,h=!0,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`coord`:let c=v[0];c!==null&&(n=l(c));break;case`normal`:let g=v[0];g!==null&&(r=l(g));break;case`texCoord`:let y=v[0];y!==null&&(i=l(y));break;case`ccw`:a=v[0];break;case`colorIndex`:u=v;break;case`colorPerVertex`:m=v[0];break;case`convex`:break;case`coordIndex`:d=v;break;case`creaseAngle`:s=v[0];break;case`normalIndex`:f=v;break;case`normalPerVertex`:h=v[0];break;case`solid`:o=v[0];break;case`texCoordIndex`:p=v;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}if(d===void 0)return console.warn(`THREE.VRMLLoader2: Missing coordIndex.`),new c.BufferGeometry;let _=ae(d,a),v,y,b;t&&(v=m===!0?u&&u.length>0?B(_,ae(u,a),t,3):V(_,new c.Float32BufferAttribute(t,3)):u&&u.length>0?ue(_,oe(P(t,u),d)):ue(_,oe(t,d)),me(v)),y=r?h===!0?f&&f.length>0?B(_,ae(f,a),r,3):V(_,new c.Float32BufferAttribute(r,3)):f&&f.length>0?ue(_,oe(P(r,f),d)):ue(_,oe(r,d)):pe(_,n,s),i&&(b=p&&p.length>0?B(_,ae(p,a),i,2):V(_,new c.Float32BufferAttribute(i,2)));let x=new c.BufferGeometry,S=V(_,new c.Float32BufferAttribute(n,3));return x.setAttribute(`position`,S),x.setAttribute(`normal`,y),v&&x.setAttribute(`color`,v),b&&x.setAttribute(`uv`,b),x._solid=o,x._type=`mesh`,x}function k(e){let t,n,r,i,a=!0,o=e.fields;for(let e=0,s=o.length;e<s;e++){let s=o[e],c=s.name,u=s.values;switch(c){case`color`:let e=u[0];e!==null&&(t=l(e));break;case`coord`:let o=u[0];o!==null&&(n=l(o));break;case`colorIndex`:r=u;break;case`colorPerVertex`:a=u[0];break;case`coordIndex`:i=u;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,c);break}}let s,u=se(i);t&&(s=a===!0?r.length>0?B(u,se(r),t,3):V(u,new c.Float32BufferAttribute(t,3)):r.length>0?de(u,ce(P(t,r),i)):de(u,ce(t,i)),me(s));let d=new c.BufferGeometry,f=V(u,new c.Float32BufferAttribute(n,3));return d.setAttribute(`position`,f),s&&d.setAttribute(`color`,s),d._type=`line`,d}function A(e){let t,n,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`color`:let e=o[0];e!==null&&(t=l(e));break;case`coord`:let r=o[0];r!==null&&(n=l(r));break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}let i=new c.BufferGeometry;if(i.setAttribute(`position`,new c.Float32BufferAttribute(n,3)),t){let e=new c.Float32BufferAttribute(t,3);me(e),i.setAttribute(`color`,e)}return i._type=`points`,i}function j(e){let t=new c.Vector3(2,2,2),n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`size`:t.x=a[0],t.y=a[1],t.z=a[2];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.BoxGeometry(t.x,t.y,t.z)}function M(e){let t=1,n=2,r=!1,i=e.fields;for(let e=0,a=i.length;e<a;e++){let a=i[e],o=a.name,s=a.values;switch(o){case`bottom`:r=!s[0];break;case`bottomRadius`:t=s[0];break;case`height`:n=s[0];break;case`side`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,o);break}}return new c.ConeGeometry(t,n,16,1,r)}function N(e){let t=1,n=2,r=e.fields;for(let e=0,i=r.length;e<i;e++){let i=r[e],a=i.name,o=i.values;switch(a){case`bottom`:break;case`radius`:t=o[0];break;case`height`:n=o[0];break;case`side`:break;case`top`:break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,a);break}}return new c.CylinderGeometry(t,t,n,16,1)}function ee(e){let t=1,n=e.fields;for(let e=0,r=n.length;e<r;e++){let r=n[e],i=r.name,a=r.values;switch(i){case`radius`:t=a[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,i);break}}return new c.SphereGeometry(t,16,16)}function te(e){let t,n,r,i,a=!0,o=!0,s=!0,u=!0,d=0,f=2,p=2,m=1,h=1,g=e.fields;for(let e=0,c=g.length;e<c;e++){let c=g[e],_=c.name,v=c.values;switch(_){case`color`:let e=v[0];e!==null&&(t=l(e));break;case`normal`:let c=v[0];c!==null&&(n=l(c));break;case`texCoord`:let g=v[0];g!==null&&(r=l(g));break;case`height`:i=v;break;case`ccw`:u=v[0];break;case`colorPerVertex`:a=v[0];break;case`creaseAngle`:d=v[0];break;case`normalPerVertex`:o=v[0];break;case`solid`:s=v[0];break;case`xDimension`:f=v[0];break;case`xSpacing`:m=v[0];break;case`zDimension`:p=v[0];break;case`zSpacing`:h=v[0];break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,_);break}}let _=[],v=[],y=[],b=[];for(let e=0;e<p;e++)for(let s=0;s<f;s++){let c=e*f+s,l=m*e,u=i[c],d=h*s;if(_.push(l,u,d),t&&a===!0){let e=t[c*3+0],n=t[c*3+1],r=t[c*3+2];y.push(e,n,r)}if(n&&o===!0){let e=n[c*3+0],t=n[c*3+1],r=n[c*3+2];v.push(e,t,r)}if(r){let e=r[c*2+0],t=r[c*2+1];b.push(e,t)}else b.push(e/(f-1),s/(p-1))}let x=[];for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let n=e+t*f,r=e+(t+1)*f,i=e+1+(t+1)*f,a=e+1+t*f;u===!0?(x.push(n,i,r),x.push(i,n,a)):(x.push(n,r,i),x.push(i,a,n))}let S=V(x,new c.Float32BufferAttribute(_,3)),C=V(x,new c.Float32BufferAttribute(b,2)),w,T;if(t){if(a===!1){for(let e=0;e<f-1;e++)for(let n=0;n<p-1;n++){let r=e+n*(f-1),i=t[r*3+0],a=t[r*3+1],o=t[r*3+2];y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o),y.push(i,a,o)}w=new c.Float32BufferAttribute(y,3)}else w=V(x,new c.Float32BufferAttribute(y,3));me(w)}if(n)if(o===!1){for(let e=0;e<f-1;e++)for(let t=0;t<p-1;t++){let r=e+t*(f-1),i=n[r*3+0],a=n[r*3+1],o=n[r*3+2];v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o),v.push(i,a,o)}T=new c.Float32BufferAttribute(v,3)}else T=V(x,new c.Float32BufferAttribute(v,3));else T=pe(x,_,d);let E=new c.BufferGeometry;return E.setAttribute(`position`,S),E.setAttribute(`normal`,T),E.setAttribute(`uv`,C),w&&E.setAttribute(`color`,w),E._solid=s,E._type=`mesh`,E}function ne(e){let t=[1,1,1,-1,-1,-1,-1,1,1,1],n=[0,0,0,0,1,0],r,i,a=!0,o=!0,s=0,l=!0,u=!0,d=e.fields;for(let e=0,c=d.length;e<c;e++){let c=d[e],f=c.name,p=c.values;switch(f){case`beginCap`:a=p[0];break;case`ccw`:o=p[0];break;case`convex`:break;case`creaseAngle`:s=p[0];break;case`crossSection`:t=p;break;case`endCap`:l=p[0];break;case`orientation`:i=p;break;case`scale`:r=p;break;case`solid`:u=p[0];break;case`spine`:n=p;break;default:console.warn(`THREE.VRMLLoader2: Unknown field:`,f);break}}let f=t[0]===t[t.length-2]&&t[1]===t[t.length-1],p=[],m=new c.Vector3,h=new c.Vector3,g=new c.Vector3,_=new c.Vector3,v=new c.Quaternion;for(let e=0,a=0,o=0,s=n.length;e<s;e+=3,a+=2,o+=4){m.fromArray(n,e),h.x=r?r[a+0]:1,h.y=1,h.z=r?r[a+1]:1,g.x=i?i[o+0]:0,g.y=i?i[o+1]:0,g.z=i?i[o+2]:1;let s=i?i[o+3]:0;for(let e=0,n=t.length;e<n;e+=2)_.x=t[e+0],_.y=0,_.z=t[e+1],_.multiply(h),v.setFromAxisAngle(g,s),_.applyQuaternion(v),_.add(m),p.push(_.x,_.y,_.z)}let y=[],b=n.length/3,x=t.length/2;for(let e=0;e<b-1;e++)for(let t=0;t<x-1;t++){let n=t+e*x,r=t+1+e*x,i=t+(e+1)*x,a=t+1+(e+1)*x;t===x-2&&f===!0&&(r=e*x,a=(e+1)*x),o===!0?(y.push(n,r,i),y.push(i,r,a)):(y.push(n,i,r),y.push(i,a,r))}if(a===!0||l===!0){let e=[];for(let n=0,r=t.length;n<r;n+=2)e.push(new c.Vector2(t[n],t[n+1]));let n=c.ShapeUtils.triangulateShape(e,[]),r=[];for(let e=0,t=n.length;e<t;e++){let t=n[e];r.push(t[0],t[1],t[2])}if(a===!0)for(let e=0,t=r.length;e<t;e+=3)o===!0?y.push(r[e+0],r[e+1],r[e+2]):y.push(r[e+0],r[e+2],r[e+1]);if(l===!0){let e=x*(b-1);for(let t=0,n=r.length;t<n;t+=3)o===!0?y.push(e+r[t+0],e+r[t+2],e+r[t+1]):y.push(e+r[t+0],e+r[t+1],e+r[t+2])}}let S=V(y,new c.Float32BufferAttribute(p,3)),C=pe(y,p,s),w=new c.BufferGeometry;return w.setAttribute(`position`,S),w.setAttribute(`normal`,C),w._solid=u,w._type=`mesh`,w}function re(e){let t=n[e],r=l(t);return r.isObject3D||r.isMaterial?r.clone():r}function ie(e,t){for(let n=0,r=e.length;n<r;n++){let r=l(e[n]);r instanceof c.Object3D&&t.add(r)}}function ae(e,t){let n=[],r=0;for(let i=0,a=e.length;i<a;i++){let o=e[r],s=e[i+(t?1:2)],c=e[i+(t?2:1)];n.push(o,s,c),(e[i+3]===-1||i+3>=a)&&(i+=3,r=i+1)}return n}function oe(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+3]===-1||i+3>=a)&&(i+=3,r++)}return n}function P(e,t){let n=[];for(let r=0,i=t.length;r<i;r++){let i=t[r]*3,a=e[i],o=e[i+1],s=e[i+2];n.push(a,o,s)}return n}function se(e){let t=[];for(let n=0,r=e.length;n<r;n++){let i=e[n],a=e[n+1];t.push(i,a),(e[n+2]===-1||n+2>=r)&&(n+=2)}return t}function ce(e,t){let n=[],r=0;for(let i=0,a=t.length;i<a;i++){let o=r*3,s=e[o],c=e[o+1],l=e[o+2];n.push(s,c,l),(t[i+2]===-1||i+2>=a)&&(i+=2,r++)}return n}let F=new c.Vector3,I=new c.Vector3,L=new c.Vector3,R=new c.Vector2,le=new c.Vector2,z=new c.Vector2;function B(e,t,n,r){let i=[];for(let a=0,o=e.length;a<o;a+=3){let e=t[a],o=t[a+1],s=t[a+2];r===2?(R.fromArray(n,e*r),le.fromArray(n,o*r),z.fromArray(n,s*r),i.push(R.x,R.y),i.push(le.x,le.y),i.push(z.x,z.y)):(F.fromArray(n,e*r),I.fromArray(n,o*r),L.fromArray(n,s*r),i.push(F.x,F.y,F.z),i.push(I.x,I.y,I.z),i.push(L.x,L.y,L.z))}return new c.Float32BufferAttribute(i,r)}function ue(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=3,i++)F.fromArray(t,i*3),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z);return new c.Float32BufferAttribute(n,3)}function de(e,t){let n=[];for(let r=0,i=0,a=e.length;r<a;r+=2,i++)F.fromArray(t,i*3),n.push(F.x,F.y,F.z),n.push(F.x,F.y,F.z);return new c.Float32BufferAttribute(n,3)}function V(e,t){let n=t.array,r=t.itemSize,i=new n.constructor(e.length*r),a=0,o=0;for(let t=0,s=e.length;t<s;t++){a=e[t]*r;for(let e=0;e<r;e++)i[o++]=n[a++]}return new c.Float32BufferAttribute(i,r)}let fe=new c.Vector3,H=new c.Vector3;function pe(e,t,n){let r=[],i={};for(let n=0,a=e.length;n<a;n+=3){let a=e[n],o=e[n+1],s=e[n+2],c=new Ct(a,o,s);F.fromArray(t,a*3),I.fromArray(t,o*3),L.fromArray(t,s*3),H.subVectors(L,I),fe.subVectors(F,I),H.cross(fe),H.normalize(),c.normal.copy(H),i[a]===void 0&&(i[a]=[]),i[o]===void 0&&(i[o]=[]),i[s]===void 0&&(i[s]=[]),i[a].push(c.normal),i[o].push(c.normal),i[s].push(c.normal),r.push(c)}let a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e],s=U(i[o.a],o.normal,n),c=U(i[o.b],o.normal,n),l=U(i[o.c],o.normal,n);F.fromArray(t,o.a*3),I.fromArray(t,o.b*3),L.fromArray(t,o.c*3),a.push(s.x,s.y,s.z),a.push(c.x,c.y,c.z),a.push(l.x,l.y,l.z)}return new c.Float32BufferAttribute(a,3)}function U(e,t,n){let r=new c.Vector3;if(n===0)r.copy(t);else for(let i=0,a=e.length;i<a;i++)e[i].angleTo(t)<n&&r.add(e[i]);return r.normalize()}function me(e){let t=new c.Color;for(let n=0;n<e.count;n++)t.fromBufferAttribute(e,n),c.ColorManagement.colorSpaceToWorking(t,c.SRGBColorSpace),e.setXYZ(n,t.r,t.g,t.b)}let he=new c.TextureLoader(this.manager);if(he.setPath(this.resourcePath||t).setCrossOrigin(this.crossOrigin),e.indexOf(`#VRML V2.0`)===-1)throw Error(`THREE.VRMLLexer: Version of VRML asset not supported.`);return o(r(e))}},bt=class{constructor(e){this.lexer=new vt.Lexer(e)}lex(e){let t=this.lexer.tokenize(e);if(t.errors.length>0)throw console.error(t.errors),Error(`THREE.VRMLLexer: Lexing errors detected.`);return t}},xt=vt.CstParser,St=class extends xt{constructor(e){super(e);let t=this,n=e.Version,r=e.LCurly,i=e.RCurly,a=e.LSquare,o=e.RSquare,s=e.Identifier,c=e.RouteIdentifier,l=e.StringLiteral,u=e.HexLiteral,d=e.NumberLiteral,f=e.TrueLiteral,p=e.FalseLiteral,m=e.NullLiteral,h=e.DEF,g=e.USE,_=e.ROUTE,v=e.TO,y=e.NodeName;t.RULE(`vrml`,function(){t.SUBRULE(t.version),t.AT_LEAST_ONE(function(){t.SUBRULE(t.node)}),t.MANY(function(){t.SUBRULE(t.route)})}),t.RULE(`version`,function(){t.CONSUME(n)}),t.RULE(`node`,function(){t.OPTION(function(){t.SUBRULE(t.def)}),t.CONSUME(y),t.CONSUME(r),t.MANY(function(){t.SUBRULE(t.field)}),t.CONSUME(i)}),t.RULE(`field`,function(){t.CONSUME(s),t.OR2([{ALT:function(){t.SUBRULE(t.singleFieldValue)}},{ALT:function(){t.SUBRULE(t.multiFieldValue)}}])}),t.RULE(`def`,function(){t.CONSUME(h),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),t.RULE(`use`,function(){t.CONSUME(g),t.OR([{ALT:function(){t.CONSUME(s)}},{ALT:function(){t.CONSUME(y)}}])}),t.RULE(`singleFieldValue`,function(){t.AT_LEAST_ONE(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(f)}},{ALT:function(){t.CONSUME(p)}},{ALT:function(){t.CONSUME(m)}}])})}),t.RULE(`multiFieldValue`,function(){t.CONSUME(a),t.MANY(function(){t.OR([{ALT:function(){t.SUBRULE(t.node)}},{ALT:function(){t.SUBRULE(t.use)}},{ALT:function(){t.CONSUME(l)}},{ALT:function(){t.CONSUME(u)}},{ALT:function(){t.CONSUME(d)}},{ALT:function(){t.CONSUME(m)}}])}),t.CONSUME(o)}),t.RULE(`route`,function(){t.CONSUME(_),t.CONSUME(c),t.CONSUME(v),t.CONSUME2(c)}),this.performSelfAnalysis()}},Ct=class{constructor(e,t,n){this.a=e,this.b=t,this.c=n,this.normal=new c.Vector3}},Y={INTENSITY:1,INTENSITY_ALPHA:2,RGB:3,RGBA:4},wt=class{constructor({skyColor:e=[[0,0,0]],skyAngle:t=[],groundColor:n=[],groundAngle:r=[],size:i=128}={}){this._skyColor=e,this._skyAngle=t,this._groundColor=n,this._groundAngle=r,this._size=i,this._texture=null}applyToScene(e){e.background=this._buildCubeTexture()}buildTexture(){return this._texture||=this._buildCubeTexture(),this._texture}dispose(){this._texture&&=(this._texture.dispose(),null)}_colorAtPitch(e){let t=Math.PI/2;if(e<=t){if(this._skyAngle.length===0)return this._skyColor[0];if(e<=this._skyAngle[0])return this._lerpColor(this._skyColor[0],this._skyColor[1],e/this._skyAngle[0]);let t=this._skyAngle.length-1;if(e>=this._skyAngle[t])return this._skyColor[t+1]??this._skyColor[this._skyColor.length-1];for(let n=0;n<t;n++)if(e<=this._skyAngle[n+1]){let t=(e-this._skyAngle[n])/(this._skyAngle[n+1]-this._skyAngle[n]);return this._lerpColor(this._skyColor[n+1]??this._skyColor[this._skyColor.length-1],this._skyColor[n+2]??this._skyColor[this._skyColor.length-1],t)}return this._skyColor[this._skyColor.length-1]}else{if(this._groundColor.length===0)return this._skyColor[this._skyColor.length-1];let n=e-t;if(this._groundAngle.length===0)return this._groundColor[0];if(n<=this._groundAngle[0])return this._lerpColor(this._groundColor[0],this._groundColor[1],n/this._groundAngle[0]);let r=this._groundAngle.length-1;if(n>=this._groundAngle[r])return this._groundColor[r+1]??this._groundColor[this._groundColor.length-1];for(let e=0;e<r;e++)if(n<=this._groundAngle[e+1]){let t=(n-this._groundAngle[e])/(this._groundAngle[e+1]-this._groundAngle[e]);return this._lerpColor(this._groundColor[e+1]??this._groundColor[this._groundColor.length-1],this._groundColor[e+2]??this._groundColor[this._groundColor.length-1],t)}return this._groundColor[this._groundColor.length-1]}}_lerpColor(e,t,n){return[e[0]+(t[0]-e[0])*n,e[1]+(t[1]-e[1])*n,e[2]+(t[2]-e[2])*n]}_buildSideCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=1-2*((t+.5)/e);for(let r=0;r<e;r++){let a=2*((r+.5)/e)-1,o=Math.sqrt(a*a+n*n+1),s=Math.acos(Math.max(-1,Math.min(1,n/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildTopCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildBottomCanvas(){let e=this._size,t=document.createElement(`canvas`);t.width=e,t.height=e;let n=t.getContext(`2d`),r=n.createImageData(e,e),i=r.data;for(let t=0;t<e;t++){let n=2*(t+.5)/e-1;for(let r=0;r<e;r++){let a=2*(r+.5)/e-1,o=Math.sqrt(a*a+1+n*n),s=Math.acos(Math.max(-1,Math.min(1,-1/o))),[c,l,u]=this._colorAtPitch(s),d=(t*e+r)*4;i[d]=Math.round(c*255),i[d+1]=Math.round(l*255),i[d+2]=Math.round(u*255),i[d+3]=255}}return n.putImageData(r,0,0),t}_buildCubeTexture(){let e=this._buildSideCanvas(),t=new c.CubeTexture([e,e,this._buildTopCanvas(),this._buildBottomCanvas(),e,e]);return t.needsUpdate=!0,t.minFilter=c.LinearMipmapLinearFilter,t.magFilter=c.LinearFilter,t}};async function Tt(e){await new Promise((t,n)=>{if(e.complete)return t();e.onload=t,e.onerror=n});let t=document.createElement(`canvas`),n=t.getContext(`2d`);t.width=e.naturalWidth,t.height=e.naturalHeight,n.drawImage(e,0,0);let r=n.getImageData(0,0,t.width,t.height).data;for(let e=3;e<r.length;e+=4)if(r[e]<255)return!0;return!1}var Et=class extends c.Loader{constructor(e){super(e),this.animateBonePositions=!0,this.animateBoneRotations=!0,this.animateBoneScales=!0}load(e,t,n,r){let i=this,a=new c.FileLoader(i.manager);a.setPath(i.path),a.setRequestHeader(i.requestHeader),a.setWithCredentials(i.withCredentials),a.load(e,function(n){try{t(i.parse(n))}catch(t){r?r(t):console.error(t),i.manager.itemError(e)}},n,r)}parse(e){function t(e){o(e)!==`HIERARCHY`&&console.error(`THREE.BVHLoader2: HIERARCHY expected.`);let t=[],i=r(e,o(e),t);o(e)!==`MOTION`&&console.error(`THREE.BVHLoader2: MOTION expected.`);let a=o(e).split(/[\s]+/),s=parseInt(a[1]);isNaN(s)&&console.error(`THREE.BVHLoader2: Failed to read number of frames.`),a=o(e).split(/[\s]+/);let c=parseFloat(a[2]);isNaN(c)&&console.error(`THREE.BVHLoader2: Failed to read frame time.`);for(let t=0;t<s;t++)a=o(e).split(/[\s]+/),n(a,t*c,i);return t}function n(e,t,r){if(r.type===`ENDSITE`)return;let i={time:t,position:new c.Vector3,rotation:new c.Quaternion,scale:new c.Vector3(1,1,1)};r.frames.push(i);let a=new c.Quaternion,o=new c.Vector3(1,0,0),s=new c.Vector3(0,1,0),l=new c.Vector3(0,0,1);for(let t=0;t<r.channels.length;t++)switch(r.channels[t]){case`Xposition`:i.position.x=parseFloat(e.shift().trim());break;case`Yposition`:i.position.y=parseFloat(e.shift().trim());break;case`Zposition`:i.position.z=parseFloat(e.shift().trim());break;case`Xrotation`:a.setFromAxisAngle(o,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Yrotation`:a.setFromAxisAngle(s,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Zrotation`:a.setFromAxisAngle(l,parseFloat(e.shift().trim())*Math.PI/180),i.rotation.multiply(a);break;case`Xscale`:i.scale.x=parseFloat(e.shift().trim());break;case`Yscale`:i.scale.y=parseFloat(e.shift().trim());break;case`Zscale`:i.scale.z=parseFloat(e.shift().trim());break;default:console.warn(`THREE.BVHLoader2: Invalid channel type.`)}for(let i=0;i<r.children.length;i++)n(e,t,r.children[i])}function r(e,t,n){let i={name:``,type:``,frames:[]};n.push(i);let a=t.split(/[\s]+/);a[0].toUpperCase()===`END`&&a[1].toUpperCase()===`SITE`?(i.type=`ENDSITE`,i.name=`ENDSITE`):(i.name=a[1],i.type=a[0].toUpperCase()),o(e)!==`{`&&console.error(`THREE.BVHLoader2: Expected opening { after type & name`),a=o(e).split(/[\s]+/),a[0]!==`OFFSET`&&console.error(`THREE.BVHLoader2: Expected OFFSET but got: `+a[0]),a.length!==4&&console.error(`THREE.BVHLoader2: Invalid number of values for OFFSET.`);let s=new c.Vector3(parseFloat(a[1]),parseFloat(a[2]),parseFloat(a[3]));if((isNaN(s.x)||isNaN(s.y)||isNaN(s.z))&&console.error(`THREE.BVHLoader2: Invalid values of OFFSET.`),i.offset=s,i.type!==`ENDSITE`){a=o(e).split(/[\s]+/),a[0]!==`CHANNELS`&&console.error(`THREE.BVHLoader2: Expected CHANNELS definition.`);let t=parseInt(a[1]);i.channels=a.splice(2,t),i.children=[]}for(;;){let t=o(e);if(t===`}`)return i;i.children.push(r(e,t,n))}}function i(e,t){let n=new c.Bone;if(t.push(n),n.position.add(e.offset),n.name=e.name,e.type!==`ENDSITE`)for(let r=0;r<e.children.length;r++)n.add(i(e.children[r],t));return n}function a(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r.type===`ENDSITE`)continue;let i=[],a=[],o=[],l=[];for(let e=0;e<r.frames.length;e++){let t=r.frames[e];i.push(t.time),a.push(t.position.x+r.offset.x),a.push(t.position.y+r.offset.y),a.push(t.position.z+r.offset.z),o.push(t.rotation.x),o.push(t.rotation.y),o.push(t.rotation.z),o.push(t.rotation.w),l.push(t.scale.x),l.push(t.scale.y),l.push(t.scale.z)}s.animateBonePositions&&t.push(new c.VectorKeyframeTrack(r.name+`.position`,i,a)),s.animateBoneRotations&&t.push(new c.QuaternionKeyframeTrack(r.name+`.quaternion`,i,o)),s.animateBoneScales&&t.push(new c.VectorKeyframeTrack(r.name+`.scale`,i,l))}return new c.AnimationClip(`animation`,-1,t)}function o(e){let t;for(;(t=e.shift().trim()).length===0;);return t}let s=this,l=t(e.split(/[\r\n]+/g)),u=[];i(l[0],u);let d=a(l);return{skeleton:new c.Skeleton(u),clip:d}}};async function Dt(e,t){let n=new c.LoadingManager;n.setURLModifier(t=>(t.startsWith(`./`)&&(t=t.substring(2)),URL.createObjectURL(_e(e,t))));let r=new yt(n);return{object3D:await r.loadAsync(t),bgTexture:r.backgroundTexture,fog:r.fog}}var Ot;async function kt(e,t){Ot||=new Et;let n=ge(e,t);return await Ot.parse(n)}function At(e){let t=e.clip.clone(),n=e.skeleton.bones[0].clone(!0),r=[];n.traverse(e=>{e instanceof c.Bone&&r.push(e)});let i=new c.Skeleton(r);return i.calculateInverses(),{clip:t,skeleton:i}}var jt=class{name;time;finishListener;duration;isPaused;playCount;interpolants;constructor(e,t){this.name=t||e.name,this.time=0,this.duration=e.duration,this.isPaused=!1,this.playCount=0,this.interpolants={};for(let t of e.tracks){let e=t.getValueSize(),n;n=t.getInterpolation()===c.InterpolateDiscrete?new c.DiscreteInterpolant(t.times,t.values,e):t.ValueTypeName===`quaternion`?new c.QuaternionLinearInterpolant(t.times,t.values,e):new c.LinearInterpolant(t.times,t.values,e),this.interpolants[t.name]=n}}init(e){}addOneselfToPhysics(e){}removeOneselfFromPhysics(e){}setPause(e){this.isPaused=e}setTime(e){this.time=e}setFinishListener(e){this.finishListener=e}update(e){this.time+=e,this.time>this.duration&&(this.time-=this.duration,this.playCount++,this.finishListener&&this.finishListener());let t={};for(let[e,n]of Object.entries(this.interpolants)){let r=e.substring(0,e.lastIndexOf(`.`)),i=e.substring(e.lastIndexOf(`.`)+1,e.length),a=t[r];a||(a={},t[r]=a);let o=n.evaluate(this.time);if(i===`position`)a.loc=new u(o[0],o[1],o[2]);else if(i===`quaternion`)a.quat=new d(o[0],o[1],o[2],o[3]);else if(i===`scale`)a.scale=new u(o[0],o[1],o[2]);else if(i===`morphTargetInfluences`){a.morphs||=[];let e=Array.from(o);a.morphs.push({name:r,vals:e})}else console.warn(`ClipMotion: update. unknown property(${i})`)}return t}},Mt={type:`audio`,autoplay:!1,loop:!1,volume:1,positional:{refDistance:1,maxDistance:1e3,rolloffFactor:1,directional:{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}}};async function Nt(){try{Pt.listener.context.state!==`running`&&await Pt.listener.context.resume()}catch{console.warn(`AudioContext resume failed. Did you call on user gesture?`)}}var Pt=class e extends W{static listener=new c.AudioListener;static audioLoader=new c.AudioLoader;ready;options;sound;constructor(e,t={}){super(),this.options=be(Mt,t),this.ready=this.asyncInit(e)}initObject(){return new c.Object3D}async asyncInit(t){if(this.options.type===`positional`){let t=new c.PositionalAudio(e.listener);t.setRefDistance(this.options.positional.refDistance),t.setMaxDistance(this.options.positional.maxDistance),t.setRolloffFactor(this.options.positional.rolloffFactor);let n=this.options.positional.directional;t.setDirectionalCone(n.coneInnerAngle,n.coneOuterAngle,n.coneOuterGain),t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}else{let t=new c.Audio(e.listener);t.setVolume(this.options.volume),t.setLoop(this.options.loop),this.sound=t}return this.object3D.add(this.sound),new Promise(n=>{e.audioLoader.load(t,e=>{this.sound&&this.sound.setBuffer(e),n(this)})})}play(){this.sound?.stop(),this.sound?.play()}stop(){this.sound?.stop()}},Ft=class{isDummy=!0;skeleton=new c.Skeleton([new c.Bone]);clip=new c.AnimationClip(`dummy`)},It={},Lt={},Rt=class extends je{loop;sound;soundLoop;soundContinue;backgroundTexture;fog;constructor(e,t,n,r,i=!1,a=!0,o,s){super(e,t),this.loop=n,this.sound=r,this.soundLoop=i,this.soundContinue=a,this.backgroundTexture=o,this.fog=s}enable(e,t){super.enable(e,t),this.sound&&(this.sound.play(),this.loop&&!this.soundContinue&&this.motion.setFinishListener(()=>{this.sound?.play()}),this.loop&&!this.soundLoop&&this.motion.setFinishListener(()=>{this.sound?.play()})),t&&(this.backgroundTexture&&(t.scene.background=this.backgroundTexture,t.scene.environment=this.backgroundTexture),this.fog&&(t.scene.fog=this.fog))}disable(e,t){super.disable(e,t),this.sound&&(this.loop&&this.sound.stop(),this.soundContinue||this.sound.stop(),this.motion.setFinishListener=()=>{})}},zt=class extends Me{comment=null;tags=[];profiles=[];thumbnails=[];rdf=null;htmlfile=``;constructor(e){super(e)}async asyncInit(e){let t=await he(e),n=new DOMParser,r=ge(t,`CATALOG.XML`),i=n.parseFromString(r,`application/xml`);if(i.querySelector(`parsererror`))return console.error(`Acerola3D.asyncInit(): CATALOG.XML parse error.`),this;let a=`http://acerola3d.sourceforge.jp/a3/catalog`,o=i.getElementsByTagNameNS(a,`a3`),s=i.getElementsByTagNameNS(a,`c`);s[0]&&(this.comment=s[0].textContent);let l=i.getElementsByTagNameNS(a,`tag`);Array.from(l).forEach(e=>{let t=e.getAttribute(`name`);t&&this.tags.push(t)});let d=i.getElementsByTagNameNS(a,`profile`);Array.from(d).forEach(e=>{let t=e.getAttribute(`uri`);t&&this.profiles.push(t)});let f=i.getElementsByTagNameNS(a,`thumbnail`);Array.from(f).forEach(e=>{let n=e.getAttribute(`src`);if(n){let e=_e(t,n);this.thumbnails.push(e)}});let p=i.getElementsByTagNameNS(`http://www.w3.org/1999/02/22-rdf-syntax-ns#`,`RDF`);p[0]&&(this.rdf=p[0]);let m=i.getElementsByTagNameNS(a,`htmlfile`);if(m[0]){let e=m[0].getAttribute(`src`);e&&(this.htmlfile=ge(t,e))}let h=[],g=i.getElementsByTagNameNS(a,`a`),_={},v;for(let e of Array.from(g)){let n=e.getAttribute(`an`);if(n){h.push(n),v||=n;let r,i=e.getAttribute(`bvh`);if(i&&i!==`none`){let e=t.zipUrl+`!`+i;It[e]||(It[e]=await kt(t,i)),r=At(It[e]),r&&r.clip.tracks.forEach(e=>{e.setInterpolation(c.InterpolateDiscrete)})}else r=new Ft;let o={};r.skeleton.bones.forEach(e=>{o[e.name]=e});let s=e.getAttribute(`scale`),l=s?Number(s):1,d=e.getAttribute(`offset`),f=new u;if(d){let e=d.split(` `);f.set(Number(e[0]),Number(e[1]),Number(e[2]))}let p=e.getAttribute(`rot`),m=new u;if(p){let e=p.split(` `);m.set(Number(e[0]),Number(e[1]),Number(e[2]))}let g=e.getAttribute(`loop`)===`true`,y,b,x={},S=e.getElementsByTagNameNS(a,`p`);for(let e of Array.from(S)){let n=e.getAttribute(`name`),r=e.getAttribute(`wrl`);if(n&&r){let i=t.zipUrl+`!`+r;if(!Lt[i]){let e=await Dt(t,r);Lt[i]=e.object3D,e.bgTexture&&(y=e.bgTexture),e.fog&&(b=e.fog)}let a=e.getAttribute(`scale`);if(a){let e=Number(a);Lt[i].scale.set(e,e,e)}let o=e.getAttribute(`rot`);if(o){let e=o.split(` `);Lt[i].rotation.set(Number(e[0])/180*Math.PI,Number(e[1])/180*Math.PI,Number(e[2])/180*Math.PI,`ZXY`)}let s=e.getAttribute(`offset`);if(s){let e=s.split(` `);Lt[i].position.set(Number(e[0]),Number(e[1]),Number(e[2]))}x[n]=Lt[i].clone(!0)}}let C=new c.Object3D;C.add(r.skeleton.bones[0]),r instanceof Ft||Bt(C,x),Object.values(x).forEach(e=>{C.add(e)}),C.scale.set(l,l,l),m.scale(Math.PI/180),C.setRotationFromEuler(new c.Euler(m.x,m.y,m.z,`ZXY`)),C.position.add(f),C.traverse(e=>{e.userData.a3js={objectA3:this}});let w,T=!1,E=!0,D=e.getElementsByTagNameNS(a,`s`);if(D[0]){let e=D[0].getAttribute(`file`),n=D[0].getAttribute(`type`)||`PointSound`,r=D[0].getAttribute(`loop`)||`false`;T=r===`true`;let i=D[0].getAttribute(`gain`)||`1.0`,a=D[0].getAttribute(`offset`)||`0.0 0.0 0.0`,o=D[0].getAttribute(`direction`)||`0.0 0.0 1.0`;E=(D[0].getAttribute(`continue`)||`true`)===`true`;let s=a.split(` `).map(e=>Number(e)),c=new u(s[0],s[1],s[2]),l=o.split(` `).map(e=>Number(e)),d=new u(l[0],l[1],l[2]),f=n===`PointSound`||n===`ConeSound`?`positional`:`audio`,p=n===`PointSound`?{coneInnerAngle:360,coneOuterAngle:360,coneOuterGain:0}:{coneInnerAngle:30,coneOuterAngle:90,coneOuterGain:.1};if(e){let n=_e(t,e),a=URL.createObjectURL(n);w=await new Pt(a,{type:f,autoplay:!1,loop:r===`true`,volume:Number(i),positional:{directional:p}}).ready,w.setPosition(c),w.lookAt(d),URL.revokeObjectURL(a),C.add(w.object3D)}}_[n]=new Rt({root:C,bones:o,skeleton:r.skeleton},new jt(r.clip,n),g,w,T,E,y,b)}}return o[0]&&(o[0].getAttribute(`haltActionNo`)!==null&&(this.haltActionName=h[Number(o[0].getAttribute(`haltActionNo`))]),o[0].getAttribute(`walkActionNo`)!==null&&(this.walkActionName=h[Number(o[0].getAttribute(`walkActionNo`))]),o[0].getAttribute(`runActionNo`)!==null&&(this.runActionName=h[Number(o[0].getAttribute(`runActionNo`))]),o[0].getAttribute(`minWalkSpeed`)!==null&&(this.minWalkSpeed=Number(o[0].getAttribute(`minWalkSpeed`))),o[0].getAttribute(`minRunSpeed`)!==null&&(this.minRunSpeed=Number(o[0].getAttribute(`minRunSpeed`)))),v&&this.syncInit(v,_),this}};function Bt(e,t){if(ce(e)){let n=t[e.name];n&&(e.add(n),delete t[e.name])}e.children&&e.children.forEach(e=>{Bt(e,t)})}var Vt=class{scene;objects;physicsWorld=null;physicsDt=1/60;collisionListener;rapierLines;constructor(){this.scene=new c.Scene,this.objects=[],H.isInitialized&&(this.physicsWorld=H.createWorld({gravity:{x:0,y:-9.81,z:0},timestep:this.physicsDt}))}add(e){if(this.scene.add(e.object3D),this.objects.push(e),e.scene=this,this.physicsWorld&&(e.addOneselfToPhysics(this.physicsWorld),e instanceof Me))for(let t of Object.values(e.actions))t.motion.addOneselfToPhysics(this.physicsWorld);e instanceof zt&&e.currentAction instanceof Rt&&(e.currentAction.backgroundTexture&&(this.scene.background=e.currentAction.backgroundTexture,this.scene.environment=e.currentAction.backgroundTexture),e.currentAction.fog&&(this.scene.fog=e.currentAction.fog))}remove(e){this.scene.remove(e.object3D);{let t=this.objects.indexOf(e);this.objects[t]=this.objects[this.objects.length-1],this.objects.pop()}if(e.scene=void 0,this.physicsWorld&&(e.removeOneselfFromPhysics(this.physicsWorld),e instanceof Me))for(let t of Object.values(e.actions))t.motion.removeOneselfFromPhysics(this.physicsWorld);e instanceof Me&&e.currentAction instanceof Rt&&(e.currentAction.backgroundTexture&&(this.scene.background=null,this.scene.environment=null),e.currentAction.fog&&(this.scene.fog=null))}removeAll(){[...this.objects].forEach(e=>{this.remove(e)})}setCollisionListener(e){this.collisionListener=e}update(e){if(this.physicsWorld){this.physicsWorld.update(e);let t=this.physicsWorld.getCollisions();if(t.forEach(e=>{e.objectA.handleCollision(e.objectB,e.started,e.partOfA,e.partOfB),e.objectB.handleCollision(e.objectA,e.started,e.partOfB,e.partOfA)}),this.collisionListener&&t.length>0&&this.collisionListener(t),this.rapierLines&&this.physicsWorld instanceof z){let{vertices:e,colors:t}=this.physicsWorld.world.debugRender();this.rapierLines.geometry.setAttribute(`position`,new c.BufferAttribute(e,3)),this.rapierLines.geometry.setAttribute(`color`,new c.BufferAttribute(t,4)),this.rapierLines.geometry.computeBoundingSphere()}}for(let t of this.objects)t.update(e)}setPhysicsDebugMode(e){e?(this.rapierLines=new c.LineSegments(new c.BufferGeometry,new c.LineBasicMaterial({vertexColors:!0})),this.scene.add(this.rapierLines)):this.rapierLines&&=(this.scene.remove(this.rapierLines),void 0)}},Ht=class extends W{view;setView(e){this.view=e}lookAt(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuat(a)}lookAtNow(e,t,n){let r=new u;typeof e==`number`?r.set(e,t,n):e instanceof W?e.getPosition(r):r.set(e);let i=this.upVector?this.upVector:W.defaultUpVector,a=p(this.getPosition(),r,i);a.mul(i.x,i.y,i.z,0),this.setQuatNow(a)}},Ut=class{view;setView(e){this.view=e}update(e){}activate(){}deactivate(){}keyDown(e){}keyUp(e){}keyPress(e){}mouseDown(e){}mouseUp(e){}mouseMove(e){}mouseClick(e){}mouseEnter(e){}mouseLeave(e){}mouseWheel(e){}touchStart(e){}touchEnd(e){}touchMove(e){}touchCancel(e){}},Wt=class extends Ut{lastMousePosition;dx=0;dy=0;isLeftDown=!1;isRightDown=!1;ctrlKey=!1;deltaY=0;target;constructor(e,t,n){super(),this.lastMousePosition={x:0,y:0},typeof e==`number`?this.target=new u(e,t,n):this.target=new u(e)}update(e){if(!this.view)return;let t=this.view.camera.getPosition(),n=this.view.camera.getQuat();if(this.isLeftDown&&!this.ctrlKey){let e=.01,r=Math.sin(-this.dx*e),i=Math.cos(-this.dx*e),a=Math.sin(-this.dy*e),o=Math.cos(-this.dy*e),s=new u(1,0,0).apply(n),c=new u(0,1,0).apply(n),l=new d(s.x*a,s.y*a,s.z*a,o),f=new d(c.x*r,c.y*r,c.z*r,i),m=new u(t);m.sub(this.target),m.apply(l),m.apply(f),m.add(this.target),t.set(m);let h=p(t,this.target,new u(0,1,0));h.mul(new d(0,1,0,0)),n.set(h)}else if(this.isLeftDown){U.v0.set(this.target),U.v0.sub(t);let e=.005*U.v0.length(),r=new u(1,0,0).apply(n).scale(-this.dx*e),i=new u(0,1,0).apply(n).scale(this.dy*e);t.add(r),t.add(i),this.target.add(r),this.target.add(i)}if(this.deltaY!==0){let e=new u(this.target).sub(t);this.deltaY>0?e.scale(.05):this.deltaY<0&&e.scale(-.05),t.add(e)}this.view.camera.setPosition(t),this.view.camera.setQuat(n),this.dx=0,this.dy=0,this.deltaY=0}mouseDown(e){e.button===0?(this.isLeftDown=!0,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY):e.button===2&&(this.isRightDown=!0,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY)}mouseMove(e){this.dx+=e.clientX-this.lastMousePosition.x,this.dy+=e.clientY-this.lastMousePosition.y,this.ctrlKey=e.ctrlKey,this.lastMousePosition.x=e.clientX,this.lastMousePosition.y=e.clientY}mouseUp(e){e.button===0?this.isLeftDown=!1:e.button===2&&(this.isRightDown=!1)}mouseWheel(e){this.deltaY=e.deltaY}},Gt={speed:.1,angSpeed:.01},Kt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextLoc;_avatarNextQuat;_velY;constructor(e,t){super(),this.options={...Gt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextLoc=new u,this._avatarNextQuat=new d,this._velY=0}keyDown(e){e.code===`KeyW`?this._keyW=!0:e.code===`KeyA`?this._keyA=!0:e.code===`KeyS`?this._keyS=!0:e.code===`KeyD`?this._keyD=!0:e.code===`ArrowLeft`?this._keyLeft=!0:e.code===`ArrowRight`?this._keyRight=!0:e.code===`Space`&&(this._keySpace=!0)}keyUp(e){e.code===`KeyW`?this._keyW=!1:e.code===`KeyA`?this._keyA=!1:e.code===`KeyS`?this._keyS=!1:e.code===`KeyD`?this._keyD=!1:e.code===`ArrowLeft`?this._keyLeft=!1:e.code===`ArrowRight`?this._keyRight=!1:e.code===`Space`&&(this._keySpace=!1)}update(e){let t=this._avatar,n=new v;n.set(t);let r=t.getUnitVecZ().scale(this.options.speed),i=t.getUnitVecX().scale(this.options.speed);this._avatarNextLoc.set(n.loc),this._avatarNextQuat.set(n.quat),this._keyW&&this._avatarNextLoc.add(r),this._keyA&&this._avatarNextLoc.add(i),this._keyS&&this._avatarNextLoc.sub(r),this._keyD&&this._avatarNextLoc.sub(i),this._velY+=-9.8*e*.1,t.isGrounded()&&(this._velY=0,this._keySpace&&(this._velY=.5)),this._avatarNextLoc.add(0,this._velY,0),this._keyLeft&&(U.v0.set(0,this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),this._keyRight&&(U.v0.set(0,-this.options.angSpeed,0),this._avatarNextQuat.mul(m(U.v0,`ZXY`,U.q0))),t.setPosition(this._avatarNextLoc),t.setQuat(this._avatarNextQuat)}},qt={speed:5,angSpeed:.3,jumpSpeed:15},Jt=class extends Ut{options;_avatar;_keyW;_keyA;_keyS;_keyD;_keyLeft;_keyRight;_keySpace;_avatarNextVel;_avatarNextAngVel;_velY;constructor(e,t){super(),this.options={...qt,...t},this._avatar=e,this._keyW=this._keyA=this._keyS=this._keyD=!1,this._keyLeft=this._keyRight=!1,this._keySpace=!1,this._avatarNextVel=new u,this._avatarNextAngVel=new u,this._velY=0}keyDown(e){e.code===`KeyW`?this._keyW=!0:e.code===`KeyA`?this._keyA=!0:e.code===`KeyS`?this._keyS=!0:e.code===`KeyD`?this._keyD=!0:e.code===`ArrowLeft`?this._keyLeft=!0:e.code===`ArrowRight`?this._keyRight=!0:e.code===`Space`&&(this._keySpace=!0)}keyUp(e){e.code===`KeyW`?this._keyW=!1:e.code===`KeyA`?this._keyA=!1:e.code===`KeyS`?this._keyS=!1:e.code===`KeyD`?this._keyD=!1:e.code===`ArrowLeft`?this._keyLeft=!1:e.code===`ArrowRight`?this._keyRight=!1:e.code===`Space`&&(this._keySpace=!1)}update(e){let t=this._avatar;new v().set(t);let n=t.getUnitVecZ().scale(this.options.speed),r=t.getUnitVecX().scale(this.options.speed);this._avatarNextVel.set(0,0,0),this._avatarNextAngVel.set(0,0,0),this._keyW&&this._avatarNextVel.add(n),this._keyA&&this._avatarNextVel.add(r),this._keyS&&this._avatarNextVel.sub(n),this._keyD&&this._avatarNextVel.sub(r),this._velY+=-9.8*e,t.isGrounded()&&(this._velY=0,this._keySpace&&(this._velY=this.options.jumpSpeed)),this._avatarNextVel.add(0,this._velY,0),this._keyLeft&&this._avatarNextAngVel.add(0,this.options.angSpeed,0),this._keyRight&&this._avatarNextAngVel.add(0,-this.options.angSpeed,0),t.setLinearVelocity(this._avatarNextVel),t.setAngularVelocity(this._avatarNextAngVel)}},Yt=class{scene;camera;controller;constructor(e){e.setView(this),this.camera=e,this.camera.setAudioListener(Pt.listener),this.camera.setPosition(0,0,3),this.scene=new Vt,this.scene.scene.add(this.camera.object3D),this.controller=new Wt(0,0,0),this.controller.setView(this),this.controller.activate()}replaceScene(e){this.scene.scene.remove(this.camera.object3D),e.scene.add(this.camera.object3D);let t=this.scene;return this.scene=e,t}updateScene(e){this.scene.update(e),this.controller?.update(e),this.camera.update(e)}setController(e){this.controller.deactivate(),this.controller=e,this.controller.setView(this),this.controller.activate()}worldToScreen(e){throw Error(`BaseViewはworldToScreen()は実装していません`)}screenToWorld(e,t,n){throw Error(`BaseViewはscreenToWorld()は実装していません`)}cameraToScreen(e){throw Error(`BaseViewはcameraToScreen()は実装していません`)}screenToCamera(e,t,n){throw Error(`BaseViewはscreenToCamera()は実装していません`)}async waitForRender(){throw Error(`BaseViewはwaitForRender()は実装していません`)}setShadowMap(e){throw Error(`BaseViewはsetShadowMap()は実装していません`)}},Xt=class extends Ht{camera;headLight;constructor(e){super(),this.camera=e,this.headLight=new c.SpotLight(16777215,1,0,Math.PI/3,0,0),this.headLight.position.set(0,0,0);let t=new c.Object3D;t.position.set(0,0,-10),this.headLight.target=t,this.object3D.add(this.camera),this.object3D.add(this.headLight),this.object3D.add(t)}initObject(){return new c.Object3D}setAudioListener(e){this.camera.add(e)}getHeadLight(){return this.headLight}setAspect(e){F(this.camera)&&(this.camera.aspect=e,this.camera.updateProjectionMatrix())}setHeadLight(e){e?this.headLight.intensity=1:this.headLight.intensity=0}calcNDC(e){let t=new c.Vector3(e.x,e.y,e.z);return t.project(this.camera),{x:t.x,y:t.y}}},Zt=class extends c.Object3D{constructor(e=document.createElement(`div`)){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position=`absolute`,this.element.style.userSelect=`none`,this.element.setAttribute(`draggable`,!1),this.center=new c.Vector2(.5,.5),this.addEventListener(`removed`,function(){this.traverse(function(e){e.element&&e.element instanceof e.element.ownerDocument.defaultView.Element&&e.element.parentNode!==null&&e.element.remove()})})}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this.center=e.center,this}},Qt=new c.Vector3,$t=new c.Matrix4,en=new c.Matrix4,tn=new c.Vector3,nn=new c.Vector3,rn=class{constructor(e={}){let t=this,n,r,i,a,o={objects:new WeakMap},s=e.element===void 0?document.createElement(`div`):e.element;s.style.overflow=`hidden`,this.domElement=s,this.sortObjects=!0,this.getSize=function(){return{width:n,height:r}},this.render=function(e,t){e.matrixWorldAutoUpdate===!0&&e.updateMatrixWorld(),t.parent===null&&t.matrixWorldAutoUpdate===!0&&t.updateMatrixWorld(),$t.copy(t.matrixWorldInverse),en.multiplyMatrices(t.projectionMatrix,$t),l(e,e,t),this.sortObjects&&f(e)},this.setSize=function(e,t){n=e,r=t,i=n/2,a=r/2,s.style.width=e+`px`,s.style.height=t+`px`};function c(e){e.isCSS2DObject&&(e.element.style.display=`none`);for(let t=0,n=e.children.length;t<n;t++)c(e.children[t])}function l(e,n,r){if(e.visible===!1){c(e);return}if(e.isCSS2DObject){Qt.setFromMatrixPosition(e.matrixWorld),Qt.applyMatrix4(en);let c=Qt.z>=-1&&Qt.z<=1&&e.layers.test(r.layers)===!0,l=e.element;l.style.display=c===!0?``:`none`,c===!0&&(e.onBeforeRender(t,n,r),l.style.transform=`translate(`+-100*e.center.x+`%,`+-100*e.center.y+`%)translate(`+(Qt.x*i+i)+`px,`+(-Qt.y*a+a)+`px)`,l.parentNode!==s&&s.appendChild(l),e.onAfterRender(t,n,r));let d={distanceToCameraSquared:u(r,e)};o.objects.set(e,d)}for(let t=0,i=e.children.length;t<i;t++)l(e.children[t],n,r)}function u(e,t){return tn.setFromMatrixPosition(e.matrixWorld),nn.setFromMatrixPosition(t.matrixWorld),tn.distanceToSquared(nn)}function d(e){let t=[];return e.traverseVisible(function(e){e.isCSS2DObject&&t.push(e)}),t}function f(e){let t=d(e).sort(function(e,t){return e.renderOrder===t.renderOrder?o.objects.get(e).distanceToCameraSquared-o.objects.get(t).distanceToCameraSquared:t.renderOrder-e.renderOrder}),n=t.length;for(let e=0,r=t.length;e<r;e++)t[e].element.style.zIndex=n-e}}};function an(e,t){if(t===c.TrianglesDrawMode)return console.warn(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles.`),e;if(t===c.TriangleFanDrawMode||t===c.TriangleStripDrawMode){let n=e.getIndex();if(n===null){let t=[],r=e.getAttribute(`position`);if(r!==void 0){for(let e=0;e<r.count;e++)t.push(e);e.setIndex(t),n=e.getIndex()}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.`),e}let r=n.count-2,i=[];if(t===c.TriangleFanDrawMode)for(let e=1;e<=r;e++)i.push(n.getX(0)),i.push(n.getX(e)),i.push(n.getX(e+1));else for(let e=0;e<r;e++)e%2==0?(i.push(n.getX(e)),i.push(n.getX(e+1)),i.push(n.getX(e+2))):(i.push(n.getX(e+2)),i.push(n.getX(e+1)),i.push(n.getX(e)));i.length/3!==r&&console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.`);let a=e.clone();return a.setIndex(i),a.clearGroups(),a}else return console.error(`THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:`,t),e}function on(e){let t=new Map,n=new Map,r=e.clone();return sn(e,r,function(e,r){t.set(r,e),n.set(e,r)}),r.traverse(function(e){if(!e.isSkinnedMesh)return;let r=e,i=t.get(e),a=i.skeleton.bones;r.skeleton=i.skeleton.clone(),r.bindMatrix.copy(i.bindMatrix),r.skeleton.bones=a.map(function(e){return n.get(e)}),r.bind(r.skeleton,r.bindMatrix)}),r}function sn(e,t,n){n(e,t);for(let r=0;r<e.children.length;r++)sn(e.children[r],t.children[r],n)}var cn=class extends c.Loader{constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new pn(e)}),this.register(function(e){return new mn(e)}),this.register(function(e){return new Cn(e)}),this.register(function(e){return new wn(e)}),this.register(function(e){return new Tn(e)}),this.register(function(e){return new gn(e)}),this.register(function(e){return new _n(e)}),this.register(function(e){return new vn(e)}),this.register(function(e){return new yn(e)}),this.register(function(e){return new fn(e)}),this.register(function(e){return new bn(e)}),this.register(function(e){return new hn(e)}),this.register(function(e){return new Sn(e)}),this.register(function(e){return new xn(e)}),this.register(function(e){return new un(e)}),this.register(function(e){return new En(e,Z.EXT_MESHOPT_COMPRESSION)}),this.register(function(e){return new En(e,Z.KHR_MESHOPT_COMPRESSION)}),this.register(function(e){return new Dn(e)})}load(e,t,n,r){let i=this,a;if(this.resourcePath!==``)a=this.resourcePath;else if(this.path!==``){let t=c.LoaderUtils.extractUrlBase(e);a=c.LoaderUtils.resolveURL(t,this.path)}else a=c.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let o=function(t){r?r(t):console.error(t),i.manager.itemError(e),i.manager.itemEnd(e)},s=new c.FileLoader(this.manager);s.setPath(this.path),s.setResponseType(`arraybuffer`),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,function(n){try{i.parse(n,a,function(n){t(n),i.manager.itemEnd(e)},o)}catch(e){o(e)}},n,o)}setDRACOLoader(e){return this.dracoLoader=e,this}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return this.pluginCallbacks.indexOf(e)===-1&&this.pluginCallbacks.push(e),this}unregister(e){return this.pluginCallbacks.indexOf(e)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,n,r){let i,a={},o={},s=new TextDecoder;if(typeof e==`string`)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(s.decode(new Uint8Array(e,0,4))===On){try{a[Z.KHR_BINARY_GLTF]=new jn(e)}catch(e){r&&r(e);return}i=JSON.parse(a[Z.KHR_BINARY_GLTF].content)}else i=JSON.parse(s.decode(e));else i=e;if(i.asset===void 0||i.asset.version[0]<2){r&&r(Error(`THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.`));return}let c=new nr(i,{path:t||this.resourcePath||``,crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});c.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](c);t.name||console.error(`THREE.GLTFLoader: Invalid plugin found: missing name`),o[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],n=i.extensionsRequired||[];switch(t){case Z.KHR_MATERIALS_UNLIT:a[t]=new dn;break;case Z.KHR_DRACO_MESH_COMPRESSION:a[t]=new Mn(i,this.dracoLoader);break;case Z.KHR_TEXTURE_TRANSFORM:a[t]=new Nn;break;case Z.KHR_MESH_QUANTIZATION:a[t]=new Pn;break;default:n.indexOf(t)>=0&&o[t]===void 0&&console.warn(`THREE.GLTFLoader: Unknown extension "`+t+`".`)}}c.setExtensions(a),c.setPlugins(o),c.parse(n,r)}parseAsync(e,t){let n=this;return new Promise(function(r,i){n.parse(e,t,r,i)})}};function ln(){let e={};return{get:function(t){return e[t]},add:function(t,n){e[t]=n},remove:function(t){delete e[t]},removeAll:function(){e={}}}}function X(e,t,n){let r=e.json.materials[t];return r.extensions&&r.extensions[n]?r.extensions[n]:null}var Z={KHR_BINARY_GLTF:`KHR_binary_glTF`,KHR_DRACO_MESH_COMPRESSION:`KHR_draco_mesh_compression`,KHR_LIGHTS_PUNCTUAL:`KHR_lights_punctual`,KHR_MATERIALS_CLEARCOAT:`KHR_materials_clearcoat`,KHR_MATERIALS_DISPERSION:`KHR_materials_dispersion`,KHR_MATERIALS_IOR:`KHR_materials_ior`,KHR_MATERIALS_SHEEN:`KHR_materials_sheen`,KHR_MATERIALS_SPECULAR:`KHR_materials_specular`,KHR_MATERIALS_TRANSMISSION:`KHR_materials_transmission`,KHR_MATERIALS_IRIDESCENCE:`KHR_materials_iridescence`,KHR_MATERIALS_ANISOTROPY:`KHR_materials_anisotropy`,KHR_MATERIALS_UNLIT:`KHR_materials_unlit`,KHR_MATERIALS_VOLUME:`KHR_materials_volume`,KHR_TEXTURE_BASISU:`KHR_texture_basisu`,KHR_TEXTURE_TRANSFORM:`KHR_texture_transform`,KHR_MESH_QUANTIZATION:`KHR_mesh_quantization`,KHR_MATERIALS_EMISSIVE_STRENGTH:`KHR_materials_emissive_strength`,EXT_MATERIALS_BUMP:`EXT_materials_bump`,EXT_TEXTURE_WEBP:`EXT_texture_webp`,EXT_TEXTURE_AVIF:`EXT_texture_avif`,EXT_MESHOPT_COMPRESSION:`EXT_meshopt_compression`,KHR_MESHOPT_COMPRESSION:`KHR_meshopt_compression`,EXT_MESH_GPU_INSTANCING:`EXT_mesh_gpu_instancing`},un=class{constructor(e){this.parser=e,this.name=Z.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n];r.extensions&&r.extensions[this.name]&&r.extensions[this.name].light!==void 0&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}_loadLight(e){let t=this.parser,n=`light:`+e,r=t.cache.get(n);if(r)return r;let i=t.json,a=((i.extensions&&i.extensions[this.name]||{}).lights||[])[e],o,s=new c.Color(16777215);a.color!==void 0&&s.setRGB(a.color[0],a.color[1],a.color[2],c.LinearSRGBColorSpace);let l=a.range===void 0?0:a.range;switch(a.type){case`directional`:o=new c.DirectionalLight(s),o.target.position.set(0,0,-1),o.add(o.target);break;case`point`:o=new c.PointLight(s),o.distance=l;break;case`spot`:o=new c.SpotLight(s),o.distance=l,a.spot=a.spot||{},a.spot.innerConeAngle=a.spot.innerConeAngle===void 0?0:a.spot.innerConeAngle,a.spot.outerConeAngle=a.spot.outerConeAngle===void 0?Math.PI/4:a.spot.outerConeAngle,o.angle=a.spot.outerConeAngle,o.penumbra=1-a.spot.innerConeAngle/a.spot.outerConeAngle,o.target.position.set(0,0,-1),o.add(o.target);break;default:throw Error(`THREE.GLTFLoader: Unexpected light type: `+a.type)}return o.position.set(0,0,0),Jn(o,a),a.intensity!==void 0&&(o.intensity=a.intensity),o.name=t.createUniqueName(a.name||`light_`+e),r=Promise.resolve(o),t.cache.add(n,r),r}getDependency(e,t){if(e===`light`)return this._loadLight(t)}createNodeAttachment(e){let t=this,n=this.parser,r=n.json.nodes[e],i=(r.extensions&&r.extensions[this.name]||{}).light;return i===void 0?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}},dn=class{constructor(){this.name=Z.KHR_MATERIALS_UNLIT}getMaterialType(){return c.MeshBasicMaterial}extendParams(e,t,n){let r=[];e.color=new c.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],c.LinearSRGBColorSpace),e.opacity=t[3]}i.baseColorTexture!==void 0&&r.push(n.assignTexture(e,`map`,i.baseColorTexture,c.SRGBColorSpace))}return Promise.all(r)}},fn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||n.emissiveStrength!==void 0&&(t.emissiveIntensity=n.emissiveStrength),Promise.resolve()}},pn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_CLEARCOAT}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(n.clearcoatFactor!==void 0&&(t.clearcoat=n.clearcoatFactor),n.clearcoatTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatMap`,n.clearcoatTexture)),n.clearcoatRoughnessFactor!==void 0&&(t.clearcoatRoughness=n.clearcoatRoughnessFactor),n.clearcoatRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`clearcoatRoughnessMap`,n.clearcoatRoughnessTexture)),n.clearcoatNormalTexture!==void 0&&(r.push(this.parser.assignTexture(t,`clearcoatNormalMap`,n.clearcoatNormalTexture)),n.clearcoatNormalTexture.scale!==void 0)){let e=n.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new c.Vector2(e,e)}return Promise.all(r)}},mn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_DISPERSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null||(t.dispersion=n.dispersion===void 0?0:n.dispersion),Promise.resolve()}},hn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IRIDESCENCE}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.iridescenceFactor!==void 0&&(t.iridescence=n.iridescenceFactor),n.iridescenceTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceMap`,n.iridescenceTexture)),n.iridescenceIor!==void 0&&(t.iridescenceIOR=n.iridescenceIor),t.iridescenceThicknessRange===void 0&&(t.iridescenceThicknessRange=[100,400]),n.iridescenceThicknessMinimum!==void 0&&(t.iridescenceThicknessRange[0]=n.iridescenceThicknessMinimum),n.iridescenceThicknessMaximum!==void 0&&(t.iridescenceThicknessRange[1]=n.iridescenceThicknessMaximum),n.iridescenceThicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`iridescenceThicknessMap`,n.iridescenceThicknessTexture)),Promise.all(r)}},gn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SHEEN}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];if(t.sheenColor=new c.Color(0,0,0),t.sheenRoughness=0,t.sheen=1,n.sheenColorFactor!==void 0){let e=n.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return n.sheenRoughnessFactor!==void 0&&(t.sheenRoughness=n.sheenRoughnessFactor),n.sheenColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenColorMap`,n.sheenColorTexture,c.SRGBColorSpace)),n.sheenRoughnessTexture!==void 0&&r.push(this.parser.assignTexture(t,`sheenRoughnessMap`,n.sheenRoughnessTexture)),Promise.all(r)}},_n=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_TRANSMISSION}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.transmissionFactor!==void 0&&(t.transmission=n.transmissionFactor),n.transmissionTexture!==void 0&&r.push(this.parser.assignTexture(t,`transmissionMap`,n.transmissionTexture)),Promise.all(r)}},vn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_VOLUME}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.thickness=n.thicknessFactor===void 0?0:n.thicknessFactor,n.thicknessTexture!==void 0&&r.push(this.parser.assignTexture(t,`thicknessMap`,n.thicknessTexture)),t.attenuationDistance=n.attenuationDistance||1/0;let i=n.attenuationColor||[1,1,1];return t.attenuationColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),Promise.all(r)}},yn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_IOR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);return n===null?Promise.resolve():(t.ior=n.ior===void 0?1.5:n.ior,t.ior===0&&(t.ior=1e3),Promise.resolve())}},bn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_SPECULAR}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];t.specularIntensity=n.specularFactor===void 0?1:n.specularFactor,n.specularTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularIntensityMap`,n.specularTexture));let i=n.specularColorFactor||[1,1,1];return t.specularColor=new c.Color().setRGB(i[0],i[1],i[2],c.LinearSRGBColorSpace),n.specularColorTexture!==void 0&&r.push(this.parser.assignTexture(t,`specularColorMap`,n.specularColorTexture,c.SRGBColorSpace)),Promise.all(r)}},xn=class{constructor(e){this.parser=e,this.name=Z.EXT_MATERIALS_BUMP}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return t.bumpScale=n.bumpFactor===void 0?1:n.bumpFactor,n.bumpTexture!==void 0&&r.push(this.parser.assignTexture(t,`bumpMap`,n.bumpTexture)),Promise.all(r)}},Sn=class{constructor(e){this.parser=e,this.name=Z.KHR_MATERIALS_ANISOTROPY}getMaterialType(e){return X(this.parser,e,this.name)===null?null:c.MeshPhysicalMaterial}extendMaterialParams(e,t){let n=X(this.parser,e,this.name);if(n===null)return Promise.resolve();let r=[];return n.anisotropyStrength!==void 0&&(t.anisotropy=n.anisotropyStrength),n.anisotropyRotation!==void 0&&(t.anisotropyRotation=n.anisotropyRotation),n.anisotropyTexture!==void 0&&r.push(this.parser.assignTexture(t,`anisotropyMap`,n.anisotropyTexture)),Promise.all(r)}},Cn=class{constructor(e){this.parser=e,this.name=Z.KHR_TEXTURE_BASISU}loadTexture(e){let t=this.parser,n=t.json,r=n.textures[e];if(!r.extensions||!r.extensions[this.name])return null;let i=r.extensions[this.name],a=t.options.ktx2Loader;if(!a){if(n.extensionsRequired&&n.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures`);return null}return t.loadTextureImage(e,i.source,a)}},wn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_WEBP}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},Tn=class{constructor(e){this.parser=e,this.name=Z.EXT_TEXTURE_AVIF}loadTexture(e){let t=this.name,n=this.parser,r=n.json,i=r.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],o=r.images[a.source],s=n.textureLoader;if(o.uri){let e=n.options.manager.getHandler(o.uri);e!==null&&(s=e)}return n.loadTextureImage(e,a.source,s)}},En=class{constructor(e,t){this.name=t,this.parser=e}loadBufferView(e){let t=this.parser.json,n=t.bufferViews[e];if(n.extensions&&n.extensions[this.name]){let e=n.extensions[this.name],r=this.parser.getDependency(`buffer`,e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw Error(`THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files`);return null}return r.then(function(t){let n=e.byteOffset||0,r=e.byteLength||0,a=e.count,o=e.byteStride,s=new Uint8Array(t,n,r);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,o,s,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*o);return i.decodeGltfBuffer(new Uint8Array(t),a,o,s,e.mode,e.filter),t})})}else return null}},Dn=class{constructor(e){this.name=Z.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||n.mesh===void 0)return null;let r=t.meshes[n.mesh];for(let e of r.primitives)if(e.mode!==Q.TRIANGLES&&e.mode!==Q.TRIANGLE_STRIP&&e.mode!==Q.TRIANGLE_FAN&&e.mode!==void 0)return null;let i=n.extensions[this.name].attributes,a=[],o={};for(let e in i)a.push(this.parser.getDependency(`accessor`,i[e]).then(t=>(o[e]=t,o[e])));return a.length<1?null:(a.push(this.parser.createNodeMesh(e)),Promise.all(a).then(e=>{let t=e.pop(),n=t.isGroup?t.children:[t],r=e[0].count,i=[];for(let e of n){let t=new c.Matrix4,n=new c.Vector3,a=new c.Quaternion,s=new c.Vector3(1,1,1),l=new c.InstancedMesh(e.geometry,e.material,r);for(let e=0;e<r;e++)o.TRANSLATION&&n.fromBufferAttribute(o.TRANSLATION,e),o.ROTATION&&a.fromBufferAttribute(o.ROTATION,e),o.SCALE&&s.fromBufferAttribute(o.SCALE,e),l.setMatrixAt(e,t.compose(n,a,s));for(let t in o)if(t===`_COLOR_0`){let e=o[t];l.instanceColor=new c.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else t!==`TRANSLATION`&&t!==`ROTATION`&&t!==`SCALE`&&e.geometry.setAttribute(t,o[t]);c.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}},On=`glTF`,kn=12,An={JSON:1313821514,BIN:5130562},jn=class{constructor(e){this.name=Z.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,kn),n=new TextDecoder;if(this.header={magic:n.decode(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==On)throw Error(`THREE.GLTFLoader: Unsupported glTF-Binary header.`);if(this.header.version<2)throw Error(`THREE.GLTFLoader: Legacy binary file detected.`);let r=this.header.length-kn,i=new DataView(e,kn),a=0;for(;a<r;){let t=i.getUint32(a,!0);a+=4;let r=i.getUint32(a,!0);if(a+=4,r===An.JSON){let r=new Uint8Array(e,kn+a,t);this.content=n.decode(r)}else if(r===An.BIN){let n=kn+a;this.body=e.slice(n,n+t)}a+=t}if(this.content===null)throw Error(`THREE.GLTFLoader: JSON content not found.`)}},Mn=class{constructor(e,t){if(!t)throw Error(`THREE.GLTFLoader: No DRACOLoader instance provided.`);this.name=Z.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}decodePrimitive(e,t){let n=this.json,r=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,o={},s={},l={};for(let e in a){let t=Hn[e]||e.toLowerCase();o[t]=a[e]}for(let t in e.attributes){let r=Hn[t]||t.toLowerCase();if(a[t]!==void 0){let i=n.accessors[e.attributes[t]];l[r]=Rn[i.componentType].name,s[r]=i.normalized===!0}}return t.getDependency(`bufferView`,i).then(function(e){return new Promise(function(t,n){r.decodeDracoFile(e,function(e){for(let t in e.attributes){let n=e.attributes[t],r=s[t];r!==void 0&&(n.normalized=r)}t(e)},o,l,c.LinearSRGBColorSpace,n)})})}},Nn=class{constructor(){this.name=Z.KHR_TEXTURE_TRANSFORM}extendTexture(e,t){return(t.texCoord===void 0||t.texCoord===e.channel)&&t.offset===void 0&&t.rotation===void 0&&t.scale===void 0?e:(e=e.clone(),t.texCoord!==void 0&&(e.channel=t.texCoord),t.offset!==void 0&&e.offset.fromArray(t.offset),t.rotation!==void 0&&(e.rotation=t.rotation),t.scale!==void 0&&e.repeat.fromArray(t.scale),e.needsUpdate=!0,e)}},Pn=class{constructor(){this.name=Z.KHR_MESH_QUANTIZATION}},Fn=class extends c.Interpolant{constructor(e,t,n,r){super(e,t,n,r)}copySampleValue_(e){let t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,i=e*r*3+r;for(let e=0;e!==r;e++)t[e]=n[i+e];return t}interpolate_(e,t,n,r){let i=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=o*2,c=o*3,l=r-t,u=(n-t)/l,d=u*u,f=d*u,p=e*c,m=p-c,h=-2*f+3*d,g=f-d,_=1-h,v=g-d+u;for(let e=0;e!==o;e++){let t=a[m+e+o],n=a[m+e+s]*l,r=a[p+e+o],c=a[p+e]*l;i[e]=_*t+v*n+h*r+g*c}return i}},In=new c.Quaternion,Ln=class extends Fn{interpolate_(e,t,n,r){let i=super.interpolate_(e,t,n,r);return In.fromArray(i).normalize().toArray(i),i}},Q={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123},Rn={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},zn={9728:c.NearestFilter,9729:c.LinearFilter,9984:c.NearestMipmapNearestFilter,9985:c.LinearMipmapNearestFilter,9986:c.NearestMipmapLinearFilter,9987:c.LinearMipmapLinearFilter},Bn={33071:c.ClampToEdgeWrapping,33648:c.MirroredRepeatWrapping,10497:c.RepeatWrapping},Vn={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Hn={POSITION:`position`,NORMAL:`normal`,TANGENT:`tangent`,TEXCOORD_0:`uv`,TEXCOORD_1:`uv1`,TEXCOORD_2:`uv2`,TEXCOORD_3:`uv3`,COLOR_0:`color`,WEIGHTS_0:`skinWeight`,JOINTS_0:`skinIndex`},Un={scale:`scale`,translation:`position`,rotation:`quaternion`,weights:`morphTargetInfluences`},Wn={CUBICSPLINE:void 0,LINEAR:c.InterpolateLinear,STEP:c.InterpolateDiscrete},Gn={OPAQUE:`OPAQUE`,MASK:`MASK`,BLEND:`BLEND`};function Kn(e){return e.DefaultMaterial===void 0&&(e.DefaultMaterial=new c.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:c.FrontSide})),e.DefaultMaterial}function qn(e,t,n){for(let r in n.extensions)e[r]===void 0&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[r]=n.extensions[r])}function Jn(e,t){t.extras!==void 0&&(typeof t.extras==`object`?Object.assign(e.userData,t.extras):console.warn(`THREE.GLTFLoader: Ignoring primitive type .extras, `+t.extras))}function Yn(e,t,n){let r=!1,i=!1,a=!1;for(let e=0,n=t.length;e<n;e++){let n=t[e];if(n.POSITION!==void 0&&(r=!0),n.NORMAL!==void 0&&(i=!0),n.COLOR_0!==void 0&&(a=!0),r&&i&&a)break}if(!r&&!i&&!a)return Promise.resolve(e);let o=[],s=[],c=[];for(let l=0,u=t.length;l<u;l++){let u=t[l];if(r){let t=u.POSITION===void 0?e.attributes.position:n.getDependency(`accessor`,u.POSITION);o.push(t)}if(i){let t=u.NORMAL===void 0?e.attributes.normal:n.getDependency(`accessor`,u.NORMAL);s.push(t)}if(a){let t=u.COLOR_0===void 0?e.attributes.color:n.getDependency(`accessor`,u.COLOR_0);c.push(t)}}return Promise.all([Promise.all(o),Promise.all(s),Promise.all(c)]).then(function(t){let n=t[0],o=t[1],s=t[2];return r&&(e.morphAttributes.position=n),i&&(e.morphAttributes.normal=o),a&&(e.morphAttributes.color=s),e.morphTargetsRelative=!0,e})}function Xn(e,t){if(e.updateMorphTargets(),t.weights!==void 0)for(let n=0,r=t.weights.length;n<r;n++)e.morphTargetInfluences[n]=t.weights[n];if(t.extras&&Array.isArray(t.extras.targetNames)){let n=t.extras.targetNames;if(e.morphTargetInfluences.length===n.length){e.morphTargetDictionary={};for(let t=0,r=n.length;t<r;t++)e.morphTargetDictionary[n[t]]=t}else console.warn(`THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.`)}}function Zn(e){let t,n=e.extensions&&e.extensions[Z.KHR_DRACO_MESH_COMPRESSION];if(t=n?`draco:`+n.bufferView+`:`+n.indices+`:`+Qn(n.attributes):e.indices+`:`+Qn(e.attributes)+`:`+e.mode,e.targets!==void 0)for(let n=0,r=e.targets.length;n<r;n++)t+=`:`+Qn(e.targets[n]);return t}function Qn(e){let t=``,n=Object.keys(e).sort();for(let r=0,i=n.length;r<i;r++)t+=n[r]+`:`+e[n[r]]+`;`;return t}function $n(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error(`THREE.GLTFLoader: Unsupported normalized accessor component type.`)}}function er(e){return e.search(/\.jpe?g($|\?)/i)>0||e.search(/^data\:image\/jpeg/)===0?`image/jpeg`:e.search(/\.webp($|\?)/i)>0||e.search(/^data\:image\/webp/)===0?`image/webp`:e.search(/\.ktx2($|\?)/i)>0||e.search(/^data\:image\/ktx2/)===0?`image/ktx2`:`image/png`}var tr=new c.Matrix4,nr=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ln,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let n=!1,r=-1,i=!1,a=-1;if(typeof navigator<`u`&&navigator.userAgent!==void 0){let e=navigator.userAgent;n=/^((?!chrome|android).)*safari/i.test(e)===!0;let t=e.match(/Version\/(\d+)/);r=n&&t?parseInt(t[1],10):-1,i=e.indexOf(`Firefox`)>-1,a=i?e.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>`u`||n&&r<17||i&&a<98?this.textureLoader=new c.TextureLoader(this.options.manager):this.textureLoader=new c.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new c.FileLoader(this.options.manager),this.fileLoader.setResponseType(`arraybuffer`),this.options.crossOrigin===`use-credentials`&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let n=this,r=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([n.getDependencies(`scene`),n.getDependencies(`animation`),n.getDependencies(`camera`)])}).then(function(t){let a={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:n,userData:{}};return qn(i,a,r),Jn(a,r),Promise.all(n._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[];for(let n=0,r=t.length;n<r;n++){let r=t[n].joints;for(let t=0,n=r.length;t<n;t++)e[r[t]].isBone=!0}for(let t=0,r=e.length;t<r;t++){let r=e[t];r.mesh!==void 0&&(this._addNodeRef(this.meshCache,r.mesh),r.skin!==void 0&&(n[r.mesh].isSkinnedMesh=!0)),r.camera!==void 0&&this._addNodeRef(this.cameraCache,r.camera)}}_addNodeRef(e,t){t!==void 0&&(e.refs[t]===void 0&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,n){if(e.refs[t]<=1)return n;let r=n.clone(),i=(e,t)=>{let n=this.associations.get(e);n!=null&&this.associations.set(t,n);for(let[n,r]of e.children.entries())i(r,t.children[n])};return i(n,r),r.name+=`_instance_`+ e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let n=0;n<t.length;n++){let r=e(t[n]);if(r)return r}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let n=[];for(let r=0;r<t.length;r++){let i=e(t[r]);i&&n.push(i)}return n}getDependency(e,t){let n=e+`:`+t,r=this.cache.get(n);if(!r){switch(e){case`scene`:r=this.loadScene(t);break;case`node`:r=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case`mesh`:r=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case`accessor`:r=this.loadAccessor(t);break;case`bufferView`:r=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case`buffer`:r=this.loadBuffer(t);break;case`material`:r=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case`texture`:r=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case`skin`:r=this.loadSkin(t);break;case`animation`:r=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case`camera`:r=this.loadCamera(t);break;default:if(r=this._invokeOne(function(n){return n!=this&&n.getDependency&&n.getDependency(e,t)}),!r)throw Error(`Unknown type: `+e);break}this.cache.add(n,r)}return r}getDependencies(e){let t=this.cache.get(e);if(!t){let n=this,r=this.json[e+(e===`mesh`?`es`:`s`)]||[];t=Promise.all(r.map(function(t,r){return n.getDependency(e,r)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],n=this.fileLoader;if(t.type&&t.type!==`arraybuffer`)throw Error(`THREE.GLTFLoader: `+t.type+` buffer type is not supported.`);if(t.uri===void 0&&e===0)return Promise.resolve(this.extensions[Z.KHR_BINARY_GLTF].body);let r=this.options;return new Promise(function(e,i){n.load(c.LoaderUtils.resolveURL(t.uri,r.path),e,void 0,function(){i(Error(`THREE.GLTFLoader: Failed to load buffer "`+t.uri+`".`))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency(`buffer`,t.buffer).then(function(e){let n=t.byteLength||0,r=t.byteOffset||0;return e.slice(r,r+n)})}loadAccessor(e){let t=this,n=this.json,r=this.json.accessors[e];if(r.bufferView===void 0&&r.sparse===void 0){let e=Vn[r.type],t=Rn[r.componentType],n=r.normalized===!0,i=new t(r.count*e);return Promise.resolve(new c.BufferAttribute(i,e,n))}let i=[];return r.bufferView===void 0?i.push(null):i.push(this.getDependency(`bufferView`,r.bufferView)),r.sparse!==void 0&&(i.push(this.getDependency(`bufferView`,r.sparse.indices.bufferView)),i.push(this.getDependency(`bufferView`,r.sparse.values.bufferView))),Promise.all(i).then(function(e){let i=e[0],a=Vn[r.type],o=Rn[r.componentType],s=o.BYTES_PER_ELEMENT,l=s*a,u=r.byteOffset||0,d=r.bufferView===void 0?void 0:n.bufferViews[r.bufferView].byteStride,f=r.normalized===!0,p,m;if(d&&d!==l){let e=Math.floor(u/d),n=`InterleavedBuffer:`+r.bufferView+`:`+r.componentType+`:`+e+`:`+r.count,l=t.cache.get(n);l||(p=new o(i,e*d,r.count*d/s),l=new c.InterleavedBuffer(p,d/s),t.cache.add(n,l)),m=new c.InterleavedBufferAttribute(l,a,u%d/s,f)}else p=i===null?new o(r.count*a):new o(i,u,r.count*a),m=new c.BufferAttribute(p,a,f);if(r.sparse!==void 0){let t=Vn.SCALAR,n=Rn[r.sparse.indices.componentType],s=r.sparse.indices.byteOffset||0,l=r.sparse.values.byteOffset||0,u=new n(e[1],s,r.sparse.count*t),d=new o(e[2],l,r.sparse.count*a);i!==null&&(m=new c.BufferAttribute(m.array.slice(),m.itemSize,m.normalized)),m.normalized=!1;for(let e=0,t=u.length;e<t;e++){let t=u[e];if(m.setX(t,d[e*a]),a>=2&&m.setY(t,d[e*a+1]),a>=3&&m.setZ(t,d[e*a+2]),a>=4&&m.setW(t,d[e*a+3]),a>=5)throw Error(`THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.`)}m.normalized=f}return m})}loadTexture(e){let t=this.json,n=this.options,r=t.textures[e].source,i=t.images[r],a=this.textureLoader;if(i.uri){let e=n.manager.getHandler(i.uri);e!==null&&(a=e)}return this.loadTextureImage(e,r,a)}loadTextureImage(e,t,n){let r=this,i=this.json,a=i.textures[e],o=i.images[t],s=(o.uri||o.bufferView)+`:`+a.sampler;if(this.textureCache[s])return this.textureCache[s];let l=this.loadImageSource(t,n).then(function(t){t.flipY=!1,t.name=a.name||o.name||``,t.name===``&&typeof o.uri==`string`&&o.uri.startsWith(`data:image/`)===!1&&(t.name=o.uri);let n=(i.samplers||{})[a.sampler]||{};return t.magFilter=zn[n.magFilter]||c.LinearFilter,t.minFilter=zn[n.minFilter]||c.LinearMipmapLinearFilter,t.wrapS=Bn[n.wrapS]||c.RepeatWrapping,t.wrapT=Bn[n.wrapT]||c.RepeatWrapping,t.generateMipmaps=!t.isCompressedTexture&&t.minFilter!==c.NearestFilter&&t.minFilter!==c.LinearFilter,r.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[s]=l,l}loadImageSource(e,t){let n=this,r=this.json,i=this.options;if(this.sourceCache[e]!==void 0)return this.sourceCache[e].then(e=>e.clone());let a=r.images[e],o=self.URL||self.webkitURL,s=a.uri||``,l=!1;if(a.bufferView!==void 0)s=n.getDependency(`bufferView`,a.bufferView).then(function(e){l=!0;let t=new Blob([e],{type:a.mimeType});return s=o.createObjectURL(t),s});else if(a.uri===void 0)throw Error(`THREE.GLTFLoader: Image `+e+` is missing URI and bufferView`);let u=Promise.resolve(s).then(function(e){return new Promise(function(n,r){let a=n;t.isImageBitmapLoader===!0&&(a=function(e){let t=new c.Texture(e);t.needsUpdate=!0,n(t)}),t.load(c.LoaderUtils.resolveURL(e,i.path),a,void 0,r)})}).then(function(e){return l===!0&&o.revokeObjectURL(s),Jn(e,a),e.userData.mimeType=a.mimeType||er(a.uri),e}).catch(function(e){throw console.error(`THREE.GLTFLoader: Couldn't load texture`,s),e});return this.sourceCache[e]=u,u}assignTexture(e,t,n,r){let i=this;return this.getDependency(`texture`,n.index).then(function(a){if(!a)return null;if(n.texCoord!==void 0&&n.texCoord>0&&(a=a.clone(),a.channel=n.texCoord),i.extensions[Z.KHR_TEXTURE_TRANSFORM]){let e=n.extensions===void 0?void 0:n.extensions[Z.KHR_TEXTURE_TRANSFORM];if(e){let t=i.associations.get(a);a=i.extensions[Z.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return r!==void 0&&(a.colorSpace=r),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,n=e.material,r=t.attributes.tangent===void 0,i=t.attributes.color!==void 0,a=t.attributes.normal===void 0;if(e.isPoints){let e=`PointsMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.PointsMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,t.sizeAttenuation=!1,this.cache.add(e,t)),n=t}else if(e.isLine){let e=`LineBasicMaterial:`+n.uuid,t=this.cache.get(e);t||(t=new c.LineBasicMaterial,c.Material.prototype.copy.call(t,n),t.color.copy(n.color),t.map=n.map,this.cache.add(e,t)),n=t}if(r||i||a){let e=`ClonedMaterial:`+n.uuid+`:`;r&&(e+=`derivative-tangents:`),i&&(e+=`vertex-colors:`),a&&(e+=`flat-shading:`);let t=this.cache.get(e);t||(t=n.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(n))),n=t}e.material=n}getMaterialType(){return c.MeshStandardMaterial}loadMaterial(e){let t=this,n=this.json,r=this.extensions,i=n.materials[e],a,o={},s=i.extensions||{},l=[];if(s[Z.KHR_MATERIALS_UNLIT]){let e=r[Z.KHR_MATERIALS_UNLIT];a=e.getMaterialType(),l.push(e.extendParams(o,i,t))}else{let n=i.pbrMetallicRoughness||{};if(o.color=new c.Color(1,1,1),o.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;o.color.setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace),o.opacity=e[3]}n.baseColorTexture!==void 0&&l.push(t.assignTexture(o,`map`,n.baseColorTexture,c.SRGBColorSpace)),o.metalness=n.metallicFactor===void 0?1:n.metallicFactor,o.roughness=n.roughnessFactor===void 0?1:n.roughnessFactor,n.metallicRoughnessTexture!==void 0&&(l.push(t.assignTexture(o,`metalnessMap`,n.metallicRoughnessTexture)),l.push(t.assignTexture(o,`roughnessMap`,n.metallicRoughnessTexture))),a=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,o)})))}i.doubleSided===!0&&(o.side=c.DoubleSide);let u=i.alphaMode||Gn.OPAQUE;if(u===Gn.BLEND?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,u===Gn.MASK&&(o.alphaTest=i.alphaCutoff===void 0?.5:i.alphaCutoff)),i.normalTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`normalMap`,i.normalTexture)),o.normalScale=new c.Vector2(1,1),i.normalTexture.scale!==void 0)){let e=i.normalTexture.scale;o.normalScale.set(e,e)}if(i.occlusionTexture!==void 0&&a!==c.MeshBasicMaterial&&(l.push(t.assignTexture(o,`aoMap`,i.occlusionTexture)),i.occlusionTexture.strength!==void 0&&(o.aoMapIntensity=i.occlusionTexture.strength)),i.emissiveFactor!==void 0&&a!==c.MeshBasicMaterial){let e=i.emissiveFactor;o.emissive=new c.Color().setRGB(e[0],e[1],e[2],c.LinearSRGBColorSpace)}return i.emissiveTexture!==void 0&&a!==c.MeshBasicMaterial&&l.push(t.assignTexture(o,`emissiveMap`,i.emissiveTexture,c.SRGBColorSpace)),Promise.all(l).then(function(){let n=new a(o);return i.name&&(n.name=i.name),Jn(n,i),t.associations.set(n,{materials:e}),i.extensions&&qn(r,n,i),n})}createUniqueName(e){let t=c.PropertyBinding.sanitizeNodeName(e||``);return t in this.nodeNamesUsed?t+`_`+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,n=this.extensions,r=this.primitiveCache;function i(e){return n[Z.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(n){return ir(n,e,t)})}let a=[];for(let n=0,o=e.length;n<o;n++){let o=e[n],s=Zn(o),l=r[s];if(l)a.push(l.promise);else{let e;e=o.extensions&&o.extensions[Z.KHR_DRACO_MESH_COMPRESSION]?i(o):ir(new c.BufferGeometry,o,t),r[s]={primitive:o,promise:e},a.push(e)}}return Promise.all(a)}loadMesh(e){let t=this,n=this.json,r=this.extensions,i=n.meshes[e],a=i.primitives,o=[];for(let e=0,t=a.length;e<t;e++){let t=a[e].material===void 0?Kn(this.cache):this.getDependency(`material`,a[e].material);o.push(t)}return o.push(t.loadGeometries(a)),Promise.all(o).then(function(n){let o=n.slice(0,n.length-1),s=n[n.length-1],l=[];for(let n=0,u=s.length;n<u;n++){let u=s[n],d=a[n],f,p=o[n];if(d.mode===Q.TRIANGLES||d.mode===Q.TRIANGLE_STRIP||d.mode===Q.TRIANGLE_FAN||d.mode===void 0)f=i.isSkinnedMesh===!0?new c.SkinnedMesh(u,p):new c.Mesh(u,p),f.isSkinnedMesh===!0&&f.normalizeSkinWeights(),d.mode===Q.TRIANGLE_STRIP?f.geometry=an(f.geometry,c.TriangleStripDrawMode):d.mode===Q.TRIANGLE_FAN&&(f.geometry=an(f.geometry,c.TriangleFanDrawMode));else if(d.mode===Q.LINES)f=new c.LineSegments(u,p);else if(d.mode===Q.LINE_STRIP)f=new c.Line(u,p);else if(d.mode===Q.LINE_LOOP)f=new c.LineLoop(u,p);else if(d.mode===Q.POINTS)f=new c.Points(u,p);else throw Error(`THREE.GLTFLoader: Primitive mode unsupported: `+d.mode);Object.keys(f.geometry.morphAttributes).length>0&&Xn(f,i),f.name=t.createUniqueName(i.name||`mesh_`+e),Jn(f,i),d.extensions&&qn(r,f,d),t.assignFinalMaterial(f),l.push(f)}for(let n=0,r=l.length;n<r;n++)t.associations.set(l[n],{meshes:e,primitives:n});if(l.length===1)return i.extensions&&qn(r,l[0],i),l[0];let u=new c.Group;i.extensions&&qn(r,u,i),t.associations.set(u,{meshes:e});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t,n=this.json.cameras[e],r=n[n.type];if(!r){console.warn(`THREE.GLTFLoader: Missing camera parameters.`);return}return n.type===`perspective`?t=new c.PerspectiveCamera(c.MathUtils.radToDeg(r.yfov),r.aspectRatio||1,r.znear||1,r.zfar||2e6):n.type===`orthographic`&&(t=new c.OrthographicCamera(-r.xmag,r.xmag,r.ymag,-r.ymag,r.znear,r.zfar)),n.name&&(t.name=this.createUniqueName(n.name)),Jn(t,n),Promise.resolve(t)}loadSkin(e){let t=this.json.skins[e],n=[];for(let e=0,r=t.joints.length;e<r;e++)n.push(this._loadNodeShallow(t.joints[e]));return t.inverseBindMatrices===void 0?n.push(null):n.push(this.getDependency(`accessor`,t.inverseBindMatrices)),Promise.all(n).then(function(e){let n=e.pop(),r=e,i=[],a=[];for(let e=0,o=r.length;e<o;e++){let o=r[e];if(o){i.push(o);let t=new c.Matrix4;n!==null&&t.fromArray(n.array,e*16),a.push(t)}else console.warn(`THREE.GLTFLoader: Joint "%s" could not be found.`,t.joints[e])}return new c.Skeleton(i,a)})}loadAnimation(e){let t=this.json,n=this,r=t.animations[e],i=r.name?r.name:`animation_`+e,a=[],o=[],s=[],l=[],u=[];for(let e=0,t=r.channels.length;e<t;e++){let t=r.channels[e],n=r.samplers[t.sampler],i=t.target,c=i.node,d=r.parameters===void 0?n.input:r.parameters[n.input],f=r.parameters===void 0?n.output:r.parameters[n.output];i.node!==void 0&&(a.push(this.getDependency(`node`,c)),o.push(this.getDependency(`accessor`,d)),s.push(this.getDependency(`accessor`,f)),l.push(n),u.push(i))}return Promise.all([Promise.all(a),Promise.all(o),Promise.all(s),Promise.all(l),Promise.all(u)]).then(function(e){let t=e[0],a=e[1],o=e[2],s=e[3],l=e[4],u=[];for(let e=0,r=t.length;e<r;e++){let r=t[e],i=a[e],c=o[e],d=s[e],f=l[e];if(r===void 0)continue;r.updateMatrix&&r.updateMatrix();let p=n._createAnimationTracks(r,i,c,d,f);if(p)for(let e=0;e<p.length;e++)u.push(p[e])}let d=new c.AnimationClip(i,void 0,u);return Jn(d,r),d})}createNodeMesh(e){let t=this.json,n=this,r=t.nodes[e];return r.mesh===void 0?null:n.getDependency(`mesh`,r.mesh).then(function(e){let t=n._getNodeRef(n.meshCache,r.mesh,e);return r.weights!==void 0&&t.traverse(function(e){if(e.isMesh)for(let t=0,n=r.weights.length;t<n;t++)e.morphTargetInfluences[t]=r.weights[t]}),t})}loadNode(e){let t=this.json,n=this,r=t.nodes[e],i=n._loadNodeShallow(e),a=[],o=r.children||[];for(let e=0,t=o.length;e<t;e++)a.push(n.getDependency(`node`,o[e]));let s=r.skin===void 0?Promise.resolve(null):n.getDependency(`skin`,r.skin);return Promise.all([i,Promise.all(a),s]).then(function(e){let t=e[0],n=e[1],r=e[2];r!==null&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(r,tr)});for(let e=0,r=n.length;e<r;e++)t.add(n[e]);if(t.userData.pivot!==void 0&&n.length>0){let e=t.userData.pivot,r=n[0];t.pivot=new c.Vector3().fromArray(e),t.position.x-=e[0],t.position.y-=e[1],t.position.z-=e[2],r.position.set(0,0,0),delete t.userData.pivot}return t})}_loadNodeShallow(e){let t=this.json,n=this.extensions,r=this;if(this.nodeCache[e]!==void 0)return this.nodeCache[e];let i=t.nodes[e],a=i.name?r.createUniqueName(i.name):``,o=[],s=r._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return s&&o.push(s),i.camera!==void 0&&o.push(r.getDependency(`camera`,i.camera).then(function(e){return r._getNodeRef(r.cameraCache,i.camera,e)})),r._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){o.push(e)}),this.nodeCache[e]=Promise.all(o).then(function(t){let o;if(o=i.isBone===!0?new c.Bone:t.length>1?new c.Group:t.length===1?t[0]:new c.Object3D,o!==t[0])for(let e=0,n=t.length;e<n;e++)o.add(t[e]);if(i.name&&(o.userData.name=i.name,o.name=a),Jn(o,i),i.extensions&&qn(n,o,i),i.matrix!==void 0){let e=new c.Matrix4;e.fromArray(i.matrix),o.applyMatrix4(e)}else i.translation!==void 0&&o.position.fromArray(i.translation),i.rotation!==void 0&&o.quaternion.fromArray(i.rotation),i.scale!==void 0&&o.scale.fromArray(i.scale);if(!r.associations.has(o))r.associations.set(o,{});else if(i.mesh!==void 0&&r.meshCache.refs[i.mesh]>1){let e=r.associations.get(o);r.associations.set(o,{...e})}return r.associations.get(o).nodes=e,o}),this.nodeCache[e]}loadScene(e){let t=this.extensions,n=this.json.scenes[e],r=this,i=new c.Group;n.name&&(i.name=r.createUniqueName(n.name)),Jn(i,n),n.extensions&&qn(t,i,n);let a=n.nodes||[],o=[];for(let e=0,t=a.length;e<t;e++)o.push(r.getDependency(`node`,a[e]));return Promise.all(o).then(function(e){for(let t=0,n=e.length;t<n;t++){let n=e[t];n.parent===null?i.add(n):i.add(on(n))}return r.associations=(e=>{let t=new Map;for(let[e,n]of r.associations)(e instanceof c.Material||e instanceof c.Texture)&&t.set(e,n);return e.traverse(e=>{let n=r.associations.get(e);n!=null&&t.set(e,n)}),t})(i),i})}_createAnimationTracks(e,t,n,r,i){let a=[],o=e.name?e.name:e.uuid,s=[];function l(e){e.morphTargetInfluences&&s.push(e.name?e.name:e.uuid)}Un[i.path]===Un.weights?(l(e),e.isGroup&&e.children.forEach(l)):s.push(o);let u;switch(Un[i.path]){case Un.weights:u=c.NumberKeyframeTrack;break;case Un.rotation:u=c.QuaternionKeyframeTrack;break;case Un.translation:case Un.scale:u=c.VectorKeyframeTrack;break;default:switch(n.itemSize){case 1:u=c.NumberKeyframeTrack;break;default:u=c.VectorKeyframeTrack;break}break}let d=r.interpolation===void 0?c.InterpolateLinear:Wn[r.interpolation],f=this._getArrayFromAccessor(n);for(let e=0,n=s.length;e<n;e++){let n=new u(s[e]+`.`+Un[i.path],t.array,f,d);r.interpolation===`CUBICSPLINE`&&this._createCubicSplineTrackInterpolant(n),a.push(n)}return a}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=$n(t.constructor),n=new Float32Array(t.length);for(let r=0,i=t.length;r<i;r++)n[r]=t[r]*e;t=n}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof c.QuaternionKeyframeTrack?Ln:Fn)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}};function rr(e,t,n){let r=t.attributes,i=new c.Box3;if(r.POSITION!==void 0){let e=n.json.accessors[r.POSITION],t=e.min,a=e.max;if(t!==void 0&&a!==void 0){if(i.set(new c.Vector3(t[0],t[1],t[2]),new c.Vector3(a[0],a[1],a[2])),e.normalized){let t=$n(Rn[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}else{console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`);return}}else return;let a=t.targets;if(a!==void 0){let e=new c.Vector3,t=new c.Vector3;for(let r=0,i=a.length;r<i;r++){let i=a[r];if(i.POSITION!==void 0){let r=n.json.accessors[i.POSITION],a=r.min,o=r.max;if(a!==void 0&&o!==void 0){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(o[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(o[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(o[2]))),r.normalized){let e=$n(Rn[r.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn(`THREE.GLTFLoader: Missing min/max properties for accessor POSITION.`)}}i.expandByVector(e)}e.boundingBox=i;let o=new c.Sphere;i.getCenter(o.center),o.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=o}function ir(e,t,n){let r=t.attributes,i=[];function a(t,r){return n.getDependency(`accessor`,t).then(function(t){e.setAttribute(r,t)})}for(let t in r){let n=Hn[t]||t.toLowerCase();n in e.attributes||i.push(a(r[t],n))}if(t.indices!==void 0&&!e.index){let r=n.getDependency(`accessor`,t.indices).then(function(t){e.setIndex(t)});i.push(r)}return c.ColorManagement.workingColorSpace!==c.LinearSRGBColorSpace&&`COLOR_0`in r&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${c.ColorManagement.workingColorSpace}" not supported.`),Jn(e,t),rr(e,t,n),Promise.all(i).then(function(){return t.targets===void 0?e:Yn(e,t.targets,n)})}var ar=new WeakMap,or=class extends c.Loader{constructor(e){super(e),this.decoderPath=``,this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL=``,this.defaultAttributeIDs={position:`POSITION`,normal:`NORMAL`,color:`COLOR`,uv:`TEX_COORD`},this.defaultAttributeTypes={position:`Float32Array`,normal:`Float32Array`,color:`Float32Array`,uv:`Float32Array`}}setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,n,r){let i=new c.FileLoader(this.manager);i.setPath(this.path),i.setResponseType(`arraybuffer`),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n=()=>{}){this.decodeDracoFile(e,t,null,null,c.SRGBColorSpace,n).catch(n)}decodeDracoFile(e,t,n,r,i=c.LinearSRGBColorSpace,a=()=>{}){let o={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!n,vertexColorSpace:i};return this.decodeGeometry(e,o).then(t).catch(a)}decodeGeometry(e,t){let n=JSON.stringify(t);if(ar.has(e)){let t=ar.get(e);if(t.key===n)return t.promise;if(e.byteLength===0)throw Error(`THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.`)}let r,i=this.workerNextTaskID++,a=e.byteLength,o=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:`decode`,id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return o.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),ar.set(e,{key:n,promise:o}),o}_createGeometry(e){let t=new c.BufferGeometry;e.index&&t.setIndex(new c.BufferAttribute(e.index.array,1));for(let n=0;n<e.attributes.length;n++){let{name:r,array:i,itemSize:a,stride:o,vertexColorSpace:s}=e.attributes[n],l;l=a===o?new c.BufferAttribute(i,a):new c.InterleavedBufferAttribute(new c.InterleavedBuffer(i,o),a,0),r===`color`&&(this._assignVertexColorSpace(l,s),l.normalized=!(i instanceof Float32Array)),t.setAttribute(r,l)}return t}_assignVertexColorSpace(e,t){if(t!==c.SRGBColorSpace)return;let n=new c.Color;for(let t=0,r=e.count;t<r;t++)n.fromBufferAttribute(e,t),c.ColorManagement.colorSpaceToWorking(n,c.SRGBColorSpace),e.setXYZ(t,n.r,n.g,n.b)}_loadLibrary(e,t){let n=new c.FileLoader(this.manager);return n.setPath(this.decoderPath),n.setResponseType(t),n.setWithCredentials(this.withCredentials),new Promise((t,r)=>{n.load(e,t,void 0,r)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e=typeof WebAssembly!=`object`||this.decoderConfig.type===`js`,t=[];return e?t.push(this._loadLibrary(`draco_decoder.js`,`text`)):(t.push(this._loadLibrary(`draco_wasm_wrapper.js`,`text`)),t.push(this._loadLibrary(`draco_decoder.wasm`,`arraybuffer`))),this.decoderPending=Promise.all(t).then(t=>{let n=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=sr.toString(),i=[`/* draco decoder */`,n,``,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
|
|
141
141
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:`init`,decoderConfig:this.decoderConfig}),e.onmessage=function(t){let n=t.data;switch(n.type){case`decode`:e._callbacks[n.id].resolve(n);break;case`error`:e._callbacks[n.id].reject(n);break;default:console.error(`THREE.DRACOLoader: Unexpected message, "`+n.type+`"`)}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let n=this.workerPool[this.workerPool.length-1];return n._taskCosts[e]=t,n._taskLoad+=t,n})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log(`Task load: `,this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this.workerSourceURL!==``&&URL.revokeObjectURL(this.workerSourceURL),this}};function sr(){let e,t;onmessage=function(r){let i=r.data;switch(i.type){case`init`:e=i.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case`decode`:let r=i.buffer,a=i.taskConfig;t.then(e=>{let t=e.draco,o=new t.Decoder;try{let e=n(t,o,new Int8Array(r),a),s=e.attributes.map(e=>e.array.buffer);e.index&&s.push(e.index.array.buffer),self.postMessage({type:`decode`,id:i.id,geometry:e},s)}catch(e){console.error(e),self.postMessage({type:`error`,id:i.id,error:e.message})}finally{t.destroy(o)}});break}};function n(e,t,n,a){let o=a.attributeIDs,s=a.attributeTypes,c,l,u=t.GetEncodedGeometryType(n);if(u===e.TRIANGULAR_MESH)c=new e.Mesh,l=t.DecodeArrayToMesh(n,n.byteLength,c);else if(u===e.POINT_CLOUD)c=new e.PointCloud,l=t.DecodeArrayToPointCloud(n,n.byteLength,c);else throw Error(`THREE.DRACOLoader: Unexpected geometry type.`);if(!l.ok()||c.ptr===0)throw Error(`THREE.DRACOLoader: Decoding failed: `+l.error_msg());let d={index:null,attributes:[]};for(let n in o){let r=self[s[n]],l,u;if(a.useUniqueIDs)u=o[n],l=t.GetAttributeByUniqueId(c,u);else{if(u=t.GetAttributeId(c,e[o[n]]),u===-1)continue;l=t.GetAttribute(c,u)}let f=i(e,t,c,n,r,l);n===`color`&&(f.vertexColorSpace=a.vertexColorSpace),d.attributes.push(f)}return u===e.TRIANGULAR_MESH&&(d.index=r(e,t,c)),e.destroy(c),d}function r(e,t,n){let r=n.num_faces()*3,i=r*4,a=e._malloc(i);t.GetTrianglesUInt32Array(n,i,a);let o=new Uint32Array(e.HEAPF32.buffer,a,r).slice();return e._free(a),{array:o,itemSize:1}}function i(e,t,n,r,i,o){let s=n.num_points(),c=o.num_components(),l=a(e,i),u=c*i.BYTES_PER_ELEMENT,d=Math.ceil(u/4)*4,f=d/i.BYTES_PER_ELEMENT,p=s*u,m=s*d,h=e._malloc(p);t.GetAttributeDataArrayForAllPoints(n,o,l,p,h);let g=new i(e.HEAPF32.buffer,h,p/i.BYTES_PER_ELEMENT),_;if(u===d)_=g.slice();else{_=new i(m/i.BYTES_PER_ELEMENT);let e=0;for(let t=0,n=g.length;t<n;t++){for(let n=0;n<c;n++)_[e+n]=g[t*c+n];e+=f}}return e._free(h),{name:r,count:s,itemSize:c,array:_,stride:f}}function a(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}}var cr=class{constructor(e=4){this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0,this.workerCreator=null}_initWorker(e){if(!this.workers[e]){let t=this.workerCreator();t.addEventListener(`message`,this._onMessage.bind(this,e)),this.workers[e]=t}}_getIdleWorker(){for(let e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}_onMessage(e,t){let n=this.workersResolve[e];if(n&&n(t),this.queue.length){let{resolve:t,msg:n,transfer:r}=this.queue.shift();this.workersResolve[e]=t,this.workers[e].postMessage(n,r)}else this.workerStatus^=1<<e}setWorkerCreator(e){this.workerCreator=e}setWorkerLimit(e){this.pool=e}postMessage(e,t){return new Promise(n=>{let r=this._getIdleWorker();r===-1?this.queue.push({resolve:n,msg:e,transfer:t}):(this._initWorker(r),this.workerStatus|=1<<r,this.workersResolve[r]=n,this.workers[r].postMessage(e,t))})}dispose(){this.workers.forEach(e=>e.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}},lr=1000054e3,ur=1000054001,dr=1000054004,fr=1000054005,pr=1000066e3,mr=1000066004,hr=class{constructor(e,t,n,r){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=r,this._offset=0}_nextUint8(){let e=this._dataView.getUint8(this._offset);return this._offset+=1,e}_nextUint16(){let e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}_nextUint32(){let e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint64(){let e=this._dataView.getUint32(this._offset,this._littleEndian)+2**32*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}_nextInt32(){let e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}_nextUint8Array(e){let t=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,e);return this._offset+=e,t}_skip(e){return this._offset+=e,this}_scan(e,t=0){let n=this._offset,r=0;for(;this._dataView.getUint8(this._offset)!==t&&r<e;)r++,this._offset++;return r<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+n,r)}};new Uint8Array([0]);var $=[171,75,84,88,32,50,48,187,13,10,26,10];function gr(e){return new TextDecoder().decode(e)}function _r(e){let t=new Uint8Array(e.buffer,e.byteOffset,$.length);if(t[0]!==$[0]||t[1]!==$[1]||t[2]!==$[2]||t[3]!==$[3]||t[4]!==$[4]||t[5]!==$[5]||t[6]!==$[6]||t[7]!==$[7]||t[8]!==$[8]||t[9]!==$[9]||t[10]!==$[10]||t[11]!==$[11])throw Error(`Missing KTX 2.0 identifier.`);let n={vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,levelCount:0,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null},r=17*Uint32Array.BYTES_PER_ELEMENT,i=new hr(e,$.length,r,!0);n.vkFormat=i._nextUint32(),n.typeSize=i._nextUint32(),n.pixelWidth=i._nextUint32(),n.pixelHeight=i._nextUint32(),n.pixelDepth=i._nextUint32(),n.layerCount=i._nextUint32(),n.faceCount=i._nextUint32(),n.levelCount=i._nextUint32(),n.supercompressionScheme=i._nextUint32();let a=i._nextUint32(),o=i._nextUint32(),s=i._nextUint32(),c=i._nextUint32(),l=i._nextUint64(),u=i._nextUint64(),d=3*Math.max(n.levelCount,1)*8,f=new hr(e,$.length+r,d,!0);for(let t=0,r=Math.max(n.levelCount,1);t<r;t++)n.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+f._nextUint64(),f._nextUint64()),uncompressedByteLength:f._nextUint64()});let p=new hr(e,a,o,!0);p._skip(4);let m=p._nextUint16(),h=p._nextUint16(),g=p._nextUint16(),_=p._nextUint16(),v={vendorId:m,descriptorType:h,versionNumber:g,colorModel:p._nextUint8(),colorPrimaries:p._nextUint8(),transferFunction:p._nextUint8(),flags:p._nextUint8(),texelBlockDimension:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],bytesPlane:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],samples:[]},y=(_/4-6)/4;for(let e=0;e<y;e++){let t={bitOffset:p._nextUint16(),bitLength:p._nextUint8(),channelType:p._nextUint8(),samplePosition:[p._nextUint8(),p._nextUint8(),p._nextUint8(),p._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&t.channelType?(t.sampleLower=p._nextInt32(),t.sampleUpper=p._nextInt32()):(t.sampleLower=p._nextUint32(),t.sampleUpper=p._nextUint32()),v.samples[e]=t}n.dataFormatDescriptor.length=0,n.dataFormatDescriptor.push(v);let b=new hr(e,s,c,!0);for(;b._offset<c;){let e=b._nextUint32(),t=b._scan(e),r=gr(t);if(n.keyValue[r]=b._nextUint8Array(e-t.byteLength-1),r.match(/^ktx/i)){let e=gr(n.keyValue[r]);n.keyValue[r]=e.substring(0,e.lastIndexOf(`\0`))}b._skip(e%4?4-e%4:0)}if(u<=0)return n;let x=new hr(e,l,u,!0),S=x._nextUint16(),C=x._nextUint16(),w=x._nextUint32(),T=x._nextUint32(),E=x._nextUint32(),D=x._nextUint32(),O=[];for(let e=0,t=Math.max(n.levelCount,1);e<t;e++)O.push({imageFlags:x._nextUint32(),rgbSliceByteOffset:x._nextUint32(),rgbSliceByteLength:x._nextUint32(),alphaSliceByteOffset:x._nextUint32(),alphaSliceByteLength:x._nextUint32()});let k=l+x._offset,A=k+w,j=A+T,M=j+E;return n.globalData={endpointCount:S,selectorCount:C,imageDescs:O,endpointsData:new Uint8Array(e.buffer,e.byteOffset+k,w),selectorsData:new Uint8Array(e.buffer,e.byteOffset+A,T),tablesData:new Uint8Array(e.buffer,e.byteOffset+j,E),extendedData:new Uint8Array(e.buffer,e.byteOffset+M,D)},n}var vr,yr,br,xr={env:{emscripten_notify_memory_growth:function(e){br=new Uint8Array(yr.exports.memory.buffer)}}},Sr=class{init(){return vr||(vr=typeof fetch<`u`?fetch(`data:application/wasm;base64,`+Cr).then(e=>e.arrayBuffer()).then(e=>WebAssembly.instantiate(e,xr)).then(this._init):WebAssembly.instantiate(Buffer.from(Cr,`base64`),xr).then(this._init),vr)}_init(e){yr=e.instance,xr.env.emscripten_notify_memory_growth(0)}decode(e,t=0){if(!yr)throw Error(`ZSTDDecoder: Await .init() before decoding.`);let n=e.byteLength,r=yr.exports.malloc(n);br.set(e,r),t||=Number(yr.exports.ZSTD_findDecompressedSize(r,n));let i=yr.exports.malloc(t),a=yr.exports.ZSTD_decompress(i,t,r,n),o=br.slice(i,i+a);return yr.exports.free(r),yr.exports.free(i),o}},Cr=`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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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`,wr=`display-p3`,Tr=`display-p3-linear`;({...c.ColorManagement.spaces[c.SRGBColorSpace]}),c.SRGBColorSpace;var Er=new WeakMap,Dr=0,Or,kr=class e extends c.Loader{constructor(e){super(e),this.transcoderPath=``,this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new cr,this.workerSourceURL=``,this.workerConfig=null,typeof MSC_TRANSCODER<`u`&&console.warn(`THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.`)}setTranscoderPath(e){return this.transcoderPath=e,this}setWorkerLimit(e){return this.workerPool.setWorkerLimit(e),this}async detectSupportAsync(e){return console.warn(`KTX2Loader: "detectSupportAsync()" has been deprecated. Use "detectSupport()" and "await renderer.init();" when creating the renderer.`),await e.init(),this.detectSupport(e)}detectSupport(e){return e.isWebGPURenderer===!0?this.workerConfig={astcSupported:e.hasFeature(`texture-compression-astc`),astcHDRSupported:!1,etc1Supported:e.hasFeature(`texture-compression-etc1`),etc2Supported:e.hasFeature(`texture-compression-etc2`),dxtSupported:e.hasFeature(`texture-compression-s3tc`),bptcSupported:e.hasFeature(`texture-compression-bc`),pvrtcSupported:e.hasFeature(`texture-compression-pvrtc`)}:(this.workerConfig={astcSupported:e.extensions.has(`WEBGL_compressed_texture_astc`),astcHDRSupported:e.extensions.has(`WEBGL_compressed_texture_astc`)&&e.extensions.get(`WEBGL_compressed_texture_astc`).getSupportedProfiles().includes(`hdr`),etc1Supported:e.extensions.has(`WEBGL_compressed_texture_etc1`),etc2Supported:e.extensions.has(`WEBGL_compressed_texture_etc`),dxtSupported:e.extensions.has(`WEBGL_compressed_texture_s3tc`),bptcSupported:e.extensions.has(`EXT_texture_compression_bptc`),pvrtcSupported:e.extensions.has(`WEBGL_compressed_texture_pvrtc`)||e.extensions.has(`WEBKIT_WEBGL_compressed_texture_pvrtc`)},typeof navigator<`u`&&navigator.platform!==void 0&&navigator.userAgent!==void 0&&navigator.platform.indexOf(`Linux`)>=0&&navigator.userAgent.indexOf(`Firefox`)>=0&&this.workerConfig.astcSupported&&this.workerConfig.etc2Supported&&this.workerConfig.bptcSupported&&this.workerConfig.dxtSupported&&(this.workerConfig.astcSupported=!1,this.workerConfig.etc2Supported=!1)),this}init(){if(!this.transcoderPending){let t=new c.FileLoader(this.manager);t.setPath(this.transcoderPath),t.setWithCredentials(this.withCredentials);let n=t.loadAsync(`basis_transcoder.js`),r=new c.FileLoader(this.manager);r.setPath(this.transcoderPath),r.setResponseType(`arraybuffer`),r.setWithCredentials(this.withCredentials);let i=r.loadAsync(`basis_transcoder.wasm`);this.transcoderPending=Promise.all([n,i]).then(([t,n])=>{let r=e.BasisWorker.toString(),i=[`/* constants */`,`let _EngineFormat = `+JSON.stringify(e.EngineFormat),`let _EngineType = `+JSON.stringify(e.EngineType),`let _TranscoderFormat = `+JSON.stringify(e.TranscoderFormat),`let _BasisFormat = `+JSON.stringify(e.BasisFormat),`/* basis_transcoder.js */`,t,`/* worker */`,r.substring(r.indexOf(`{`)+1,r.lastIndexOf(`}`))].join(`
|
|
142
142
|
`);this.workerSourceURL=URL.createObjectURL(new Blob([i])),this.transcoderBinary=n,this.workerPool.setWorkerCreator(()=>{let e=new Worker(this.workerSourceURL),t=this.transcoderBinary.slice(0);return e.postMessage({type:`init`,config:this.workerConfig,transcoderBinary:t},[t]),e})}),Dr>0&&console.warn(`THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances.`),Dr++}return this.transcoderPending}load(e,t,n,r){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");let i=new c.FileLoader(this.manager);i.setPath(this.path),i.setCrossOrigin(this.crossOrigin),i.setWithCredentials(this.withCredentials),i.setRequestHeader(this.requestHeader),i.setResponseType(`arraybuffer`),i.load(e,e=>{this.parse(e,t,r)},n,r)}parse(e,t,n){if(this.workerConfig===null)throw Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(Er.has(e))return Er.get(e).promise.then(t).catch(n);this._createTexture(e).then(e=>t?t(e):null).catch(n)}_createTextureFrom(e,t){let{type:n,error:r,data:{faces:i,width:a,height:o,format:s,type:l,dfdFlags:u}}=e;if(n===`error`)return Promise.reject(r);let d;if(t.faceCount===6)d=new c.CompressedCubeTexture(i,s,l);else{let e=i[0].mipmaps;d=t.layerCount>1?new c.CompressedArrayTexture(e,a,o,t.layerCount,s,l):new c.CompressedTexture(e,a,o,s,l)}return d.minFilter=i[0].mipmaps.length===1?c.LinearFilter:c.LinearMipmapLinearFilter,d.magFilter=c.LinearFilter,d.generateMipmaps=!1,d.needsUpdate=!0,d.colorSpace=Pr(t),d.premultiplyAlpha=!!(u&1),d}async _createTexture(e,t={}){let n=_r(new Uint8Array(e)),r=n.vkFormat===1000066e3&&n.dataFormatDescriptor[0].colorModel===167;if(!(n.vkFormat===0||r&&!this.workerConfig.astcHDRSupported))return Nr(n);let i=t,a=this.init().then(()=>this.workerPool.postMessage({type:`transcode`,buffer:e,taskConfig:i},[e])).then(e=>this._createTextureFrom(e.data,n));return Er.set(e,{promise:a}),a}dispose(){this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Dr--}};kr.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},kr.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},kr.EngineFormat={RGBAFormat:c.RGBAFormat,RGBA_ASTC_4x4_Format:c.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:c.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:c.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:c.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:c.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:c.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:c.RGB_ETC1_Format,RGB_ETC2_Format:c.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:c.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:c.RGBA_S3TC_DXT1_Format},kr.EngineType={UnsignedByteType:c.UnsignedByteType,HalfFloatType:c.HalfFloatType,FloatType:c.FloatType},kr.BasisWorker=function(){let e,t,n,r=_EngineFormat,i=_EngineType,a=_TranscoderFormat,o=_BasisFormat;self.addEventListener(`message`,function(n){let r=n.data;switch(r.type){case`init`:e=r.config,s(r.transcoderBinary);break;case`transcode`:t.then(()=>{try{let{faces:e,buffers:t,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}=c(r.buffer);self.postMessage({type:`transcode`,id:r.id,data:{faces:e,width:n,height:i,hasAlpha:a,format:o,type:s,dfdFlags:l}},t)}catch(e){console.error(e),self.postMessage({type:`error`,id:r.id,error:e.message})}});break}});function s(e){t=new Promise(t=>{n={wasmBinary:e,onRuntimeInitialized:t},BASIS(n)}).then(()=>{n.initializeBasis(),n.KTX2File===void 0&&console.warn(`THREE.KTX2Loader: Please update Basis Universal transcoder.`)})}function c(e){let t=new n.KTX2File(new Uint8Array(e));function r(){t.close(),t.delete()}if(!t.isValid())throw r(),Error(`THREE.KTX2Loader: Invalid or unsupported .ktx2 file`);let a;if(t.isUASTC())a=o.UASTC;else if(t.isETC1S())a=o.ETC1S;else if(t.isHDR())a=o.UASTC_HDR;else throw Error(`THREE.KTX2Loader: Unknown Basis encoding`);let s=t.getWidth(),c=t.getHeight(),l=t.getLayers()||1,u=t.getLevels(),f=t.getFaces(),m=t.getHasAlpha(),h=t.getDFDFlags(),{transcoderFormat:g,engineFormat:_,engineType:v}=d(a,s,c,m);if(!s||!c||!u)throw r(),Error(`THREE.KTX2Loader: Invalid texture`);if(!t.startTranscoding())throw r(),Error(`THREE.KTX2Loader: .startTranscoding failed`);let y=[],b=[];for(let e=0;e<f;e++){let n=[];for(let a=0;a<u;a++){let o=[],s,c;for(let n=0;n<l;n++){let l=t.getImageLevelInfo(a,n,e);e===0&&a===0&&n===0&&(l.origWidth%4!=0||l.origHeight%4!=0)&&console.warn(`THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions.`),u>1?(s=l.origWidth,c=l.origHeight):(s=l.width,c=l.height);let d=new Uint8Array(t.getImageTranscodedSizeInBytes(a,n,0,g)),f=t.transcodeImage(d,a,n,e,g,0,-1,-1);if(v===i.HalfFloatType&&(d=new Uint16Array(d.buffer,d.byteOffset,d.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!f)throw r(),Error(`THREE.KTX2Loader: .transcodeImage failed.`);o.push(d)}let d=p(o);n.push({data:d,width:s,height:c}),b.push(d.buffer)}y.push({mipmaps:n,width:s,height:c,format:_,type:v})}return r(),{faces:y,buffers:b,width:s,height:c,hasAlpha:m,dfdFlags:h,format:_,type:v}}let l=[{if:`astcSupported`,basisFormat:[o.UASTC],transcoderFormat:[a.ASTC_4x4,a.ASTC_4x4],engineFormat:[r.RGBA_ASTC_4x4_Format,r.RGBA_ASTC_4x4_Format],engineType:[i.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:`bptcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC7_M5,a.BC7_M5],engineFormat:[r.RGBA_BPTC_Format,r.RGBA_BPTC_Format],engineType:[i.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:`dxtSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.BC1,a.BC3],engineFormat:[r.RGBA_S3TC_DXT1_Format,r.RGBA_S3TC_DXT5_Format],engineType:[i.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:`etc2Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1,a.ETC2],engineFormat:[r.RGB_ETC2_Format,r.RGBA_ETC2_EAC_Format],engineType:[i.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:`etc1Supported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.ETC1],engineFormat:[r.RGB_ETC1_Format],engineType:[i.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:`pvrtcSupported`,basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.PVRTC1_4_RGB,a.PVRTC1_4_RGBA],engineFormat:[r.RGB_PVRTC_4BPPV1_Format,r.RGBA_PVRTC_4BPPV1_Format],engineType:[i.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:`bptcSupported`,basisFormat:[o.UASTC_HDR],transcoderFormat:[a.BC6H],engineFormat:[r.RGB_BPTC_UNSIGNED_Format],engineType:[i.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[o.ETC1S,o.UASTC],transcoderFormat:[a.RGBA32,a.RGBA32],engineFormat:[r.RGBAFormat,r.RGBAFormat],engineType:[i.UnsignedByteType,i.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[o.UASTC_HDR],transcoderFormat:[a.RGBA_HALF],engineFormat:[r.RGBAFormat],engineType:[i.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],u={[o.ETC1S]:l.filter(e=>e.basisFormat.includes(o.ETC1S)).sort((e,t)=>e.priorityETC1S-t.priorityETC1S),[o.UASTC]:l.filter(e=>e.basisFormat.includes(o.UASTC)).sort((e,t)=>e.priorityUASTC-t.priorityUASTC),[o.UASTC_HDR]:l.filter(e=>e.basisFormat.includes(o.UASTC_HDR)).sort((e,t)=>e.priorityHDR-t.priorityHDR)};function d(t,n,r,i){let a=u[t];for(let o=0;o<a.length;o++){let s=a[o];if(!(s.if&&!e[s.if])&&s.basisFormat.includes(t)&&!(i&&s.transcoderFormat.length<2)&&!(s.needsPowerOfTwo&&!(f(n)&&f(r))))return{transcoderFormat:s.transcoderFormat[+!!i],engineFormat:s.engineFormat[+!!i],engineType:s.engineType[0]}}throw Error(`THREE.KTX2Loader: Failed to identify transcoding target.`)}function f(e){return e<=2?!0:(e&e-1)==0&&e!==0}function p(e){if(e.length===1)return e[0];let t=0;for(let n=0;n<e.length;n++){let r=e[n];t+=r.byteLength}let n=new Uint8Array(t),r=0;for(let t=0;t<e.length;t++){let i=e[t];n.set(i,r),r+=i.byteLength}return n}};var Ar=new Set([c.RGBAFormat,c.RGBFormat,c.RGFormat,c.RedFormat]),jr={109:c.RGBAFormat,103:c.RGFormat,100:c.RedFormat,97:c.RGBAFormat,83:c.RGFormat,76:c.RedFormat,91:c.RGBAFormat,43:c.RGBAFormat,37:c.RGBAFormat,22:c.RGFormat,16:c.RGFormat,15:c.RedFormat,9:c.RedFormat,123:c.RGBFormat,122:c.RGBFormat,152:c.RGBA_ETC2_EAC_Format,148:c.RGB_ETC2_Format,153:c.R11_EAC_Format,154:c.SIGNED_R11_EAC_Format,155:c.RG11_EAC_Format,156:c.SIGNED_RG11_EAC_Format,[pr]:c.RGBA_ASTC_4x4_Format,158:c.RGBA_ASTC_4x4_Format,157:c.RGBA_ASTC_4x4_Format,[mr]:c.RGBA_ASTC_6x6_Format,166:c.RGBA_ASTC_6x6_Format,165:c.RGBA_ASTC_6x6_Format,134:c.RGBA_S3TC_DXT1_Format,133:c.RGBA_S3TC_DXT1_Format,132:c.RGB_S3TC_DXT1_Format,131:c.RGB_S3TC_DXT1_Format,138:c.RGBA_S3TC_DXT5_Format,137:c.RGBA_S3TC_DXT5_Format,140:c.SIGNED_RED_RGTC1_Format,139:c.RED_RGTC1_Format,142:c.SIGNED_RED_GREEN_RGTC2_Format,141:c.RED_GREEN_RGTC2_Format,146:c.RGBA_BPTC_Format,145:c.RGBA_BPTC_Format,[fr]:c.RGBA_PVRTC_4BPPV1_Format,[ur]:c.RGBA_PVRTC_4BPPV1_Format,[dr]:c.RGBA_PVRTC_2BPPV1_Format,[lr]:c.RGBA_PVRTC_2BPPV1_Format},Mr={109:c.FloatType,103:c.FloatType,100:c.FloatType,97:c.HalfFloatType,83:c.HalfFloatType,76:c.HalfFloatType,91:c.UnsignedShortType,43:c.UnsignedByteType,37:c.UnsignedByteType,22:c.UnsignedByteType,16:c.UnsignedByteType,15:c.UnsignedByteType,9:c.UnsignedByteType,123:c.UnsignedInt5999Type,122:c.UnsignedInt101111Type,152:c.UnsignedByteType,148:c.UnsignedByteType,153:c.UnsignedByteType,154:c.UnsignedByteType,155:c.UnsignedByteType,156:c.UnsignedByteType,[pr]:c.HalfFloatType,158:c.UnsignedByteType,157:c.UnsignedByteType,[mr]:c.HalfFloatType,166:c.UnsignedByteType,165:c.UnsignedByteType,134:c.UnsignedByteType,133:c.UnsignedByteType,132:c.UnsignedByteType,131:c.UnsignedByteType,138:c.UnsignedByteType,137:c.UnsignedByteType,140:c.UnsignedByteType,139:c.UnsignedByteType,142:c.UnsignedByteType,141:c.UnsignedByteType,146:c.UnsignedByteType,145:c.UnsignedByteType,[fr]:c.UnsignedByteType,[ur]:c.UnsignedByteType,[dr]:c.UnsignedByteType,[lr]:c.UnsignedByteType};async function Nr(e){let{vkFormat:t}=e;if(jr[t]===void 0)throw Error(`THREE.KTX2Loader: Unsupported vkFormat: `+t);Mr[t]===void 0&&console.warn(`THREE.KTX2Loader: Missing ".type" for vkFormat: `+t);let n;e.supercompressionScheme===2&&(Or||=new Promise(async e=>{let t=new Sr;await t.init(),e(t)}),n=await Or);let r=[];for(let i=0;i<e.levels.length;i++){let a=Math.max(1,e.pixelWidth>>i),o=Math.max(1,e.pixelHeight>>i),s=e.pixelDepth?Math.max(1,e.pixelDepth>>i):0,l=e.levels[i],u;if(e.supercompressionScheme===0)u=l.levelData;else if(e.supercompressionScheme===2)u=n.decode(l.levelData,l.uncompressedByteLength);else throw Error(`THREE.KTX2Loader: Unsupported supercompressionScheme.`);let d;d=Mr[t]===c.FloatType?new Float32Array(u.buffer,u.byteOffset,u.byteLength/Float32Array.BYTES_PER_ELEMENT):Mr[t]===c.HalfFloatType||Mr[t]===c.UnsignedShortType?new Uint16Array(u.buffer,u.byteOffset,u.byteLength/Uint16Array.BYTES_PER_ELEMENT):Mr[t]===c.UnsignedInt5999Type||Mr[t]===c.UnsignedInt101111Type?new Uint32Array(u.buffer,u.byteOffset,u.byteLength/Uint32Array.BYTES_PER_ELEMENT):u,r.push({data:d,width:a,height:o,depth:s})}let i=e.levelCount===0||r.length>1,a;if(Ar.has(jr[t]))a=e.pixelDepth===0?new c.DataTexture(r[0].data,e.pixelWidth,e.pixelHeight):new c.Data3DTexture(r[0].data,e.pixelWidth,e.pixelHeight,e.pixelDepth),a.minFilter=i?c.NearestMipmapNearestFilter:c.NearestFilter,a.magFilter=c.NearestFilter,a.generateMipmaps=e.levelCount===0;else{if(e.pixelDepth>0)throw Error(`THREE.KTX2Loader: Unsupported pixelDepth.`);a=new c.CompressedTexture(r,e.pixelWidth,e.pixelHeight),a.minFilter=i?c.LinearMipmapLinearFilter:c.LinearFilter,a.magFilter=c.LinearFilter}return a.mipmaps=r,a.type=Mr[t],a.format=jr[t],a.colorSpace=Pr(e),a.needsUpdate=!0,Promise.resolve(a)}function Pr(e){let t=e.dataFormatDescriptor[0];return t.colorPrimaries===1?t.transferFunction===2?c.SRGBColorSpace:c.LinearSRGBColorSpace:t.colorPrimaries===10?t.transferFunction===2?wr:Tr:(t.colorPrimaries===0||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${t.colorPrimaries}"`),c.NoColorSpace)}var Fr=(function(){var e=`b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuixkbeeeddddillviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WboY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbrl79IV9Rbwq:VZkdbk:XYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz:jjjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbh5dnawTmbaxa8Acd4fRbbh5kcbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz:jjjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:kjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q:G:cjbfcj:G:cjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bwar9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfcbaicdfa8J9c8N1:NfghRbbag9cjjjjjw:dg8J9qE86bbarcVfcbaha8J9c8M1:NfghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fcbaha8J9c8N1:NfgiRbbag9cjjjjjw:dg8J9qE86bbarc96fcbaia8J9c8M1:NfgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbw83bwarai8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbaocl4h8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E94aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z:jjjjb8AazazcjdfaAcufad2fadz:jjjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:ysezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:kjjjb8Aav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk:4ioiue99dud99dud99dnaeTmbcbhiabhlindndnal8Uebgv:YgoJ:ji:1Salcof8UebgrciVgw:Y:vgDNJbbbZJbbb:;avcu9kEMgq:lJbbb9p9DTmbaq:Ohkxekcjjjj94hkkalclf8Uebhvalcdf8UebhxalarcefciGcetfak87ebdndnax:YgqaDNJbbbZJbbb:;axcu9kEMgm:lJbbb9p9DTmbam:Ohxxekcjjjj94hxkabaiarciGgkfcd7cetfax87ebdndnav:YgmaDNJbbbZJbbb:;avcu9kEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkalarcufciGcetfav87ebdndnawaw2:ZgPaPMaoaoN:taqaqN:tamamN:tgoJbbbbaoJbbbb9GE:raDNJbbbZMgD:lJbbb9p9DTmbaD:Ohrxekcjjjj94hrkalakcetfar87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk:Tvirud99eudndnadcl9hmbaeTmeindndnabRbbgiabcefgl8Sbbgvabcdfgo8Sbbgrf9R:YJbbuJabcifgwRbbgdce4adVgDcd4aDVgDcl4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax86bbdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao86bbdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai86bbdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad86bbabclfhbaecufgembxdkkaeTmbindndnab8Vebgiabcdfgl8Uebgvabclfgo8Uebgrf9R:YJbFu9habcofgw8Vebgdce4adVgDcd4aDVgDcl4aDVgDcw4aDVgD:Z:vgqNJbbbZMgk:lJbbb9p9DTmbak:Ohxxekcjjjj94hxkaoax87ebdndnaraif:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohoxekcjjjj94hokalao87ebdndnavaifar9R:YaqNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabai87ebdndnaDadcetGadceGV:ZaqNJbbbZMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkawad87ebabcwfhbaecufgembkkk9teiucbcbyd:K:G:cjbgeabcifc98GfgbBd:K:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;LeeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiclfaeclfydbBdbaicwfaecwfydbBdbaicxfaecxfydbBdbaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk;aeedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdbaicxfalBdbaicwfalBdbaiclfalBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk83dbcj:Gdk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:K:Gdkl8W:qbb`,t=`b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuixkbbebeeddddilve9Weeeviebeoweuecj:Gdkr;Neqo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949WbwY9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVJ9V29VVbDl79IV9Rbqq:W9Dklbzik94evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaeai86b:q:W:cjbaecitab8Piw83i:q:G:cjbaecefgecjd9hmbkk:JBl8Aud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaialfgxar9RhodnadTgmmbavaoad;8qbbkaicefhPcj;abad9Uc;WFbGcjdadca0EhsdndndnadTmbaoadfhzcbhHinaeaH9nmdaxaP9RaD6miabaHad2fhOaPaDfhAasaeaH9RaHasfae6EgCcsfgocl4cifcd4hXavcj;cbfaoc9WGgQcetfhLavcj;cbfaQci2fhKavcj;cbfaQfhYcbh8Aaoc;ab6hEincbh3dnawTmbaPa8Acd4fRbbh3kcbh5avcj;cbfh8Eindndndndna3a5cet4ciGgoc9:fPdebdkaxaA9RaQ6mwdnaQTmbavcj;cbfa5aQ2faAaQ;8qbbkaAaCfhAxdkaQTmeavcj;cbfa5aQ2fcbaQ;8kbxekaxaA9RaX6moaoclVcbawEhraAaXfhocbhidnaEmbaxao9Rc;Gb6mbcbhlina8EalfhidndndndndndnaAalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaiczfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaoclffagRb:q:W:cjbfhoxikaicafaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbahaocwffagRb:q:W:cjbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbahaocdffagRb:q:W:cjbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaoclffaqRb:q:W:cjbfhoxikaic8Wfaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Ngicitpbi:q:G:cjbaiRb:q:W:cjbgipsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spklbaiaocwffaqRb:q:W:cjbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitpbi:q:G:cjbaiRb:q:W:cjbgipsaoRbegqcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqRb:q:W:cjbfhokalc;abfhialcjefaQ0meaihlaxao9Rc;Fb0mbkkdnaiaQ9pmbaici4hlinaxao9RcK6mwa8EaifhqdndndndndndnaAaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLg8Fcdp:mea8FpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9ogapxiiiiiiiiiiiiiiiip8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaoclffagRb:q:W:cjbfhoxikaqaopbbwaopbbbg8Fclp:mea8FpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9ogapxssssssssssssssssp8Jg8Fp5b9cjF;8;4;W;G;ab9:9cU1:Nghcitpbi:q:G:cjbahRb:q:W:cjbghpsa8Fp5e9cjF;8;4;W;G;ab9:9cU1:Nggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPaaa8Fp9spkbbahaocwffagRb:q:W:cjbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbghcitpbi:q:G:cjbahRb:q:W:cjbghpsaoRbeggcitpbi:q:G:cjbp9UpmbedilvorzHOACXQLpPpkbbahaocdffagRb:q:W:cjbfhokalcdfhlaiczfgiaQ6mbkkaohAaoTmoka8EaQfh8Ea5cefg5cl9hmbkdndndndnawTmbaza8Acd4fRbbglciGPlbedwbkaQTmdavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep9Ta8Fpxeeeeeeeeeeeeeeeegap9op9Hp9rg8Fa8Jp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ug8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp9Ug8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep9Ta8Faap9op9Hp9rg8Fp9Ugap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp9Ugap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp9Ugap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp9Ug8Jp9AbbbaladfhlaoczfgoaQ6mbxikkaQTmeavcjdfa8Afhlava8Afpbdbh8Jcbhoinalavcj;cbfaofpblbg8KaYaofpblbg8LpmbzeHdOiAlCvXoQrLg8MaLaofpblbg8NaKaofpblbgypmbzeHdOiAlCvXoQrLg8PpmbezHdiOAlvCXorQLg8Fcep:nea8Fpxebebebebebebebebgap9op:bep9rg8Fa8Jp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ma8PpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwKDYq8AkEx3m5P8Es8Fg8Ka8NaypmwKDYq8AkEx3m5P8Es8Fg8LpmbezHdiOAlvCXorQLg8Fcep:nea8Faap9op:bep9rg8Fp:oeg8Jp9Abbbaladfgla8Ja8Fa8Fpmlvorlvorlvorlvorp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmwDqkwDqkwDqkwDqkp:oeg8Jp9Abbbaladfgla8Ja8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9Abbbaladfgla8Ja8Ka8LpmwDKYqk8AExm35Ps8E8Fg8Fcep:nea8Faap9op:bep9rg8Fp:oegap9Abbbaladfglaaa8Fa8Fpmlvorlvorlvorlvorp:oegap9Abbbaladfglaaa8Fa8FpmwDqkwDqkwDqkwDqkp:oegap9Abbbaladfglaaa8Fa8FpmxmPsxmPsxmPsxmPsp:oeg8Jp9AbbbaladfhlaoczfgoaQ6mbxdkkaQTmbcbhocbalcl4gl9Rc8FGhiavcjdfa8Afhrava8Afpbdbhainaravcj;cbfaofpblbg8JaYaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaLaofpblbg8MaKaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Faap9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8LaypmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9Abbbaradfgraaa8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Faip:Rea8Falp:Tep9qg8Fp9rgap9Abbbaradfgraaa8Fa8Fpmlvorlvorlvorlvorp9rgap9Abbbaradfgraaa8Fa8FpmwDqkwDqkwDqkwDqkp9rgap9Abbbaradfgraaa8Fa8FpmxmPsxmPsxmPsxmPsp9rgap9AbbbaradfhraoczfgoaQ6mbkka8Aclfg8Aad6mbkdnaCad2goTmbaOavcjdfao;8qbbkdnammbavavcjdfaCcufad2fad;8qbbkaCaHfhHc9:hoaAhPaAmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdasaeao9Raoasfae6Eaofgoae6mbkaial9RhPkcbc99axaP9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbkNsezu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnalaeci9UgrcHf6mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbav9cu83iUav9cu83i8Wav9cu83iyav9cu83iaav9cu83iKav9cu83izav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbavaiaqaDcsGfRbbgscl4gP9RcsGcdtfydbaxcefgOaPEhDavaias9RcsGcdtfydbaOaPTgzfgOascsGgPEhsaPThPdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiazfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaPfhiaOaPfhxxekaxcbalRbbgsEgHaDc;:eSgDfhOascsGhAdndnascl4gCmbaOcefhzxekaOhzavaiaC9RcsGcdtfydbhOkdndnaAmbazcefhxxekazhxavaias9RcsGcdtfydbhzkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhHascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaHhDxekaDcefhDkasce4cbasceG9R7amfgmhHkdndnaCcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhOaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkaOhsxekascefhskaPce4cbaPceG9R7amfgmhOkdndnaAcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhzaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkazhlxekalcefhlkaPce4cbaPceG9R7amfgmhzkdndnadcd9hmbabarcetfgDaH87ebaDclfaz87ebaDcdfaO87ebxekabarcdtfgDaHBdbaDcwfazBdbaDclfaOBdbkavc;abfaocitfgDaOBdbaDaHBdlavaicdtfaHBdbavc;abfaocefcsGcitfgDazBdbaDaOBdlavaicefgicsGcdtfaOBdbavc;abfaocdfcsGcitfgDaHBdbaDazBdlavaiaCTaCcsSVfgicsGcdtfazBdbaiaATaAcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnalaecvf9pmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk;Toio97eue97aec98Ghedndnadcl9hmbaeTmecbhdinababpbbbgicKp:RecKp:Sep;6eglaicwp:RecKp:Sep;6ealp;Geaiczp:RecKp:Sep;6egvp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgwp9op9rp;Keglpxbb;:9cbb;:9cbb;:9cbb;:9calalp;Meaoaop;Meavaravawp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFbbbFbbbFbbbFbbbp9oaipxbbbFbbbFbbbFbbbFp9op9qalavp;Mearp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaoavp;Mearp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgDaDpbbbgipxbbbbbbFFbbbbbbFFgwp9oabpbbbgoaipmbediwDqkzHOAKY8AEgvczp:Reczp:Sep;6eglaoaipmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;6eavczp:Sep;6egvp;Gealp;Gep;Kep;Legipxbbbbbbbbbbbbbbbbp:2egralpxbbbjbbbjbbbjbbbjgqp9op9rp;Keglpxb;:FSb;:FSb;:FSb;:FSalalp;Meaiaip;Meavaravaqp9op9rp;Keglalp;Mep;Kep;Kep;Jep;Negvp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbp9oaiavp;Mearp;Keczp:Rep9qgialavp;Mearp;KepxFFbbFFbbFFbbFFbbp9oglpmwDKYqk8AExm35Ps8E8Fp9qpkbbabaoawp9oaialpmbezHdiOAlvCXorQLp9qpkbbabcafhbadclfgdae6mbkkk;2ileue97euo97dnaec98GgiTmbcbheinabcKfpx:ji:1S:ji:1S:ji:1S:ji:1SabpbbbglabczfgvpbbbgopmlvorxmPsCXQL358E8Fgrczp:Segwpxibbbibbbibbbibbbp9qp;6egDp;NegqaDaDp;MegDaDp;KealaopmbediwDqkzHOAKY8AEgDczp:Reczp:Sep;6eglalp;MeaDczp:Sep;6egoaop;Mearczp:Reczp:Sep;6egrarp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jep;Mepxbbn0bbn0bbn0bbn0gDp;KepxFFbbFFbbFFbbFFbbgkp9oaqaop;MeaDp;Keczp:Rep9qgoaqalp;MeaDp;Keakp9oaqarp;MeaDp;Keczp:Rep9qgDpmwDKYqk8AExm35Ps8E8Fglp5eawclp:RegqpEi:T:j83ibavalp5baqpEd:T:j83ibabcwfaoaDpmbezHdiOAlvCXorQLgDp5eaqpEe:T:j83ibabaDp5baqpEb:T:j83ibabcafhbaeclfgeai6mbkkkuee97dnadcd4ae2c98GgeTmbcbhdinababpbbbgicwp:Recwp:Sep;6eaicep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbabczfhbadclfgdae6mbkkk:Sodw97euaec98Ghedndnadcl9hmbaeTmecbhdinabpxbbuJbbuJbbuJbbuJabpbbbgicKp:TeglaicYp:Tep9qgvcdp:Teavp9qgvclp:Teavp9qgop;6ep;Negvaicwp:RecKp:SegraipxFbbbFbbbFbbbFbbbgwp9ogDp:Uep;6ep;Mepxbbn0bbn0bbn0bbn0gqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9oavaDarp:Xeaiczp:RecKp:Segip:Uep;6ep;Meaqp;Keawp9op9qavaDaraip:Uep:Xep;6ep;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qavaoalcep:Rep9oalpxebbbebbbebbbebbbp9op9qp;6ep;Meaqp;KecKp:Rep9qpkbbabczfhbadclfgdae6mbxdkkaeTmbcbhdinabczfgkpxbFu9hbFu9hbFu9hbFu9habpbbbglakpbbbgrpmlvorxmPsCXQL358E8Fgvczp:TegqavcHp:Tep9qgicdp:Teaip9qgiclp:Teaip9qgicwp:Teaip9qgop;6ep;NegialarpmbediwDqkzHOAKY8AEgDpxFFbbFFbbFFbbFFbbglp9ograDczp:Segwp:Ueavczp:Reczp:SegDp:Xep;6ep;Mepxbbn0bbn0bbn0bbn0gvp;Kealp9oaiarawaDp:Uep:Xep;6ep;Meavp;Keczp:Rep9qgwaiaoaqcep:Rep9oaqpxebbbebbbebbbebbbp9op9qp;6ep;Meavp;Keczp:ReaiaDarp:Uep;6ep;Meavp;Kealp9op9qgipmwDKYqk8AExm35Ps8E8FpkbbabawaipmbezHdiOAlvCXorQLpkbbabcafhbadclfgdae6mbkkk9teiucbcbydj:G:cjbgeabcifc98GfgbBdj:G:cjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkxebcj:Gdklz:zbb`,n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),r=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!=`object`)return{supported:!1};var i=WebAssembly.validate(n)?s(t):s(e),a,o=WebAssembly.instantiate(i,{}).then(function(e){a=e.instance,a.exports.__wasm_call_ctors()});function s(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n){var i=e.charCodeAt(n);t[n]=i>96?i-97:i>64?i-39:i+4}for(var a=0,n=0;n<e.length;++n)t[a++]=t[n]<60?r[t[n]]:(t[n]-60)*64+t[++n];return t.buffer.slice(0,a)}function c(e,t,n,r,i,a,o){var s=e.exports.sbrk,c=r+3&-4,l=s(c*i),u=s(a.length),d=new Uint8Array(e.exports.memory.buffer);d.set(a,u);var f=t(l,r,i,u,a.length);if(f==0&&o&&o(l,c,i),n.set(d.subarray(l,l+r*i)),s(l-s(0)),f!=0)throw Error(`Malformed buffer data: `+f)}var l={NONE:``,OCTAHEDRAL:`meshopt_decodeFilterOct`,QUATERNION:`meshopt_decodeFilterQuat`,EXPONENTIAL:`meshopt_decodeFilterExp`,COLOR:`meshopt_decodeFilterColor`},u={ATTRIBUTES:`meshopt_decodeVertexBuffer`,TRIANGLES:`meshopt_decodeIndexBuffer`,INDICES:`meshopt_decodeIndexSequence`},d=[],f=0;function p(e){var t={object:new Worker(e),pending:0,requests:{}};return t.object.onmessage=function(e){var n=e.data;t.pending-=n.count,t.requests[n.id][n.action](n.value),delete t.requests[n.id]},t}function m(e){for(var t=`self.ready = WebAssembly.instantiate(new Uint8Array([`+new Uint8Array(i)+`]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = `+g.name+`;`+c.toString()+g.toString(),n=new Blob([t],{type:`text/javascript`}),r=URL.createObjectURL(n),a=d.length;a<e;++a)d[a]=p(r);for(var a=e;a<d.length;++a)d[a].object.postMessage({});d.length=e,URL.revokeObjectURL(r)}function h(e,t,n,r,i){for(var a=d[0],o=1;o<d.length;++o)d[o].pending<a.pending&&(a=d[o]);return new Promise(function(o,s){var c=new Uint8Array(n),l=++f;a.pending+=e,a.requests[l]={resolve:o,reject:s},a.object.postMessage({id:l,count:e,size:t,source:c,mode:r,filter:i},[c.buffer])})}function g(e){var t=e.data;self.ready.then(function(e){if(!t.id)return self.close();try{var n=new Uint8Array(t.count*t.size);c(e,e.exports[t.mode],n,t.count,t.size,t.source,e.exports[t.filter]),self.postMessage({id:t.id,count:t.count,action:`resolve`,value:n},[n.buffer])}catch(e){self.postMessage({id:t.id,count:t.count,action:`reject`,value:e})}})}return{ready:o,supported:!0,useWorkers:function(e){m(e)},decodeVertexBuffer:function(e,t,n,r,i){c(a,a.exports.meshopt_decodeVertexBuffer,e,t,n,r,a.exports[l[i]])},decodeIndexBuffer:function(e,t,n,r){c(a,a.exports.meshopt_decodeIndexBuffer,e,t,n,r)},decodeIndexSequence:function(e,t,n,r){c(a,a.exports.meshopt_decodeIndexSequence,e,t,n,r)},decodeGltfBuffer:function(e,t,n,r,i,o){c(a,a.exports[u[i]],e,t,n,r,a.exports[l[o]])},decodeGltfBufferAsync:function(e,t,n,r,i){return d.length>0?h(e,t,n,u[r],l[i]):o.then(function(){var o=new Uint8Array(e*t);return c(a,a.exports[u[r]],o,e,t,n,a.exports[l[i]]),o})}}})();function Ir(e){return`morphTargetDictionary`in e&&e.morphTargetDictionary!==void 0&&`morphTargetInfluences`in e&&Array.isArray(e.morphTargetInfluences)}var Lr={draco:`https://unpkg.com/three@0.182/examples/jsm/libs/draco/`,ktx2:`https://unpkg.com/three@0.182.0/examples/jsm/libs/basis/`,meshopt:!0};function Rr(e={}){c.Cache.enabled=!0;let t={...Lr,...e},n=new cn,r=new or;if(r.setDecoderPath(t.draco),n.setDRACOLoader(r),t.renderer){let e=new kr;e.setTranscoderPath(t.ktx2),e.detectSupport(t.renderer),n.setKTX2Loader(e)}t.meshopt&&n.setMeshoptDecoder(Fr),zr=n}var zr=new cn;zr.setMeshoptDecoder(Fr);var Br=class extends je{constructor(e,t){super(e,t)}},Vr=class extends Me{gltf;constructor(e){super(e)}async asyncInit(e){if(te(e)){let t=null;this.gltf=await zr.loadAsync(e);let n={},r={root:this.gltf.scene,bones:{},skeleton:void 0},i={};this.gltf.scene.traverse(e=>{if(e.userData.a3js={objectA3:this},Ir(e)){let{morphTargetDictionary:t,morphTargetInfluences:n}=e;Object.keys(t).forEach(r=>{let a=e.name+`.`+r;i[a]={array:n,idx:t[r]}})}e instanceof c.Bone&&r.bones&&(r.bones[e.name]=e),e instanceof c.SkinnedMesh&&(r.skeleton=e.skeleton)}),this.gltf.animations.forEach(e=>{t||=e.name,n[e.name]=new Br(r,new jt(e))}),t?this.syncInit(t,n,i):(t=`dummy`,n.dummy=new Br(r,new Ne),this.syncInit(t,n,i))}else{let e=new c.BoxGeometry,t=new c.MeshStandardMaterial({color:16711680}),n=new c.Mesh(e,t),r={};r.dummy=new Br({root:n},new Ne),this.syncInit(`dummy`,r)}return this}},Hr={camera:void 0,antialias:!1,transparent:!1},Ur=class extends HTMLElement{options;ro;base;renderer;css2DRenderer;scene;camera;controller;camera3js;timer;_canvas;_css2DCanvas;constructor(e){if(super(),this.attachShadow({mode:`open`}),this.shadowRoot.innerHTML=`
|
|
143
143
|
<style>
|