THREE.FBXLoader=function(){function z(a){this.manager=void 0!==a?a:THREE.DefaultLoadingManager}function A(a){this.textureLoader=a}function B(){}function C(){}function D(){}function E(){}function v(a,b){this.dv=new DataView(a);this.offset=0;this.littleEndian=void 0!==b?b:!0}function x(){}function I(a){if(a=a.match(/FBXVersion: (\d+)/))return parseInt(a[1]);throw Error("THREE.FBXLoader: Cannot find the version number for the file given.");}function N(a){return a/46186158E3}function y(a,b,c,d){switch(d.mappingType){case "ByPolygonVertex":var e= a;break;case "ByPolygon":e=b;break;case "ByVertice":e=c;break;case "AllSame":e=d.indices[0];break;default:console.warn("THREE.FBXLoader: unknown attribute mapping type "+d.mappingType)}"IndexToDirect"===d.referenceType&&(e=d.indices[e]);c=e*d.dataSize;a=O;b=d.buffer;d=c+d.dataSize;for(e=0;cI(c))throw Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+I(c));n=(new D).parse(c)}c=(new THREE.TextureLoader(this.manager)).setPath(this.resourcePath||b).setCrossOrigin(this.crossOrigin);return(new A(c)).parse(n)}}; A.prototype={constructor:A,parse:function(){p=this.parseConnections();var a=this.parseImages();a=this.parseTextures(a);a=this.parseMaterials(a);var b=this.parseDeformers(),c=(new B).parse(b);this.parseScene(b,c,a);return q},parseConnections:function(){var a=new Map;"Connections"in n&&n.Connections.connections.forEach(function(b){var c=b[0],d=b[1];b=b[2];a.has(c)||a.set(c,{parents:[],children:[]});var e={ID:d,relationship:b};a.get(c).parents.push(e);a.has(d)||a.set(d,{parents:[],children:[]});c={ID:c, relationship:b};a.get(d).children.push(c)});return a},parseImages:function(){var a={},b={};if("Video"in n.Objects){var c=n.Objects.Video,d;for(d in c){var e=c[d],f=parseInt(d);a[f]=e.RelativeFilename||e.Filename;if("Content"in e){var g="string"===typeof e.Content&&""!==e.Content;if(e.Content instanceof ArrayBuffer&&0d.opacity&&(d.transparent=!0);a.ReflectionFactor&&(d.reflectivity=a.ReflectionFactor.value);a.Shininess&&(d.shininess=a.Shininess.value);a.Specular?d.specular=(new THREE.Color).fromArray(a.Specular.value):a.SpecularColor&&"Color"===a.SpecularColor.type&&(d.specular=(new THREE.Color).fromArray(a.SpecularColor.value));var e=this;p.get(c).children.forEach(function(a){var c= a.relationship;switch(c){case "Bump":d.bumpMap=e.getTexture(b,a.ID);break;case "DiffuseColor":d.map=e.getTexture(b,a.ID);break;case "DisplacementColor":d.displacementMap=e.getTexture(b,a.ID);break;case "EmissiveColor":d.emissiveMap=e.getTexture(b,a.ID);break;case "NormalMap":d.normalMap=e.getTexture(b,a.ID);break;case "ReflectionColor":d.envMap=e.getTexture(b,a.ID);d.envMap.mapping=THREE.EquirectangularReflectionMapping;break;case "SpecularColor":d.specularMap=e.getTexture(b,a.ID);break;case "TransparentColor":d.alphaMap= e.getTexture(b,a.ID);d.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",c)}});return d},getTexture:function(a,b){"LayeredTexture"in n.Objects&&b in n.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),b=p.get(b).children[0].ID);return a.get(b)},parseDeformers:function(){var a={},b={};if("Deformer"in n.Objects){var c=n.Objects.Deformer,d;for(d in c){var e= c[d],f=p.get(parseInt(d));"Skin"===e.attrType?(e=this.parseSkeleton(f,c),e.ID=d,1r&&(r^=-1,q=!0);var t=[],w=[];f.push(3*r,3*r+1,3*r+2);if(a.color){var u=y(p,c,r,a.color);k.push(u[0],u[1],u[2])}if(a.skeleton){void 0!==a.weightTable[r]&&a.weightTable[r].forEach(function(a){w.push(a.weight);t.push(a.id)});if(4a&&(e[b]=c,c=a,a=F[b],F[b]=d,d=a)})});t=F;w=v}for(;4>w.length;)w.push(0),t.push(0);for(u=0;4>u;++u)m.push(w[u]),h.push(t[u])}a.normal&&(u=y(p,c,r,a.normal),g.push(u[0],u[1],u[2]));if(a.material&&"AllSame"!==a.material.mappingType)var x=y(p,c,r,a.material)[0];a.uv&&a.uv.forEach(function(a,b){var d=y(p,c,r,a);void 0===l[b]&&(l[b]=[]);l[b].push(d[0]);l[b].push(d[1])});d++;q&&(n.genFace(b,a,f,x,g,k,l,m,h,d),c++,d=0,f=[], g=[],k=[],l=[],m=[],h=[])});return b},genFace:function(a,b,c,d,e,f,g,k,l,m){for(var h=2;h=a.size():a.getOffset()+160+16>=a.size()},parseNode:function(a,b){var c={},d=7500<= b?a.getUint64():a.getUint32(),e=7500<=b?a.getUint64():a.getUint32();7500<=b?a.getUint64():a.getUint32();var f=a.getUint8();f=a.getString(f);if(0===d)return null;for(var g=[],k=0;ka.getOffset();)e=this.parseNode(a,b),null!==e&&this.parseSubNode(f,c,e);c.propertyList=g;"number"===typeof k&&(c.id=k);""!==l&&(c.attrName=l);""!==m&&(c.attrType=m); ""!==f&&(c.name=f);return c},parseSubNode:function(a,b,c){if(!0===c.singleProperty)a=c.propertyList[0],Array.isArray(a)?(b[c.name]=c,c.a=a):b[c.name]=a;else if("Connections"===a&&"C"===c.name){var d=[];c.propertyList.forEach(function(a,b){0!==b&&d.push(a)});void 0===b.connections&&(b.connections=[]);b.connections.push(d)}else if("Properties70"===c.name)Object.keys(c).forEach(function(a){b[a]=c[a]});else if("Properties70"===a&&"P"===c.name){a=c.propertyList[0];var e=c.propertyList[1],f=c.propertyList[2], g=c.propertyList[3];0===a.indexOf("Lcl ")&&(a=a.replace("Lcl ","Lcl_"));0===e.indexOf("Lcl ")&&(e=e.replace("Lcl ","Lcl_"));var k="Color"===e||"ColorRGB"===e||"Vector"===e||"Vector3D"===e||0===e.indexOf("Lcl_")?[c.propertyList[4],c.propertyList[5],c.propertyList[6]]:c.propertyList[4];b[a]={type:e,type2:f,flag:g,value:k}}else void 0===b[c.name]?"number"===typeof c.id?(b[c.name]={},b[c.name][c.id]=c):b[c.name]=c:"PoseNode"===c.name?(Array.isArray(b[c.name])||(b[c.name]=[b[c.name]]),b[c.name].push(c)): void 0===b[c.name][c.id]&&(b[c.name][c.id]=c)},parseProperty:function(a){var b=a.getString(1);switch(b){case "C":return a.getBoolean();case "D":return a.getFloat64();case "F":return a.getFloat32();case "I":return a.getInt32();case "L":return a.getInt64();case "R":return b=a.getUint32(),a.getArrayBuffer(b);case "S":return b=a.getUint32(),a.getString(b);case "Y":return a.getInt16();case "b":case "c":case "d":case "f":case "i":case "l":var c=a.getUint32(),d=a.getUint32(),e=a.getUint32();if(0===d)switch(b){case "b":case "c":return a.getBooleanArray(c); case "d":return a.getFloat64Array(c);case "f":return a.getFloat32Array(c);case "i":return a.getInt32Array(c);case "l":return a.getInt64Array(c)}"undefined"===typeof Zlib&&console.error("THREE.FBXLoader: External library Inflate.min.js required, obtain or import from https://github.com/imaya/zlib.js");a=new Zlib.Inflate(new Uint8Array(a.getArrayBuffer(e)));a=new v(a.decompress().buffer);switch(b){case "b":case "c":return a.getBooleanArray(c);case "d":return a.getFloat64Array(c);case "f":return a.getFloat32Array(c); case "i":return a.getInt32Array(c);case "l":return a.getInt64Array(c)}default:throw Error("THREE.FBXLoader: Unknown property type "+b);}}};v.prototype={constructor:v,getOffset:function(){return this.offset},size:function(){return this.dv.buffer.byteLength},skip:function(a){this.offset+=a},getBoolean:function(){return 1===(this.getUint8()&1)},getBooleanArray:function(a){for(var b=[],c=0;c