1 |
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).Potree={})}(this,function(W){"use strict";function i(o){var r,a;function s(n,e){try{var i=o[n](e),r=i.value,a=r instanceof u;Promise.resolve(a?r.v:r).then(function(e){if(a){var t="return"===n?"return":"next";if(!r.k||e.done)return s(t,e);e=o[t](e).value}l(i.done?"return":"normal",e)},function(e){s("throw",e)})}catch(e){l("throw",e)}}function l(e,t){switch(e){case"return":r.resolve({value:t,done:!0});break;case"throw":r.reject(t);break;default:r.resolve({value:t,done:!1})}(r=r.next)?s(r.key,r.arg):a=null}this._invoke=function(n,i){return new Promise(function(e,t){e={key:n,arg:i,resolve:e,reject:t,next:null};a?a=a.next=e:(r=a=e,s(n,i))})},"function"!=typeof o.return&&(this.return=void 0)}function u(e,t){this.v=e,this.k=t}function c(e){var t,n,i,r=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,i=Symbol.iterator);r--;){if(n&&null!=(t=e[n]))return t.call(e);if(i&&null!=(t=e[i]))return new o(t.call(e));n="@@asyncIterator",i="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function n(e){var t;return Object(e)!==e?Promise.reject(new TypeError(e+" is not an object.")):(t=e.done,Promise.resolve(e.value).then(function(e){return{value:e,done:t}}))}return(o=function(e){this.s=e,this.n=e.next}).prototype={s:null,n:null,next:function(){return n(this.n.apply(this.s,arguments))},return:function(e){var t=this.s.return;return void 0===t?Promise.resolve({value:e,done:!0}):n(t.apply(this.s,arguments))},throw:function(e){var t=this.s.return;return void 0===t?Promise.reject(e):n(t.apply(this.s,arguments))}},new o(e)}function h(e){return new u(e,0)}function s(t,e){var n,i=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),i.push.apply(i,n)),i}function g(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?s(Object(n),!0).forEach(function(e){z(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function V(){V=function(){return o};var o={},e=Object.prototype,l=e.hasOwnProperty,u=Object.defineProperty||function(e,t,n){e[t]=n.value},t="function"==typeof Symbol?Symbol:{},i=t.iterator||"@@iterator",n=t.asyncIterator||"@@asyncIterator",r=t.toStringTag||"@@toStringTag";function a(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{a({},"")}catch(e){a=function(e,t,n){return e[t]=n}}function s(e,t,n,i){var r,a,o,s,t=t&&t.prototype instanceof d?t:d,t=Object.create(t.prototype),i=new b(i||[]);return u(t,"_invoke",{value:(r=e,a=n,o=i,s="suspendedStart",function(e,t){if("executing"===s)throw new Error("Generator is already running");if("completed"===s){if("throw"===e)throw t;return E()}for(o.method=e,o.arg=t;;){var n=o.delegate;if(n){n=function e(t,n){var i=n.method,r=t.iterator[i];if(void 0===r)return n.delegate=null,"throw"===i&&t.iterator.return&&(n.method="return",n.arg=void 0,e(t,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+i+"' method")),h;i=c(r,t.iterator,n.arg);if("throw"===i.type)return n.method="throw",n.arg=i.arg,n.delegate=null,h;r=i.arg;return r?r.done?(n[t.resultName]=r.value,n.next=t.nextLoc,"return"!==n.method&&(n.method="next",n.arg=void 0),n.delegate=null,h):r:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,h)}(n,o);if(n){if(n===h)continue;return n}}if("next"===o.method)o.sent=o._sent=o.arg;else if("throw"===o.method){if("suspendedStart"===s)throw s="completed",o.arg;o.dispatchException(o.arg)}else"return"===o.method&&o.abrupt("return",o.arg);s="executing";n=c(r,a,o);if("normal"===n.type){if(s=o.done?"completed":"suspendedYield",n.arg===h)continue;return{value:n.arg,done:o.done}}"throw"===n.type&&(s="completed",o.method="throw",o.arg=n.arg)}})}),t}function c(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}o.wrap=s;var h={};function d(){}function p(){}function f(){}var t={},m=(a(t,i,function(){return this}),Object.getPrototypeOf),m=m&&m(m(x([]))),v=(m&&m!==e&&l.call(m,i)&&(t=m),f.prototype=d.prototype=Object.create(t));function g(e){["next","throw","return"].forEach(function(t){a(e,t,function(e){return this._invoke(t,e)})})}function A(o,s){var t;u(this,"_invoke",{value:function(n,i){function e(){return new s(function(e,t){!function t(e,n,i,r){var a,e=c(o[e],o,n);if("throw"!==e.type)return(n=(a=e.arg).value)&&"object"==typeof n&&l.call(n,"__await")?s.resolve(n.__await).then(function(e){t("next",e,i,r)},function(e){t("throw",e,i,r)}):s.resolve(n).then(function(e){a.value=e,i(a)},function(e){return t("throw",e,i,r)});r(e.arg)}(n,i,e,t)})}return t=t?t.then(e,e):e()}})}function y(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function w(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function b(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(y,this),this.reset(!0)}function x(t){if(t){var n,e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length))return n=-1,(e=function e(){for(;++n<t.length;)if(l.call(t,n))return e.value=t[n],e.done=!1,e;return e.value=void 0,e.done=!0,e}).next=e}return{next:E}}function E(){return{value:void 0,done:!0}}return u(v,"constructor",{value:p.prototype=f,configurable:!0}),u(f,"constructor",{value:p,configurable:!0}),p.displayName=a(f,r,"GeneratorFunction"),o.isGeneratorFunction=function(e){e="function"==typeof e&&e.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},o.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,f):(e.__proto__=f,a(e,r,"GeneratorFunction")),e.prototype=Object.create(v),e},o.awrap=function(e){return{__await:e}},g(A.prototype),a(A.prototype,n,function(){return this}),o.AsyncIterator=A,o.async=function(e,t,n,i,r){void 0===r&&(r=Promise);var a=new A(s(e,t,n,i),r);return o.isGeneratorFunction(t)?a:a.next().then(function(e){return e.done?e.value:a.next()})},g(v),a(v,r,"Generator"),a(v,i,function(){return this}),a(v,"toString",function(){return"[object Generator]"}),o.keys=function(e){var t,n=Object(e),i=[];for(t in n)i.push(t);return i.reverse(),function e(){for(;i.length;){var t=i.pop();if(t in n)return e.value=t,e.done=!1,e}return e.done=!0,e}},o.values=x,b.prototype={constructor:b,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(w),!e)for(var t in this)"t"===t.charAt(0)&&l.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var i=this;function e(e,t){return a.type="throw",a.arg=n,i.next=e,t&&(i.method="next",i.arg=void 0),!!t}for(var t=this.tryEntries.length-1;0<=t;--t){var r=this.tryEntries[t],a=r.completion;if("root"===r.tryLoc)return e("end");if(r.tryLoc<=this.prev){var o=l.call(r,"catchLoc"),s=l.call(r,"finallyLoc");if(o&&s){if(this.prev<r.catchLoc)return e(r.catchLoc,!0);if(this.prev<r.finallyLoc)return e(r.finallyLoc)}else if(o){if(this.prev<r.catchLoc)return e(r.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<r.finallyLoc)return e(r.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;0<=n;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&l.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var r=i;break}}var a=(r=r&&("break"===e||"continue"===e)&&r.tryLoc<=t&&t<=r.finallyLoc?null:r)?r.completion:{};return a.type=e,a.arg=t,r?(this.method="next",this.next=r.finallyLoc,h):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),w(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;0<=t;--t){var n,i,r=this.tryEntries[t];if(r.tryLoc===e)return"throw"===(n=r.completion).type&&(i=n.arg,w(r)),i}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:x(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),h}},o}function v(e){return(v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function p(e){return function(){return new i(e.apply(this,arguments))}}function f(e,t,n,i,r,a,o){try{var s=e[a](o),l=s.value}catch(e){return void n(e)}s.done?t(l):Promise.resolve(l).then(i,r)}function d(s){return function(){var e=this,o=arguments;return new Promise(function(t,n){var i=s.apply(e,o);function r(e){f(i,t,n,r,a,"next",e)}function a(e){f(i,t,n,r,a,"throw",e)}r(void 0)})}}function te(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function m(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,se(i.key),i)}}function A(e,t,n){return t&&m(e.prototype,t),n&&m(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function z(e,t,n){return(t=se(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&T(e,t)}function _(e){return(_=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function T(e,t){return(T=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function S(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}function re(e,t,n){return(re=S()?Reflect.construct.bind():function(e,t,n){var i=[null];i.push.apply(i,t);t=new(Function.bind.apply(e,i));return n&&T(t,n.prototype),t}).apply(null,arguments)}function G(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function I(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return G(e)}function C(n){var i=S();return function(){var e,t=_(n);return I(this,i?(e=_(this).constructor,Reflect.construct(t,arguments,e)):t.apply(this,arguments))}}function P(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_(e)););return e}function k(){return(k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var i=P(e,t);if(i)return(i=Object.getOwnPropertyDescriptor(i,t)).get?i.get.call(arguments.length<3?e:n):i.value}).apply(this,arguments)}function R(e,t,n,i){return(R="undefined"!=typeof Reflect&&Reflect.set?Reflect.set:function(e,t,n,i){var r,e=P(e,t);if(e){if((r=Object.getOwnPropertyDescriptor(e,t)).set)return r.set.call(i,n),!0;if(!r.writable)return!1}if(r=Object.getOwnPropertyDescriptor(i,t)){if(!r.writable)return!1;r.value=n,Object.defineProperty(i,t,r)}else z(i,t,n);return!0})(e,t,n,i)}function N(e,t){return F(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var i,r,a,o,s=[],l=!0,u=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(i=a.call(n)).done)&&(s.push(i.value),s.length!==t);l=!0);}catch(e){u=!0,r=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw r}}return s}}(e,t)||H(e,t)||oe()}function J(e){return function(e){if(Array.isArray(e))return ae(e)}(e)||O(e)||H(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e){if(Array.isArray(e))return e}function O(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function H(e,t){var n;if(e)return"string"==typeof e?ae(e,t):"Map"===(n="Object"===(n=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:n)||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ae(e,t):void 0}function ae(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}function oe(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function q(e,t){var n,i,r,a,o="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(o)return i=!(n=!0),{s:function(){o=o.call(e)},n:function(){var e=o.next();return n=e.done,e},e:function(e){i=!0,r=e},f:function(){try{n||null==o.return||o.return()}finally{if(i)throw r}}};if(Array.isArray(e)||(o=H(e))||t&&e&&"number"==typeof e.length)return o&&(e=o),a=0,{s:t=function(){},n:function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function se(e){e=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);if("object"!=typeof(n=n.call(e,t||"default")))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:String(e)}i.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},i.prototype.next=function(e){return this._invoke("next",e)},i.prototype.throw=function(e){return this._invoke("throw",e)},i.prototype.return=function(e){return this._invoke("return",e)};var le={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},ue=0,ce=1,he=2,de=1,pe=3,fe=0,me=1,ve=2,ge=0,Ae=1,ye=2,we=3,be=4,xe=5,Ee=100,Ce=101,Te=102,Se=103,Ie=104,De=200,Pe=201,ke=202,Fe=203,Oe=204,Ne=205,Ge=206,Ue=207,ze=208,He=209,Qe=210,Ve=0,je=1,We=2,Je=3,qe=4,Xe=5,Ye=6,Ke=7,Ze=0,$e=0,et=301,tt=302,nt=303,it=304,rt=306,at=307,ot=1e3,st=1001,lt=1002,ut=1003,ct=1004,ht=1005,U=1006,dt=1007,pt=1008,ft=1008,mt=1009,vt=1010,gt=1011,At=1012,yt=1013,wt=1014,bt=1015,xt=1016,Et=1017,Ct=1018,Bt=1019,_t=1020,Mt=1021,Tt=1022,St=1023,It=1024,Dt=1025,Pt=St,kt=1026,Lt=1027,Rt=1028,Ft=1029,Ot=1030,Nt=1031,Gt=1032,Ut=1033,zt=33776,Ht=33777,Qt=33778,Vt=33779,jt=35840,Wt=35841,Jt=35842,qt=35843,Xt=36196,Yt=37492,Kt=37496,Zt=37808,$t=37809,en=37810,tn=37811,nn=37812,rn=37813,an=37814,on=37815,sn=37816,ln=37817,un=37818,cn=37819,hn=37820,dn=37821,pn=36492,fn=37840,mn=37841,vn=37842,gn=37843,An=37844,yn=37845,wn=37846,bn=37847,xn=37848,En=37849,Cn=37850,Bn=37851,_n=37852,Mn=37853,Tn=2300,Sn=2301,In=2400,Dn=2401,Pn=2402,kn=3e3,Ln=3001,Rn=3201,Fn=0,On=1,Nn=35044,Gn=35048,Un="300 es";function zn(){}Object.assign(zn.prototype,{addEventListener:function(e,t){void 0===this._listeners&&(this._listeners={});var n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)},hasEventListener:function(e,t){var n;return void 0!==this._listeners&&void 0!==(n=this._listeners)[e]&&-1!==n[e].indexOf(t)},dispatchEvent:function(e){if(void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;for(var n=t.slice(0),i=0,r=n.length;i<r;i++)n[i].call(this,e)}}}});for(var Hn=[],Qn=0;Qn<256;Qn++)Hn[Qn]=(Qn<16?"0":"")+Qn.toString(16);var Vn,jn=1234567,Be={DEG2RAD:Math.PI/180,RAD2DEG:180/Math.PI,generateUUID:function(){var e=4294967295*Math.random()|0,t=4294967295*Math.random()|0,n=4294967295*Math.random()|0,i=4294967295*Math.random()|0;return(Hn[255&e]+Hn[e>>8&255]+Hn[e>>16&255]+Hn[e>>24&255]+"-"+Hn[255&t]+Hn[t>>8&255]+"-"+Hn[t>>16&15|64]+Hn[t>>24&255]+"-"+Hn[63&n|128]+Hn[n>>8&255]+"-"+Hn[n>>16&255]+Hn[n>>24&255]+Hn[255&i]+Hn[i>>8&255]+Hn[i>>16&255]+Hn[i>>24&255]).toUpperCase()},clamp:function(e,t,n){return Math.max(t,Math.min(n,e))},euclideanModulo:function(e,t){return(e%t+t)%t},mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},lerp:function(e,t,n){return(1-n)*e+n*t},smoothstep:function(e,t,n){return e<=t?0:n<=e?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:n<=e?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){return((jn=16807*(jn=void 0!==e?e%2147483647:jn)%2147483647)-1)/2147483646},degToRad:function(e){return e*Be.DEG2RAD},radToDeg:function(e){return e*Be.RAD2DEG},isPowerOfTwo:function(e){return 0==(e&e-1)&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,n,i,r){var a=Math.cos,o=Math.sin,s=a(n/2),l=o(n/2),u=a((t+i)/2),c=o((t+i)/2),h=a((t-i)/2),d=o((t-i)/2),p=a((i-t)/2),f=o((i-t)/2);switch(r){case"XYX":e.set(s*c,l*h,l*d,s*u);break;case"YZY":e.set(l*d,s*c,l*h,s*u);break;case"ZXZ":e.set(l*h,l*d,s*c,s*u);break;case"XZX":e.set(s*c,l*f,l*p,s*u);break;case"YXY":e.set(l*p,s*c,l*f,s*u);break;case"ZYZ":e.set(l*f,l*p,s*c,s*u);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}},Le=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;te(this,n),Object.defineProperty(this,"isVector2",{value:!0}),this.x=e,this.y=t}return A(n,[{key:"width",get:function(){return this.x},set:function(e){this.x=e}},{key:"height",get:function(){return this.y},set:function(e){this.y=e}},{key:"set",value:function(e,t){return this.x=e,this.y=t,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this}},{key:"add",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}},{key:"sub",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}},{key:"multiply",value:function(e){return this.x*=e.x,this.y*=e.y,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this}},{key:"divide",value:function(e){return this.x/=e.x,this.y/=e.y,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"applyMatrix3",value:function(e){var t=this.x,n=this.y,e=e.elements;return this.x=e[0]*t+e[3]*n+e[6],this.y=e[1]*t+e[4]*n+e[7],this}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}},{key:"clampLength",value:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y}},{key:"cross",value:function(e){return this.x*e.y-this.y*e.x}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"angle",value:function(){return Math.atan2(-this.y,-this.x)+Math.PI}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceToSquared(e))}},{key:"distanceToSquared",value:function(e){var t=this.x-e.x,e=this.y-e.y;return t*t+e*e}},{key:"manhattanDistanceTo",value:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}},{key:"lerpVectors",value:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e}},{key:"fromBufferAttribute",value:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}},{key:"rotateAround",value:function(e,t){var n=Math.cos(t),t=Math.sin(t),i=this.x-e.x,r=this.y-e.y;return this.x=i*n-r*t+e.x,this.y=i*t+r*n+e.y,this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this}}]),n}(),Wn=function(){function e(){te(this,e),Object.defineProperty(this,"isMatrix3",{value:!0}),this.elements=[1,0,0,0,1,0,0,0,1],0<arguments.length&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}return A(e,[{key:"set",value:function(e,t,n,i,r,a,o,s,l){var u=this.elements;return u[0]=e,u[1]=i,u[2]=o,u[3]=t,u[4]=r,u[5]=s,u[6]=n,u[7]=a,u[8]=l,this}},{key:"identity",value:function(){return this.set(1,0,0,0,1,0,0,0,1),this}},{key:"clone",value:function(){return(new this.constructor).fromArray(this.elements)}},{key:"copy",value:function(e){var t=this.elements,e=e.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],this}},{key:"extractBasis",value:function(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}},{key:"setFromMatrix4",value:function(e){e=e.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}},{key:"multiply",value:function(e){return this.multiplyMatrices(this,e)}},{key:"premultiply",value:function(e){return this.multiplyMatrices(e,this)}},{key:"multiplyMatrices",value:function(e,t){var e=e.elements,t=t.elements,n=this.elements,i=e[0],r=e[3],a=e[6],o=e[1],s=e[4],l=e[7],u=e[2],c=e[5],e=e[8],h=t[0],d=t[3],p=t[6],f=t[1],m=t[4],v=t[7],g=t[2],A=t[5],t=t[8];return n[0]=i*h+r*f+a*g,n[3]=i*d+r*m+a*A,n[6]=i*p+r*v+a*t,n[1]=o*h+s*f+l*g,n[4]=o*d+s*m+l*A,n[7]=o*p+s*v+l*t,n[2]=u*h+c*f+e*g,n[5]=u*d+c*m+e*A,n[8]=u*p+c*v+e*t,this}},{key:"multiplyScalar",value:function(e){var t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}},{key:"determinant",value:function(){var e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],e=e[8];return t*a*e-t*o*l-n*r*e+n*o*s+i*r*l-i*a*s}},{key:"invert",value:function(){var e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=u*a-o*l,h=o*s-u*r,d=l*r-a*s,p=t*c+n*h+i*d;return 0==p?this.set(0,0,0,0,0,0,0,0,0):(e[0]=c*(c=1/p),e[1]=(i*l-u*n)*c,e[2]=(o*n-i*a)*c,e[3]=h*c,e[4]=(u*t-i*s)*c,e[5]=(i*r-o*t)*c,e[6]=d*c,e[7]=(n*s-l*t)*c,e[8]=(a*t-n*r)*c,this)}},{key:"transpose",value:function(){var e=this.elements,t=e[1];return e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}},{key:"getNormalMatrix",value:function(e){return this.setFromMatrix4(e).copy(this).invert().transpose()}},{key:"transposeIntoArray",value:function(e){var t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}},{key:"setUvTransform",value:function(e,t,n,i,r,a,o){var s=Math.cos(r),r=Math.sin(r);return this.set(n*s,n*r,-n*(s*a+r*o)+a+e,-i*r,i*s,-i*(-r*a+s*o)+o+t,0,0,1),this}},{key:"scale",value:function(e,t){var n=this.elements;return n[0]*=e,n[3]*=e,n[6]*=e,n[1]*=t,n[4]*=t,n[7]*=t,this}},{key:"rotate",value:function(e){var t=Math.cos(e),e=Math.sin(e),n=this.elements,i=n[0],r=n[3],a=n[6],o=n[1],s=n[4],l=n[7];return n[0]=t*i+e*o,n[3]=t*r+e*s,n[6]=t*a+e*l,n[1]=-e*i+t*o,n[4]=-e*r+t*s,n[7]=-e*a+t*l,this}},{key:"translate",value:function(e,t){var n=this.elements;return n[0]+=e*n[2],n[3]+=e*n[5],n[6]+=e*n[8],n[1]+=t*n[2],n[4]+=t*n[5],n[7]+=t*n[8],this}},{key:"equals",value:function(e){for(var t=this.elements,n=e.elements,i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<9;n++)this.elements[n]=e[n+t];return this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}}]),e}(),Jn={getDataURL:function(e){var t;return/^data:/i.test(e.src)||"undefined"==typeof HTMLCanvasElement?e.src:2048<(t=e instanceof HTMLCanvasElement?e:((Vn=void 0===Vn?document.createElementNS("http://www.w3.org/1999/xhtml","canvas"):Vn).width=e.width,Vn.height=e.height,t=Vn.getContext("2d"),e instanceof ImageData?t.putImageData(e,0,0):t.drawImage(e,0,0,e.width,e.height),Vn)).width||2048<t.height?t.toDataURL("image/jpeg",.6):t.toDataURL("image/png")}},qn=0;function Xn(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:Xn.DEFAULT_IMAGE,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Xn.DEFAULT_MAPPING,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:st,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:st,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:U,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:pt,o=6<arguments.length&&void 0!==arguments[6]?arguments[6]:St,s=7<arguments.length&&void 0!==arguments[7]?arguments[7]:mt,l=8<arguments.length&&void 0!==arguments[8]?arguments[8]:1,u=9<arguments.length&&void 0!==arguments[9]?arguments[9]:kn;Object.defineProperty(this,"id",{value:qn++}),this.uuid=Be.generateUUID(),this.name="",this.image=e,this.mipmaps=[],this.mapping=t,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=l,this.format=o,this.internalFormat=null,this.type=s,this.offset=new Le(0,0),this.repeat=new Le(1,1),this.center=new Le(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Wn,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=u,this.version=0,this.onUpdate=null}function Yn(e){return"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?Jn.getDataURL(e):e.data?{data:Array.prototype.slice.call(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}Xn.DEFAULT_IMAGE=void 0,Xn.DEFAULT_MAPPING=300,Xn.prototype=Object.assign(Object.create(zn.prototype),{constructor:Xn,isTexture:!0,updateMatrix:function(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.name=e.name,this.image=e.image,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.encoding=e.encoding,this},toJSON:function(e){var t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];var n={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,type:this.type,encoding:this.encoding,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};if(void 0!==this.image){var i=this.image;if(void 0===i.uuid&&(i.uuid=Be.generateUUID()),!t&&void 0===e.images[i.uuid]){if(Array.isArray(i))for(var r=[],a=0,o=i.length;a<o;a++)i[a].isDataTexture?r.push(Yn(i[a].image)):r.push(Yn(i[a]));else r=Yn(i);e.images[i.uuid]={uuid:i.uuid,url:r}}n.image=i.uuid}return t||(e.textures[this.uuid]=n),n},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(e){if(300===this.mapping){if(e.applyMatrix3(this.matrix),e.x<0||1<e.x)switch(this.wrapS){case ot:e.x=e.x-Math.floor(e.x);break;case st:e.x=e.x<0?0:1;break;case lt:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||1<e.y)switch(this.wrapT){case ot:e.y=e.y-Math.floor(e.y);break;case st:e.y=e.y<0?0:1;break;case lt:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}this.flipY&&(e.y=1-e.y)}return e}}),Object.defineProperty(Xn.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}});var Kn=function(){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;te(this,r),Object.defineProperty(this,"isVector4",{value:!0}),this.x=e,this.y=t,this.z=n,this.w=i}return A(r,[{key:"width",get:function(){return this.z},set:function(e){this.z=e}},{key:"height",get:function(){return this.w},set:function(e){this.w=e}},{key:"set",value:function(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setZ",value:function(e){return this.z=e,this}},{key:"setW",value:function(e){return this.w=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z,this.w)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}},{key:"add",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}},{key:"sub",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}},{key:"applyMatrix4",value:function(e){var t=this.x,n=this.y,i=this.z,r=this.w,e=e.elements;return this.x=e[0]*t+e[4]*n+e[8]*i+e[12]*r,this.y=e[1]*t+e[5]*n+e[9]*i+e[13]*r,this.z=e[2]*t+e[6]*n+e[10]*i+e[14]*r,this.w=e[3]*t+e[7]*n+e[11]*i+e[15]*r,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"setAxisAngleFromQuaternion",value:function(e){this.w=2*Math.acos(e.w);var t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}},{key:"setAxisAngleFromRotationMatrix",value:function(e){var t,n,i,r,a,o,s,l,u,c,e=e.elements,h=e[0],d=e[4],p=e[8],f=e[1],m=e[5],v=e[9],g=e[2],A=e[6],e=e[10];return Math.abs(d-f)<.01&&Math.abs(p-g)<.01&&Math.abs(v-A)<.01?Math.abs(d+f)<.1&&Math.abs(p+g)<.1&&Math.abs(v+A)<.1&&Math.abs(h+m+e-3)<.1?this.set(1,0,0,0):(r=Math.PI,o=(e+1)/2,s=(d+f)/4,l=(p+g)/4,u=(v+A)/4,(a=(m+1)/2)<(c=(h+1)/2)&&o<c?i=c<.01?(t=0,n=.707106781):(n=s/(t=Math.sqrt(c)),l/t):o<a?i=a<.01?(n=0,t=.707106781):(t=s/(n=Math.sqrt(a)),u/n):o<.01?(n=t=.707106781,i=0):(t=l/(i=Math.sqrt(o)),n=u/i),this.set(t,n,i,r)):(c=Math.sqrt((A-v)*(A-v)+(p-g)*(p-g)+(f-d)*(f-d)),Math.abs(c)<.001&&(c=1),this.x=(A-v)/c,this.y=(p-g)/c,this.z=(f-d)/c,this.w=Math.acos((h+m+e-1)/2)),this}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}},{key:"clampLength",value:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}},{key:"lerpVectors",value:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}},{key:"fromBufferAttribute",value:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}}]),r}();function Zn(e,t,n){this.width=e,this.height=t,this.scissor=new Kn(0,0,e,t),this.scissorTest=!1,this.viewport=new Kn(0,0,e,t),this.texture=new Xn(void 0,(n=n||{}).mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.image={},this.texture.image.width=e,this.texture.image.height=t,this.texture.generateMipmaps=void 0!==n.generateMipmaps&&n.generateMipmaps,this.texture.minFilter=void 0!==n.minFilter?n.minFilter:U,this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0!==n.stencilBuffer&&n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null}function $n(e,t,n){Zn.call(this,e,t,n),this.samples=4}Zn.prototype=Object.assign(Object.create(zn.prototype),{constructor:Zn,isWebGLRenderTarget:!0,setSize:function(e,t){this.width===e&&this.height===t||(this.width=e,this.height=t,this.texture.image.width=e,this.texture.image.height=t,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.width=e.width,this.height=e.height,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.depthTexture=e.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),$n.prototype=Object.assign(Object.create(Zn.prototype),{constructor:$n,isWebGLMultisampleRenderTarget:!0,copy:function(e){return Zn.prototype.copy.call(this,e),this.samples=e.samples,this}});var X=function(){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;te(this,r),Object.defineProperty(this,"isQuaternion",{value:!0}),this._x=e,this._y=t,this._z=n,this._w=i}return A(r,[{key:"x",get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},{key:"w",get:function(){return this._w},set:function(e){this._w=e,this._onChangeCallback()}},{key:"set",value:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}},{key:"clone",value:function(){return new this.constructor(this._x,this._y,this._z,this._w)}},{key:"copy",value:function(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}},{key:"setFromEuler",value:function(e,t){if(!e||!e.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=e._x,i=e._y,r=e._z,a=e._order,e=Math.cos,o=Math.sin,s=e(n/2),l=e(i/2),u=e(r/2),c=o(n/2),h=o(i/2),d=o(r/2);switch(a){case"XYZ":this._x=c*l*u+s*h*d,this._y=s*h*u-c*l*d,this._z=s*l*d+c*h*u,this._w=s*l*u-c*h*d;break;case"YXZ":this._x=c*l*u+s*h*d,this._y=s*h*u-c*l*d,this._z=s*l*d-c*h*u,this._w=s*l*u+c*h*d;break;case"ZXY":this._x=c*l*u-s*h*d,this._y=s*h*u+c*l*d,this._z=s*l*d+c*h*u,this._w=s*l*u-c*h*d;break;case"ZYX":this._x=c*l*u-s*h*d,this._y=s*h*u+c*l*d,this._z=s*l*d-c*h*u,this._w=s*l*u+c*h*d;break;case"YZX":this._x=c*l*u+s*h*d,this._y=s*h*u+c*l*d,this._z=s*l*d-c*h*u,this._w=s*l*u-c*h*d;break;case"XZY":this._x=c*l*u-s*h*d,this._y=s*h*u-c*l*d,this._z=s*l*d+c*h*u,this._w=s*l*u+c*h*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!1!==t&&this._onChangeCallback(),this}},{key:"setFromAxisAngle",value:function(e,t){var t=t/2,n=Math.sin(t);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(t),this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(e){var e=e.elements,t=e[0],n=e[4],i=e[8],r=e[1],a=e[5],o=e[9],s=e[2],l=e[6],e=e[10],u=t+a+e;return 0<u?(u=.5/Math.sqrt(u+1),this._w=.25/u,this._x=(l-o)*u,this._y=(i-s)*u,this._z=(r-n)*u):a<t&&e<t?(u=2*Math.sqrt(1+t-a-e),this._w=(l-o)/u,this._x=.25*u,this._y=(n+r)/u,this._z=(i+s)/u):e<a?(u=2*Math.sqrt(1+a-t-e),this._w=(i-s)/u,this._x=(n+r)/u,this._y=.25*u,this._z=(o+l)/u):(u=2*Math.sqrt(1+e-t-a),this._w=(r-n)/u,this._x=(i+s)/u,this._y=(o+l)/u,this._z=.25*u),this._onChangeCallback(),this}},{key:"setFromUnitVectors",value:function(e,t){var n=e.dot(t)+1;return n<1e-6?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=n,this.normalize()}},{key:"angleTo",value:function(e){return 2*Math.acos(Math.abs(Be.clamp(this.dot(e),-1,1)))}},{key:"rotateTowards",value:function(e,t){var n=this.angleTo(e);return 0!==n&&(t=Math.min(1,t/n),this.slerp(e,t)),this}},{key:"identity",value:function(){return this.set(0,0,0,1)}},{key:"invert",value:function(){return this.conjugate()}},{key:"conjugate",value:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}},{key:"dot",value:function(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}},{key:"lengthSq",value:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}},{key:"length",value:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}},{key:"normalize",value:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(this._x=this._x*(e=1/e),this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}},{key:"multiply",value:function(e,t){return void 0!==t?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}},{key:"premultiply",value:function(e){return this.multiplyQuaternions(e,this)}},{key:"multiplyQuaternions",value:function(e,t){var n=e._x,i=e._y,r=e._z,e=e._w,a=t._x,o=t._y,s=t._z,t=t._w;return this._x=n*t+e*a+i*s-r*o,this._y=i*t+e*o+r*a-n*s,this._z=r*t+e*s+n*o-i*a,this._w=e*t-n*a-i*o-r*s,this._onChangeCallback(),this}},{key:"slerp",value:function(e,t){if(0!==t){if(1===t)return this.copy(e);var n,i=this._x,r=this._y,a=this._z,o=this._w,s=o*e._w+i*e._x+r*e._y+a*e._z;s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),1<=s?(this._w=o,this._x=i,this._y=r,this._z=a):((e=1-s*s)<=Number.EPSILON?(this._w=(n=1-t)*o+t*this._w,this._x=n*i+t*this._x,this._y=n*r+t*this._y,this._z=n*a+t*this._z,this.normalize()):(n=Math.sqrt(e),e=Math.atan2(n,s),s=Math.sin((1-t)*e)/n,t=Math.sin(t*e)/n,this._w=o*s+this._w*t,this._x=i*s+this._x*t,this._y=r*s+this._y*t,this._z=a*s+this._z*t),this._onChangeCallback())}return this}},{key:"equals",value:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}},{key:"fromBufferAttribute",value:function(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}},{key:"_onChange",value:function(e){return this._onChangeCallback=e,this}},{key:"_onChangeCallback",value:function(){}}],[{key:"slerp",value:function(e,t,n,i){return n.copy(e).slerp(t,i)}},{key:"slerpFlat",value:function(e,t,n,i,r,a,o){var s,l,u,c=n[i+0],h=n[i+1],d=n[i+2],n=n[i+3],i=r[a+0],p=r[a+1],f=r[a+2],r=r[a+3];n===r&&c===i&&h===p&&d===f||(a=1-o,s=0<=(l=c*i+h*p+d*f+n*r)?1:-1,(u=1-l*l)>Number.EPSILON&&(u=Math.sqrt(u),l=Math.atan2(u,l*s),a=Math.sin(a*l)/u,o=Math.sin(o*l)/u),c=c*a+i*(l=o*s),h=h*a+p*l,d=d*a+f*l,n=n*a+r*l,a===1-o&&(c*=u=1/Math.sqrt(c*c+h*h+d*d+n*n),h*=u,d*=u,n*=u)),e[t]=c,e[t+1]=h,e[t+2]=d,e[t+3]=n}},{key:"multiplyQuaternionsFlat",value:function(e,t,n,i,r,a){var o=n[i],s=n[i+1],l=n[i+2],n=n[i+3],i=r[a],u=r[a+1],c=r[a+2],r=r[a+3];return e[t]=o*r+n*i+s*c-l*u,e[t+1]=s*r+n*u+l*i-o*c,e[t+2]=l*r+n*c+o*u-s*i,e[t+3]=n*r-o*i-s*u-l*c,e}}]),r}(),Re=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;te(this,i),Object.defineProperty(this,"isVector3",{value:!0}),this.x=e,this.y=t,this.z=n}return A(i,[{key:"set",value:function(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this}},{key:"setScalar",value:function(e){return this.x=e,this.y=e,this.z=e,this}},{key:"setX",value:function(e){return this.x=e,this}},{key:"setY",value:function(e){return this.y=e,this}},{key:"setZ",value:function(e){return this.z=e,this}},{key:"setComponent",value:function(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}},{key:"getComponent",value:function(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}},{key:"clone",value:function(){return new this.constructor(this.x,this.y,this.z)}},{key:"copy",value:function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}},{key:"add",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}},{key:"addScalar",value:function(e){return this.x+=e,this.y+=e,this.z+=e,this}},{key:"addVectors",value:function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}},{key:"addScaledVector",value:function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}},{key:"sub",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}},{key:"subScalar",value:function(e){return this.x-=e,this.y-=e,this.z-=e,this}},{key:"subVectors",value:function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}},{key:"multiply",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}},{key:"multiplyScalar",value:function(e){return this.x*=e,this.y*=e,this.z*=e,this}},{key:"multiplyVectors",value:function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}},{key:"applyEuler",value:function(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(ti.setFromEuler(e))}},{key:"applyAxisAngle",value:function(e,t){return this.applyQuaternion(ti.setFromAxisAngle(e,t))}},{key:"applyMatrix3",value:function(e){var t=this.x,n=this.y,i=this.z,e=e.elements;return this.x=e[0]*t+e[3]*n+e[6]*i,this.y=e[1]*t+e[4]*n+e[7]*i,this.z=e[2]*t+e[5]*n+e[8]*i,this}},{key:"applyNormalMatrix",value:function(e){return this.applyMatrix3(e).normalize()}},{key:"applyMatrix4",value:function(e){var t=this.x,n=this.y,i=this.z,e=e.elements,r=1/(e[3]*t+e[7]*n+e[11]*i+e[15]);return this.x=(e[0]*t+e[4]*n+e[8]*i+e[12])*r,this.y=(e[1]*t+e[5]*n+e[9]*i+e[13])*r,this.z=(e[2]*t+e[6]*n+e[10]*i+e[14])*r,this}},{key:"applyQuaternion",value:function(e){var t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,o=e.z,e=e.w,s=e*t+a*i-o*n,l=e*n+o*t-r*i,u=e*i+r*n-a*t,t=-r*t-a*n-o*i;return this.x=s*e+t*-r+l*-o-u*-a,this.y=l*e+t*-a+u*-r-s*-o,this.z=u*e+t*-o+s*-a-l*-r,this}},{key:"project",value:function(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}},{key:"unproject",value:function(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}},{key:"transformDirection",value:function(e){var t=this.x,n=this.y,i=this.z,e=e.elements;return this.x=e[0]*t+e[4]*n+e[8]*i,this.y=e[1]*t+e[5]*n+e[9]*i,this.z=e[2]*t+e[6]*n+e[10]*i,this.normalize()}},{key:"divide",value:function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}},{key:"divideScalar",value:function(e){return this.multiplyScalar(1/e)}},{key:"min",value:function(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}},{key:"max",value:function(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}},{key:"clamp",value:function(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}},{key:"clampScalar",value:function(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}},{key:"clampLength",value:function(e,t){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}},{key:"floor",value:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}},{key:"ceil",value:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}},{key:"round",value:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}},{key:"roundToZero",value:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}},{key:"negate",value:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}},{key:"dot",value:function(e){return this.x*e.x+this.y*e.y+this.z*e.z}},{key:"lengthSq",value:function(){return this.x*this.x+this.y*this.y+this.z*this.z}},{key:"length",value:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}},{key:"manhattanLength",value:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}},{key:"normalize",value:function(){return this.divideScalar(this.length()||1)}},{key:"setLength",value:function(e){return this.normalize().multiplyScalar(e)}},{key:"lerp",value:function(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}},{key:"lerpVectors",value:function(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}},{key:"cross",value:function(e,t){return void 0!==t?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}},{key:"crossVectors",value:function(e,t){var n=e.x,i=e.y,e=e.z,r=t.x,a=t.y,t=t.z;return this.x=i*t-e*a,this.y=e*r-n*t,this.z=n*a-i*r,this}},{key:"projectOnVector",value:function(e){var t=e.lengthSq();return 0===t?this.set(0,0,0):(t=e.dot(this)/t,this.copy(e).multiplyScalar(t))}},{key:"projectOnPlane",value:function(e){return ei.copy(this).projectOnVector(e),this.sub(ei)}},{key:"reflect",value:function(e){return this.sub(ei.copy(e).multiplyScalar(2*this.dot(e)))}},{key:"angleTo",value:function(e){var t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:(e=this.dot(e)/t,Math.acos(Be.clamp(e,-1,1)))}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceToSquared(e))}},{key:"distanceToSquared",value:function(e){var t=this.x-e.x,n=this.y-e.y,e=this.z-e.z;return t*t+n*n+e*e}},{key:"manhattanDistanceTo",value:function(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}},{key:"setFromSpherical",value:function(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}},{key:"setFromSphericalCoords",value:function(e,t,n){var i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}},{key:"setFromCylindrical",value:function(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}},{key:"setFromCylindricalCoords",value:function(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}},{key:"setFromMatrixPosition",value:function(e){e=e.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}},{key:"setFromMatrixScale",value:function(e){var t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),e=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=e,this}},{key:"setFromMatrixColumn",value:function(e,t){return this.fromArray(e.elements,4*t)}},{key:"setFromMatrix3Column",value:function(e,t){return this.fromArray(e.elements,3*t)}},{key:"equals",value:function(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}},{key:"fromBufferAttribute",value:function(e,t,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}},{key:"random",value:function(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}}]),i}(),ei=new Re,ti=new X,Y=function(){function n(e,t){te(this,n),Object.defineProperty(this,"isBox3",{value:!0}),this.min=void 0!==e?e:new Re(1/0,1/0,1/0),this.max=void 0!==t?t:new Re(-1/0,-1/0,-1/0)}return A(n,[{key:"set",value:function(e,t){return this.min.copy(e),this.max.copy(t),this}},{key:"setFromArray",value:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,l=e.length;s<l;s+=3){var u=e[s],c=e[s+1],h=e[s+2];u<t&&(t=u),c<n&&(n=c),h<i&&(i=h),r<u&&(r=u),a<c&&(a=c),o<h&&(o=h)}return this.min.set(t,n,i),this.max.set(r,a,o),this}},{key:"setFromBufferAttribute",value:function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=0,l=e.count;s<l;s++){var u=e.getX(s),c=e.getY(s),h=e.getZ(s);u<t&&(t=u),c<n&&(n=c),h<i&&(i=h),r<u&&(r=u),a<c&&(a=c),o<h&&(o=h)}return this.min.set(t,n,i),this.max.set(r,a,o),this}},{key:"setFromPoints",value:function(e){this.makeEmpty();for(var t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}},{key:"setFromCenterAndSize",value:function(e,t){t=ri.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(t),this.max.copy(e).add(t),this}},{key:"setFromObject",value:function(e){return this.makeEmpty(),this.expandByObject(e)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.min.copy(e.min),this.max.copy(e.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}},{key:"getCenter",value:function(e){return void 0===e&&(console.warn("THREE.Box3: .getCenter() target is now required"),e=new Re),this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}},{key:"getSize",value:function(e){return void 0===e&&(console.warn("THREE.Box3: .getSize() target is now required"),e=new Re),this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}},{key:"expandByPoint",value:function(e){return this.min.min(e),this.max.max(e),this}},{key:"expandByVector",value:function(e){return this.min.sub(e),this.max.add(e),this}},{key:"expandByScalar",value:function(e){return this.min.addScalar(-e),this.max.addScalar(e),this}},{key:"expandByObject",value:function(e){e.updateWorldMatrix(!1,!1);for(var t=e.geometry,n=(void 0!==t&&(null===t.boundingBox&&t.computeBoundingBox(),ai.copy(t.boundingBox),ai.applyMatrix4(e.matrixWorld),this.union(ai)),e.children),i=0,r=n.length;i<r;i++)this.expandByObject(n[i]);return this}},{key:"containsPoint",value:function(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y||e.z<this.min.z||e.z>this.max.z)}},{key:"containsBox",value:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}},{key:"getParameter",value:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .getParameter() target is now required"),t=new Re),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}},{key:"intersectsBox",value:function(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y||e.max.z<this.min.z||e.min.z>this.max.z)}},{key:"intersectsSphere",value:function(e){return this.clampPoint(e.center,ri),ri.distanceToSquared(e.center)<=e.radius*e.radius}},{key:"intersectsPlane",value:function(e){var t,n=0<e.normal.x?(t=e.normal.x*this.min.x,e.normal.x*this.max.x):(t=e.normal.x*this.max.x,e.normal.x*this.min.x);return 0<e.normal.y?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),0<e.normal.z?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}},{key:"intersectsTriangle",value:function(e){return!this.isEmpty()&&(this.getCenter(di),pi.subVectors(this.max,di),oi.subVectors(e.a,di),si.subVectors(e.b,di),li.subVectors(e.c,di),ui.subVectors(si,oi),ci.subVectors(li,si),hi.subVectors(oi,li),!!ni([0,-ui.z,ui.y,0,-ci.z,ci.y,0,-hi.z,hi.y,ui.z,0,-ui.x,ci.z,0,-ci.x,hi.z,0,-hi.x,-ui.y,ui.x,0,-ci.y,ci.x,0,-hi.y,hi.x,0],oi,si,li,pi))&&!!ni([1,0,0,0,1,0,0,0,1],oi,si,li,pi)&&(fi.crossVectors(ui,ci),ni([fi.x,fi.y,fi.z],oi,si,li,pi))}},{key:"clampPoint",value:function(e,t){return void 0===t&&(console.warn("THREE.Box3: .clampPoint() target is now required"),t=new Re),t.copy(e).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(e){return ri.copy(e).clamp(this.min,this.max).sub(e).length()}},{key:"getBoundingSphere",value:function(e){return void 0===e&&console.error("THREE.Box3: .getBoundingSphere() target is now required"),this.getCenter(e.center),e.radius=.5*this.getSize(ri).length(),e}},{key:"intersect",value:function(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}},{key:"union",value:function(e){return this.min.min(e.min),this.max.max(e.max),this}},{key:"applyMatrix4",value:function(e){return this.isEmpty()||(ii[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),ii[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),ii[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),ii[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),ii[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),ii[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),ii[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),ii[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(ii)),this}},{key:"translate",value:function(e){return this.min.add(e),this.max.add(e),this}},{key:"equals",value:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}]),n}();function ni(e,t,n,i,r){for(var a=0,o=e.length-3;a<=o;a+=3){mi.fromArray(e,a);var s=r.x*Math.abs(mi.x)+r.y*Math.abs(mi.y)+r.z*Math.abs(mi.z),l=t.dot(mi),u=n.dot(mi),c=i.dot(mi);if(Math.max(-Math.max(l,u,c),Math.min(l,u,c))>s)return!1}return!0}var ii=[new Re,new Re,new Re,new Re,new Re,new Re,new Re,new Re],ri=new Re,ai=new Y,oi=new Re,si=new Re,li=new Re,ui=new Re,ci=new Re,hi=new Re,di=new Re,pi=new Re,fi=new Re,mi=new Re,vi=new Y,gi=function(){function n(e,t){te(this,n),this.center=void 0!==e?e:new Re,this.radius=void 0!==t?t:-1}return A(n,[{key:"set",value:function(e,t){return this.center.copy(e),this.radius=t,this}},{key:"setFromPoints",value:function(e,t){for(var n=this.center,i=(void 0!==t?n.copy(t):vi.setFromPoints(e).getCenter(n),0),r=0,a=e.length;r<a;r++)i=Math.max(i,n.distanceToSquared(e[r]));return this.radius=Math.sqrt(i),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.center.copy(e.center),this.radius=e.radius,this}},{key:"isEmpty",value:function(){return this.radius<0}},{key:"makeEmpty",value:function(){return this.center.set(0,0,0),this.radius=-1,this}},{key:"containsPoint",value:function(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}},{key:"distanceToPoint",value:function(e){return e.distanceTo(this.center)-this.radius}},{key:"intersectsSphere",value:function(e){var t=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=t*t}},{key:"intersectsBox",value:function(e){return e.intersectsSphere(this)}},{key:"intersectsPlane",value:function(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}},{key:"clampPoint",value:function(e,t){var n=this.center.distanceToSquared(e);return void 0===t&&(console.warn("THREE.Sphere: .clampPoint() target is now required"),t=new Re),t.copy(e),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}},{key:"getBoundingBox",value:function(e){return void 0===e&&(console.warn("THREE.Sphere: .getBoundingBox() target is now required"),e=new Y),this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}},{key:"applyMatrix4",value:function(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}},{key:"translate",value:function(e){return this.center.add(e),this}},{key:"equals",value:function(e){return e.center.equals(this.center)&&e.radius===this.radius}}]),n}(),Ai=new Re,yi=new Re,wi=new Re,bi=new Re,xi=new Re,Ei=new Re,Ci=new Re,Bi=function(){function n(e,t){te(this,n),this.origin=void 0!==e?e:new Re,this.direction=void 0!==t?t:new Re(0,0,-1)}return A(n,[{key:"set",value:function(e,t){return this.origin.copy(e),this.direction.copy(t),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}},{key:"at",value:function(e,t){return void 0===t&&(console.warn("THREE.Ray: .at() target is now required"),t=new Re),t.copy(this.direction).multiplyScalar(e).add(this.origin)}},{key:"lookAt",value:function(e){return this.direction.copy(e).sub(this.origin).normalize(),this}},{key:"recast",value:function(e){return this.origin.copy(this.at(e,Ai)),this}},{key:"closestPointToPoint",value:function(e,t){void 0===t&&(console.warn("THREE.Ray: .closestPointToPoint() target is now required"),t=new Re),t.subVectors(e,this.origin);e=t.dot(this.direction);return e<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(e).add(this.origin)}},{key:"distanceToPoint",value:function(e){return Math.sqrt(this.distanceSqToPoint(e))}},{key:"distanceSqToPoint",value:function(e){var t=Ai.subVectors(e,this.origin).dot(this.direction);return(t<0?this.origin:(Ai.copy(this.direction).multiplyScalar(t).add(this.origin),Ai)).distanceToSquared(e)}},{key:"distanceSqToSegment",value:function(e,t,n,i){yi.copy(e).add(t).multiplyScalar(.5),wi.copy(t).sub(e).normalize(),bi.copy(this.origin).sub(yi);var r,a,o,e=.5*e.distanceTo(t),t=-this.direction.dot(wi),s=bi.dot(this.direction),l=-bi.dot(wi),u=bi.lengthSq(),c=Math.abs(1-t*t);return c=0<c?(a=t*s-l,o=e*c,0<=(r=t*l-s)?-o<=a?a<=o?(r*=c=1/c)*(r+t*(a*=c)+2*s)+a*(t*r+a+2*l)+u:(a=e,-(r=Math.max(0,-(t*a+s)))*r+a*(a+2*l)+u):(a=-e,-(r=Math.max(0,-(t*a+s)))*r+a*(a+2*l)+u):a<=-o?-(r=Math.max(0,-(-t*e+s)))*r+(a=0<r?-e:Math.min(Math.max(-e,-l),e))*(a+2*l)+u:a<=o?(r=0,(a=Math.min(Math.max(-e,-l),e))*(a+2*l)+u):-(r=Math.max(0,-(t*e+s)))*r+(a=0<r?e:Math.min(Math.max(-e,-l),e))*(a+2*l)+u):(a=0<t?-e:e,-(r=Math.max(0,-(t*a+s)))*r+a*(a+2*l)+u),n&&n.copy(this.direction).multiplyScalar(r).add(this.origin),i&&i.copy(wi).multiplyScalar(a).add(yi),c}},{key:"intersectSphere",value:function(e,t){Ai.subVectors(e.center,this.origin);var n=Ai.dot(this.direction),i=Ai.dot(Ai)-n*n,e=e.radius*e.radius;return e<i||(i=n+(e=Math.sqrt(e-i)),(n=n-e)<0&&i<0)?null:n<0?this.at(i,t):this.at(n,t)}},{key:"intersectsSphere",value:function(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}},{key:"distanceToPlane",value:function(e){var t=e.normal.dot(this.direction);return 0===t?0===e.distanceToPoint(this.origin)?0:null:0<=(e=-(this.origin.dot(e.normal)+e.constant)/t)?e:null}},{key:"intersectPlane",value:function(e,t){e=this.distanceToPlane(e);return null===e?null:this.at(e,t)}},{key:"intersectsPlane",value:function(e){var t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}},{key:"intersectBox",value:function(e,t){var n,i,r,a=1/this.direction.x,o=1/this.direction.y,s=1/this.direction.z,l=this.origin,a=0<=a?(n=(e.min.x-l.x)*a,(e.max.x-l.x)*a):(n=(e.max.x-l.x)*a,(e.min.x-l.x)*a),o=0<=o?(r=(e.min.y-l.y)*o,(e.max.y-l.y)*o):(r=(e.max.y-l.y)*o,(e.min.y-l.y)*o);return o<n||a<r||((n<r||n!=n)&&(n=r),(o<a||a!=a)&&(a=o),(r=0<=s?(i=(e.min.z-l.z)*s,(e.max.z-l.z)*s):(i=(e.max.z-l.z)*s,(e.min.z-l.z)*s))<n)||a<i||((n<i||n!=n)&&(n=i),(a=r<a||a!=a?r:a)<0)?null:this.at(0<=n?n:a,t)}},{key:"intersectsBox",value:function(e){return null!==this.intersectBox(e,Ai)}},{key:"intersectTriangle",value:function(e,t,n,i,r){xi.subVectors(t,e),Ei.subVectors(n,e),Ci.crossVectors(xi,Ei);var a,t=this.direction.dot(Ci);if(0<t){if(i)return null;a=1}else{if(!(t<0))return null;a=-1,t=-t}bi.subVectors(this.origin,e);n=a*this.direction.dot(Ei.crossVectors(bi,Ei));return n<0||(i=a*this.direction.dot(xi.cross(bi)))<0||t<n+i||(e=-a*bi.dot(Ci))<0?null:this.at(e/t,r)}},{key:"applyMatrix4",value:function(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}},{key:"equals",value:function(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}}]),n}(),_e=function(){function e(){te(this,e),Object.defineProperty(this,"isMatrix4",{value:!0}),this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],0<arguments.length&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}return A(e,[{key:"set",value:function(e,t,n,i,r,a,o,s,l,u,c,h,d,p,f,m){var v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=r,v[5]=a,v[9]=o,v[13]=s,v[2]=l,v[6]=u,v[10]=c,v[14]=h,v[3]=d,v[7]=p,v[11]=f,v[15]=m,this}},{key:"identity",value:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}},{key:"clone",value:function(){return(new e).fromArray(this.elements)}},{key:"copy",value:function(e){var t=this.elements,e=e.elements;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],this}},{key:"copyPosition",value:function(e){var t=this.elements,e=e.elements;return t[12]=e[12],t[13]=e[13],t[14]=e[14],this}},{key:"extractBasis",value:function(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}},{key:"makeBasis",value:function(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}},{key:"extractRotation",value:function(e){var t=this.elements,n=e.elements,i=1/_i.setFromMatrixColumn(e,0).length(),r=1/_i.setFromMatrixColumn(e,1).length(),e=1/_i.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*e,t[9]=n[9]*e,t[10]=n[10]*e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}},{key:"makeRotationFromEuler",value:function(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var t,n,i,r,a=this.elements,o=e.x,s=e.y,l=e.z,u=Math.cos(o),o=Math.sin(o),c=Math.cos(s),s=Math.sin(s),h=Math.cos(l),l=Math.sin(l);return"XYZ"===e.order?(n=u*h,i=u*l,r=o*h,t=o*l,a[0]=c*h,a[4]=-c*l,a[8]=s,a[1]=i+r*s,a[5]=n-t*s,a[9]=-o*c,a[2]=t-n*s,a[6]=r+i*s,a[10]=u*c):"YXZ"===e.order?(t=c*l,n=s*h,a[0]=(r=c*h)+(i=s*l)*o,a[4]=n*o-t,a[8]=u*s,a[1]=u*l,a[5]=u*h,a[9]=-o,a[2]=t*o-n,a[6]=i+r*o,a[10]=u*c):"ZXY"===e.order?(t=c*l,n=s*h,a[0]=(i=c*h)-(r=s*l)*o,a[4]=-u*l,a[8]=n+t*o,a[1]=t+n*o,a[5]=u*h,a[9]=r-i*o,a[2]=-u*s,a[6]=o,a[10]=u*c):"ZYX"===e.order?(t=u*h,n=u*l,r=o*h,i=o*l,a[0]=c*h,a[4]=r*s-n,a[8]=t*s+i,a[1]=c*l,a[5]=i*s+t,a[9]=n*s-r,a[2]=-s,a[6]=o*c,a[10]=u*c):"YZX"===e.order?(i=u*c,t=u*s,n=o*c,r=o*s,a[0]=c*h,a[4]=r-i*l,a[8]=n*l+t,a[1]=l,a[5]=u*h,a[9]=-o*h,a[2]=-s*h,a[6]=t*l+n,a[10]=i-r*l):"XZY"===e.order&&(t=u*c,n=u*s,i=o*c,r=o*s,a[0]=c*h,a[4]=-l,a[8]=s*h,a[1]=t*l+r,a[5]=u*h,a[9]=n*l-i,a[2]=i*l-n,a[6]=o*h,a[10]=r*l+t),a[3]=0,a[7]=0,a[11]=0,a[12]=0,a[13]=0,a[14]=0,a[15]=1,this}},{key:"makeRotationFromQuaternion",value:function(e){return this.compose(Ti,e,Si)}},{key:"lookAt",value:function(e,t,n){var i=this.elements;return Pi.subVectors(e,t),0===Pi.lengthSq()&&(Pi.z=1),Pi.normalize(),Ii.crossVectors(n,Pi),0===Ii.lengthSq()&&(1===Math.abs(n.z)?Pi.x+=1e-4:Pi.z+=1e-4,Pi.normalize(),Ii.crossVectors(n,Pi)),Ii.normalize(),Di.crossVectors(Pi,Ii),i[0]=Ii.x,i[4]=Di.x,i[8]=Pi.x,i[1]=Ii.y,i[5]=Di.y,i[9]=Pi.y,i[2]=Ii.z,i[6]=Di.z,i[10]=Pi.z,this}},{key:"multiply",value:function(e,t){return void 0!==t?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}},{key:"premultiply",value:function(e){return this.multiplyMatrices(e,this)}},{key:"multiplyMatrices",value:function(e,t){var e=e.elements,t=t.elements,n=this.elements,i=e[0],r=e[4],a=e[8],o=e[12],s=e[1],l=e[5],u=e[9],c=e[13],h=e[2],d=e[6],p=e[10],f=e[14],m=e[3],v=e[7],g=e[11],e=e[15],A=t[0],y=t[4],w=t[8],b=t[12],x=t[1],E=t[5],C=t[9],B=t[13],_=t[2],M=t[6],T=t[10],S=t[14],I=t[3],D=t[7],P=t[11],t=t[15];return n[0]=i*A+r*x+a*_+o*I,n[4]=i*y+r*E+a*M+o*D,n[8]=i*w+r*C+a*T+o*P,n[12]=i*b+r*B+a*S+o*t,n[1]=s*A+l*x+u*_+c*I,n[5]=s*y+l*E+u*M+c*D,n[9]=s*w+l*C+u*T+c*P,n[13]=s*b+l*B+u*S+c*t,n[2]=h*A+d*x+p*_+f*I,n[6]=h*y+d*E+p*M+f*D,n[10]=h*w+d*C+p*T+f*P,n[14]=h*b+d*B+p*S+f*t,n[3]=m*A+v*x+g*_+e*I,n[7]=m*y+v*E+g*M+e*D,n[11]=m*w+v*C+g*T+e*P,n[15]=m*b+v*B+g*S+e*t,this}},{key:"multiplyScalar",value:function(e){var t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}},{key:"determinant",value:function(){var e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],o=e[5],s=e[9],l=e[13],u=e[2],c=e[6],h=e[10],d=e[14];return e[3]*(+r*s*c-i*l*c-r*o*h+n*l*h+i*o*d-n*s*d)+e[7]*(+t*s*d-t*l*h+r*a*h-i*a*d+i*l*u-r*s*u)+e[11]*(+t*l*c-t*o*d-r*a*c+n*a*d+r*o*u-n*l*u)+e[15]*(-i*o*u-t*s*c+t*o*h+i*a*c-n*a*h+n*s*u)}},{key:"transpose",value:function(){var e=this.elements,t=e[1];return e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}},{key:"setPosition",value:function(e,t,n){var i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}},{key:"invert",value:function(){var e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],h=e[10],d=e[11],p=e[12],f=e[13],m=e[14],v=e[15],g=c*m*l-f*h*l+f*s*d-o*m*d-c*s*v+o*h*v,A=p*h*l-u*m*l-p*s*d+a*m*d+u*s*v-a*h*v,y=u*f*l-p*c*l+p*o*d-a*f*d-u*o*v+a*c*v,w=p*c*s-u*f*s-p*o*h+a*f*h+u*o*m-a*c*m,b=t*g+n*A+i*y+r*w;return 0==b?this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0):(e[0]=g*(g=1/b),e[1]=(f*h*r-c*m*r-f*i*d+n*m*d+c*i*v-n*h*v)*g,e[2]=(o*m*r-f*s*r+f*i*l-n*m*l-o*i*v+n*s*v)*g,e[3]=(c*s*r-o*h*r-c*i*l+n*h*l+o*i*d-n*s*d)*g,e[4]=A*g,e[5]=(u*m*r-p*h*r+p*i*d-t*m*d-u*i*v+t*h*v)*g,e[6]=(p*s*r-a*m*r-p*i*l+t*m*l+a*i*v-t*s*v)*g,e[7]=(a*h*r-u*s*r+u*i*l-t*h*l-a*i*d+t*s*d)*g,e[8]=y*g,e[9]=(p*c*r-u*f*r-p*n*d+t*f*d+u*n*v-t*c*v)*g,e[10]=(a*f*r-p*o*r+p*n*l-t*f*l-a*n*v+t*o*v)*g,e[11]=(u*o*r-a*c*r-u*n*l+t*c*l+a*n*d-t*o*d)*g,e[12]=w*g,e[13]=(u*f*i-p*c*i+p*n*h-t*f*h-u*n*m+t*c*m)*g,e[14]=(p*o*i-a*f*i-p*n*s+t*f*s+a*n*m-t*o*m)*g,e[15]=(a*c*i-u*o*i+u*n*s-t*c*s-a*n*h+t*o*h)*g,this)}},{key:"scale",value:function(e){var t=this.elements,n=e.x,i=e.y,e=e.z;return t[0]*=n,t[4]*=i,t[8]*=e,t[1]*=n,t[5]*=i,t[9]*=e,t[2]*=n,t[6]*=i,t[10]*=e,t[3]*=n,t[7]*=i,t[11]*=e,this}},{key:"getMaxScaleOnAxis",value:function(){var e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,e))}},{key:"makeTranslation",value:function(e,t,n){return this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}},{key:"makeRotationX",value:function(e){var t=Math.cos(e),e=Math.sin(e);return this.set(1,0,0,0,0,t,-e,0,0,e,t,0,0,0,0,1),this}},{key:"makeRotationY",value:function(e){var t=Math.cos(e),e=Math.sin(e);return this.set(t,0,e,0,0,1,0,0,-e,0,t,0,0,0,0,1),this}},{key:"makeRotationZ",value:function(e){var t=Math.cos(e),e=Math.sin(e);return this.set(t,-e,0,0,e,t,0,0,0,0,1,0,0,0,0,1),this}},{key:"makeRotationAxis",value:function(e,t){var n=Math.cos(t),t=Math.sin(t),i=1-n,r=e.x,a=e.y,e=e.z,o=i*r,s=i*a;return this.set(o*r+n,o*a-t*e,o*e+t*a,0,o*a+t*e,s*a+n,s*e-t*r,0,o*e-t*a,s*e+t*r,i*e*e+n,0,0,0,0,1),this}},{key:"makeScale",value:function(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}},{key:"makeShear",value:function(e,t,n){return this.set(1,t,n,0,e,1,n,0,e,t,1,0,0,0,0,1),this}},{key:"compose",value:function(e,t,n){var i=this.elements,r=t._x,a=t._y,o=t._z,t=t._w,s=r+r,l=a+a,u=o+o,c=r*s,h=r*l,r=r*u,d=a*l,a=a*u,o=o*u,s=t*s,l=t*l,t=t*u,u=n.x,p=n.y,n=n.z;return i[0]=(1-(d+o))*u,i[1]=(h+t)*u,i[2]=(r-l)*u,i[3]=0,i[4]=(h-t)*p,i[5]=(1-(c+o))*p,i[6]=(a+s)*p,i[7]=0,i[8]=(r+l)*n,i[9]=(a-s)*n,i[10]=(1-(c+d))*n,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}},{key:"decompose",value:function(e,t,n){var i=this.elements,r=_i.set(i[0],i[1],i[2]).length(),a=_i.set(i[4],i[5],i[6]).length(),o=_i.set(i[8],i[9],i[10]).length(),e=(this.determinant()<0&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],Mi.copy(this),1/r),i=1/a,s=1/o;return Mi.elements[0]*=e,Mi.elements[1]*=e,Mi.elements[2]*=e,Mi.elements[4]*=i,Mi.elements[5]*=i,Mi.elements[6]*=i,Mi.elements[8]*=s,Mi.elements[9]*=s,Mi.elements[10]*=s,t.setFromRotationMatrix(Mi),n.x=r,n.y=a,n.z=o,this}},{key:"makePerspective",value:function(e,t,n,i,r,a){void 0===a&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");var o=this.elements,s=2*r/(n-i),l=(t+e)/(t-e),n=(n+i)/(n-i),i=-(a+r)/(a-r),a=-2*a*r/(a-r);return o[0]=2*r/(t-e),o[4]=0,o[8]=l,o[12]=0,o[1]=0,o[5]=s,o[9]=n,o[13]=0,o[2]=0,o[6]=0,o[10]=i,o[14]=a,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}},{key:"makeOrthographic",value:function(e,t,n,i,r,a){var o=this.elements,s=1/(t-e),l=1/(n-i),u=1/(a-r),t=(t+e)*s,e=(n+i)*l,n=(a+r)*u;return o[0]=2*s,o[4]=0,o[8]=0,o[12]=-t,o[1]=0,o[5]=2*l,o[9]=0,o[13]=-e,o[2]=0,o[6]=0,o[10]=-2*u,o[14]=-n,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}},{key:"equals",value:function(e){for(var t=this.elements,n=e.elements,i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<16;n++)this.elements[n]=e[n+t];return this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}]),e}(),_i=new Re,Mi=new _e,Ti=new Re(0,0,0),Si=new Re(1,1,1),Ii=new Re,Di=new Re,Pi=new Re,ki=function(){function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:r.DefaultOrder;te(this,r),Object.defineProperty(this,"isEuler",{value:!0}),this._x=e,this._y=t,this._z=n,this._order=i}return A(r,[{key:"x",get:function(){return this._x},set:function(e){this._x=e,this._onChangeCallback()}},{key:"y",get:function(){return this._y},set:function(e){this._y=e,this._onChangeCallback()}},{key:"z",get:function(){return this._z},set:function(e){this._z=e,this._onChangeCallback()}},{key:"order",get:function(){return this._order},set:function(e){this._order=e,this._onChangeCallback()}},{key:"set",value:function(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._order=i||this._order,this._onChangeCallback(),this}},{key:"clone",value:function(){return new this.constructor(this._x,this._y,this._z,this._order)}},{key:"copy",value:function(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}},{key:"setFromRotationMatrix",value:function(e,t,n){var i=Be.clamp,e=e.elements,r=e[0],a=e[4],o=e[8],s=e[1],l=e[5],u=e[9],c=e[2],h=e[6],d=e[10];switch(t=t||this._order){case"XYZ":this._y=Math.asin(i(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-i(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,d),this._z=Math.atan2(s,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(i(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(s,r));break;case"ZYX":this._y=Math.asin(-i(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(h,d),this._z=Math.atan2(s,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(i(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(o,d));break;case"XZY":this._z=Math.asin(-i(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(h,l),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!1!==n&&this._onChangeCallback(),this}},{key:"setFromQuaternion",value:function(e,t,n){return Li.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Li,t,n)}},{key:"setFromVector3",value:function(e,t){return this.set(e.x,e.y,e.z,t||this._order)}},{key:"reorder",value:function(e){return Ri.setFromEuler(this),this.setFromQuaternion(Ri,e)}},{key:"equals",value:function(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}},{key:"fromArray",value:function(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}},{key:"toVector3",value:function(e){return e?e.set(this._x,this._y,this._z):new Re(this._x,this._y,this._z)}},{key:"_onChange",value:function(e){return this._onChangeCallback=e,this}},{key:"_onChangeCallback",value:function(){}}]),r}(),Li=(ki.DefaultOrder="XYZ",ki.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],new _e),Ri=new X,Fi=function(){function e(){te(this,e),this.mask=1}return A(e,[{key:"set",value:function(e){this.mask=1<<e|0}},{key:"enable",value:function(e){this.mask|=1<<e|0}},{key:"enableAll",value:function(){this.mask=-1}},{key:"toggle",value:function(e){this.mask^=1<<e|0}},{key:"disable",value:function(e){this.mask&=~(1<<e|0)}},{key:"disableAll",value:function(){this.mask=0}},{key:"test",value:function(e){return 0!=(this.mask&e.mask)}}]),e}(),Oi=0,Ni=new Re,Gi=new X,Ui=new _e,zi=new Re,Hi=new Re,Qi=new Re,Vi=new X,ji=new Re(1,0,0),Wi=new Re(0,1,0),Ji=new Re(0,0,1),qi={type:"added"},Xi={type:"removed"};function K(){Object.defineProperty(this,"id",{value:Oi++}),this.uuid=Be.generateUUID(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=K.DefaultUp.clone();var e=new Re,t=new ki,n=new X,i=new Re(1,1,1);t._onChange(function(){n.setFromEuler(t,!1)}),n._onChange(function(){t.setFromQuaternion(n,void 0,!1)}),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:i},modelViewMatrix:{value:new _e},normalMatrix:{value:new Wn}}),this.matrix=new _e,this.matrixWorld=new _e,this.matrixAutoUpdate=K.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new Fi,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}K.DefaultUp=new Re(0,1,0),K.DefaultMatrixAutoUpdate=!0,K.prototype=Object.assign(Object.create(zn.prototype),{constructor:K,isObject3D:!0,onBeforeRender:function(){},onAfterRender:function(){},applyMatrix4:function(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)},applyQuaternion:function(e){return this.quaternion.premultiply(e),this},setRotationFromAxisAngle:function(e,t){this.quaternion.setFromAxisAngle(e,t)},setRotationFromEuler:function(e){this.quaternion.setFromEuler(e,!0)},setRotationFromMatrix:function(e){this.quaternion.setFromRotationMatrix(e)},setRotationFromQuaternion:function(e){this.quaternion.copy(e)},rotateOnAxis:function(e,t){return Gi.setFromAxisAngle(e,t),this.quaternion.multiply(Gi),this},rotateOnWorldAxis:function(e,t){return Gi.setFromAxisAngle(e,t),this.quaternion.premultiply(Gi),this},rotateX:function(e){return this.rotateOnAxis(ji,e)},rotateY:function(e){return this.rotateOnAxis(Wi,e)},rotateZ:function(e){return this.rotateOnAxis(Ji,e)},translateOnAxis:function(e,t){return Ni.copy(e).applyQuaternion(this.quaternion),this.position.add(Ni.multiplyScalar(t)),this},translateX:function(e){return this.translateOnAxis(ji,e)},translateY:function(e){return this.translateOnAxis(Wi,e)},translateZ:function(e){return this.translateOnAxis(Ji,e)},localToWorld:function(e){return e.applyMatrix4(this.matrixWorld)},worldToLocal:function(e){return e.applyMatrix4(Ui.copy(this.matrixWorld).invert())},lookAt:function(e,t,n){e.isVector3?zi.copy(e):zi.set(e,t,n);e=this.parent;this.updateWorldMatrix(!0,!1),Hi.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?Ui.lookAt(Hi,zi,this.up):Ui.lookAt(zi,Hi,this.up),this.quaternion.setFromRotationMatrix(Ui),e&&(Ui.extractRotation(e.matrixWorld),Gi.setFromRotationMatrix(Ui),this.quaternion.premultiply(Gi.invert()))},add:function(e){if(1<arguments.length)for(var t=0;t<arguments.length;t++)this.add(arguments[t]);else e===this?console.error("THREE.Object3D.add: object can't be added as a child of itself.",e):e&&e.isObject3D?(null!==e.parent&&e.parent.remove(e),(e.parent=this).children.push(e),e.dispatchEvent(qi)):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e);return this},remove:function(e){if(1<arguments.length)for(var t=0;t<arguments.length;t++)this.remove(arguments[t]);else{var n=this.children.indexOf(e);-1!==n&&(e.parent=null,this.children.splice(n,1),e.dispatchEvent(Xi))}return this},clear:function(){for(var e=0;e<this.children.length;e++){var t=this.children[e];t.parent=null,t.dispatchEvent(Xi)}return this.children.length=0,this},attach:function(e){return this.updateWorldMatrix(!0,!1),Ui.copy(this.matrixWorld).invert(),null!==e.parent&&(e.parent.updateWorldMatrix(!0,!1),Ui.multiply(e.parent.matrixWorld)),e.applyMatrix4(Ui),e.updateWorldMatrix(!1,!1),this.add(e),this},getObjectById:function(e){return this.getObjectByProperty("id",e)},getObjectByName:function(e){return this.getObjectByProperty("name",e)},getObjectByProperty:function(e,t){if(this[e]===t)return this;for(var n=0,i=this.children.length;n<i;n++){var r=this.children[n].getObjectByProperty(e,t);if(void 0!==r)return r}},getWorldPosition:function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldPosition() target is now required"),e=new Re),this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)},getWorldQuaternion:function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldQuaternion() target is now required"),e=new X),this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Hi,e,Qi),e},getWorldScale:function(e){return void 0===e&&(console.warn("THREE.Object3D: .getWorldScale() target is now required"),e=new Re),this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Hi,Vi,e),e},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Object3D: .getWorldDirection() target is now required"),e=new Re),this.updateWorldMatrix(!0,!1);var t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()},raycast:function(){},traverse:function(e){e(this);for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].traverse(e)},traverseVisible:function(e){if(!1!==this.visible){e(this);for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].traverseVisible(e)}},traverseAncestors:function(e){var t=this.parent;null!==t&&(e(t),t.traverseAncestors(e))},updateMatrix:function(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0},updateMatrixWorld:function(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),e=!(this.matrixWorldNeedsUpdate=!1));for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)},updateWorldMatrix:function(e,t){var n=this.parent;if(!0===e&&null!==n&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),null===this.parent?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),!0===t)for(var i=this.children,r=0,a=i.length;r<a;r++)i[r].updateWorldMatrix(!1,!0)},toJSON:function(n){var e,t,i,r,a,o=void 0===n||"string"==typeof n,s={},l=(o&&(n={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{}},s.metadata={version:4.5,type:"Object",generator:"Object3D.toJSON"}),{});function u(e,t){return void 0===e[t.uuid]&&(e[t.uuid]=t.toJSON(n)),t.uuid}if(l.uuid=this.uuid,l.type=this.type,""!==this.name&&(l.name=this.name),!0===this.castShadow&&(l.castShadow=!0),!0===this.receiveShadow&&(l.receiveShadow=!0),!1===this.visible&&(l.visible=!1),!1===this.frustumCulled&&(l.frustumCulled=!1),0!==this.renderOrder&&(l.renderOrder=this.renderOrder),"{}"!==JSON.stringify(this.userData)&&(l.userData=this.userData),l.layers=this.layers.mask,l.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(l.matrixAutoUpdate=!1),this.isInstancedMesh&&(l.type="InstancedMesh",l.count=this.count,l.instanceMatrix=this.instanceMatrix.toJSON()),this.isMesh||this.isLine||this.isPoints){l.geometry=u(n.geometries,this.geometry);var c=this.geometry.parameters;if(void 0!==c&&void 0!==c.shapes){var h=c.shapes;if(Array.isArray(h))for(var d=0,p=h.length;d<p;d++){var f=h[d];u(n.shapes,f)}else u(n.shapes,h)}}if(this.isSkinnedMesh&&(l.bindMode=this.bindMode,l.bindMatrix=this.bindMatrix.toArray(),void 0!==this.skeleton)&&(u(n.skeletons,this.skeleton),l.skeleton=this.skeleton.uuid),void 0!==this.material)if(Array.isArray(this.material)){for(var m=[],v=0,g=this.material.length;v<g;v++)m.push(u(n.materials,this.material[v]));l.material=m}else l.material=u(n.materials,this.material);if(0<this.children.length){l.children=[];for(var A=0;A<this.children.length;A++)l.children.push(this.children[A].toJSON(n).object)}if(0<this.animations.length){l.animations=[];for(var y=0;y<this.animations.length;y++){var w=this.animations[y];l.animations.push(u(n.animations,w))}}return o&&(c=b(n.geometries),o=b(n.materials),e=b(n.textures),t=b(n.images),i=b(n.shapes),r=b(n.skeletons),a=b(n.animations),0<c.length&&(s.geometries=c),0<o.length&&(s.materials=o),0<e.length&&(s.textures=e),0<t.length&&(s.images=t),0<i.length&&(s.shapes=i),0<r.length&&(s.skeletons=r),0<a.length)&&(s.animations=a),s.object=l,s;function b(e){var t,n=[];for(t in e){var i=e[t];delete i.metadata,n.push(i)}return n}},clone:function(e){return(new this.constructor).copy(this,e)},copy:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1];if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(var n=0;n<e.children.length;n++){var i=e.children[n];this.add(i.clone())}return this}});var Yi=new Re,Ki=new Re,Zi=new Wn,$i=function(){function n(e,t){te(this,n),Object.defineProperty(this,"isPlane",{value:!0}),this.normal=void 0!==e?e:new Re(1,0,0),this.constant=void 0!==t?t:0}return A(n,[{key:"set",value:function(e,t){return this.normal.copy(e),this.constant=t,this}},{key:"setComponents",value:function(e,t,n,i){return this.normal.set(e,t,n),this.constant=i,this}},{key:"setFromNormalAndCoplanarPoint",value:function(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}},{key:"setFromCoplanarPoints",value:function(e,t,n){n=Yi.subVectors(n,t).cross(Ki.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(n,e),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.normal.copy(e.normal),this.constant=e.constant,this}},{key:"normalize",value:function(){var e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}},{key:"negate",value:function(){return this.constant*=-1,this.normal.negate(),this}},{key:"distanceToPoint",value:function(e){return this.normal.dot(e)+this.constant}},{key:"distanceToSphere",value:function(e){return this.distanceToPoint(e.center)-e.radius}},{key:"projectPoint",value:function(e,t){return void 0===t&&(console.warn("THREE.Plane: .projectPoint() target is now required"),t=new Re),t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}},{key:"intersectLine",value:function(e,t){void 0===t&&(console.warn("THREE.Plane: .intersectLine() target is now required"),t=new Re);var n=e.delta(Yi),i=this.normal.dot(n);return 0===i?0===this.distanceToPoint(e.start)?t.copy(e.start):void 0:(i=-(e.start.dot(this.normal)+this.constant)/i)<0||1<i?void 0:t.copy(n).multiplyScalar(i).add(e.start)}},{key:"intersectsLine",value:function(e){var t=this.distanceToPoint(e.start),e=this.distanceToPoint(e.end);return t<0&&0<e||e<0&&0<t}},{key:"intersectsBox",value:function(e){return e.intersectsPlane(this)}},{key:"intersectsSphere",value:function(e){return e.intersectsPlane(this)}},{key:"coplanarPoint",value:function(e){return void 0===e&&(console.warn("THREE.Plane: .coplanarPoint() target is now required"),e=new Re),e.copy(this.normal).multiplyScalar(-this.constant)}},{key:"applyMatrix4",value:function(e,t){t=t||Zi.getNormalMatrix(e),e=this.coplanarPoint(Yi).applyMatrix4(e),t=this.normal.applyMatrix3(t).normalize();return this.constant=-e.dot(t),this}},{key:"translate",value:function(e){return this.constant-=e.dot(this.normal),this}},{key:"equals",value:function(e){return e.normal.equals(this.normal)&&e.constant===this.constant}}]),n}(),er=new Re,tr=new Re,nr=new Re,ir=new Re,rr=new Re,ar=new Re,or=new Re,sr=new Re,lr=new Re,ur=new Re,cr=function(){function a(e,t,n){te(this,a),this.a=void 0!==e?e:new Re,this.b=void 0!==t?t:new Re,this.c=void 0!==n?n:new Re}return A(a,[{key:"set",value:function(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}},{key:"setFromPointsAndIndices",value:function(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}},{key:"getArea",value:function(){return er.subVectors(this.c,this.b),tr.subVectors(this.a,this.b),.5*er.cross(tr).length()}},{key:"getMidpoint",value:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getMidpoint() target is now required"),e=new Re),e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}},{key:"getNormal",value:function(e){return a.getNormal(this.a,this.b,this.c,e)}},{key:"getPlane",value:function(e){return void 0===e&&(console.warn("THREE.Triangle: .getPlane() target is now required"),e=new $i),e.setFromCoplanarPoints(this.a,this.b,this.c)}},{key:"getBarycoord",value:function(e,t){return a.getBarycoord(e,this.a,this.b,this.c,t)}},{key:"getUV",value:function(e,t,n,i,r){return a.getUV(e,this.a,this.b,this.c,t,n,i,r)}},{key:"containsPoint",value:function(e){return a.containsPoint(e,this.a,this.b,this.c)}},{key:"isFrontFacing",value:function(e){return a.isFrontFacing(this.a,this.b,this.c,e)}},{key:"intersectsBox",value:function(e){return e.intersectsTriangle(this)}},{key:"closestPointToPoint",value:function(e,t){void 0===t&&(console.warn("THREE.Triangle: .closestPointToPoint() target is now required"),t=new Re);var n=this.a,i=this.b,r=this.c,a=(rr.subVectors(i,n),ar.subVectors(r,n),sr.subVectors(e,n),rr.dot(sr)),o=ar.dot(sr);if(a<=0&&o<=0)return t.copy(n);lr.subVectors(e,i);var s=rr.dot(lr),l=ar.dot(lr);if(0<=s&&l<=s)return t.copy(i);var u=a*l-s*o;if(u<=0&&0<=a&&s<=0)return c=a/(a-s),t.copy(n).addScaledVector(rr,c);ur.subVectors(e,r);var c,h,e=rr.dot(ur),d=ar.dot(ur);return 0<=d&&e<=d?t.copy(r):(a=e*o-a*d)<=0&&0<=o&&d<=0?(h=o/(o-d),t.copy(n).addScaledVector(ar,h)):(o=s*d-e*l)<=0&&0<=l-s&&0<=e-d?(or.subVectors(r,i),h=(l-s)/(l-s+(e-d)),t.copy(i).addScaledVector(or,h)):(c=a*(r=1/(o+a+u)),h=u*r,t.copy(n).addScaledVector(rr,c).addScaledVector(ar,h))}},{key:"equals",value:function(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}],[{key:"getNormal",value:function(e,t,n,i){void 0===i&&(console.warn("THREE.Triangle: .getNormal() target is now required"),i=new Re),i.subVectors(n,t),er.subVectors(e,t),i.cross(er);n=i.lengthSq();return 0<n?i.multiplyScalar(1/Math.sqrt(n)):i.set(0,0,0)}},{key:"getBarycoord",value:function(e,t,n,i,r){er.subVectors(i,t),tr.subVectors(n,t),nr.subVectors(e,t);var i=er.dot(er),n=er.dot(tr),e=er.dot(nr),t=tr.dot(tr),a=tr.dot(nr),o=i*t-n*n;return void 0===r&&(console.warn("THREE.Triangle: .getBarycoord() target is now required"),r=new Re),0==o?r.set(-2,-1,-1):r.set(1-(t=(t*e-n*a)*(r=1/o))-(o=(i*a-n*e)*r),o,t)}},{key:"containsPoint",value:function(e,t,n,i){return this.getBarycoord(e,t,n,i,ir),0<=ir.x&&0<=ir.y&&ir.x+ir.y<=1}},{key:"getUV",value:function(e,t,n,i,r,a,o,s){return this.getBarycoord(e,t,n,i,ir),s.set(0,0),s.addScaledVector(r,ir.x),s.addScaledVector(a,ir.y),s.addScaledVector(o,ir.z),s}},{key:"isFrontFacing",value:function(e,t,n,i){return er.subVectors(n,t),tr.subVectors(e,t),er.cross(tr).dot(i)<0}}]),a}(),hr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},dr={h:0,s:0,l:0},pr={h:0,s:0,l:0};function fr(e,t,n){return n<0&&(n+=1),1<n&&--n,n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+6*(t-e)*(2/3-n):e}function mr(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function vr(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}var Me=function(){function i(e,t,n){return te(this,i),Object.defineProperty(this,"isColor",{value:!0}),void 0===t&&void 0===n?this.set(e):this.setRGB(e,t,n)}return A(i,[{key:"set",value:function(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}},{key:"setScalar",value:function(e){return this.r=e,this.g=e,this.b=e,this}},{key:"setHex",value:function(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,this}},{key:"setRGB",value:function(e,t,n){return this.r=e,this.g=t,this.b=n,this}},{key:"setHSL",value:function(e,t,n){return e=Be.euclideanModulo(e,1),t=Be.clamp(t,0,1),n=Be.clamp(n,0,1),0===t?this.r=this.g=this.b=n:(this.r=fr(t=2*n-(n=n<=.5?n*(1+t):n+t-n*t),n,e+1/3),this.g=fr(t,n,e),this.b=fr(t,n,e-1/3)),this}},{key:"setStyle",value:function(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}if(l=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(t)){var n,i,r,a,o=l[1],s=l[2];switch(o){case"rgb":case"rgba":if(n=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(n[1],10))/255,this.g=Math.min(255,parseInt(n[2],10))/255,this.b=Math.min(255,parseInt(n[3],10))/255,e(n[4]),this;if(n=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(n[1],10))/100,this.g=Math.min(100,parseInt(n[2],10))/100,this.b=Math.min(100,parseInt(n[3],10))/100,e(n[4]),this;break;case"hsl":case"hsla":if(n=/^(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i=parseFloat(n[1])/360,r=parseInt(n[2],10)/100,a=parseInt(n[3],10)/100,e(n[4]),this.setHSL(i,r,a)}}else if(l=/^\#([A-Fa-f\d]+)$/.exec(t)){var o=l[1],l=o.length;if(3===l)return this.r=parseInt(o.charAt(0)+o.charAt(0),16)/255,this.g=parseInt(o.charAt(1)+o.charAt(1),16)/255,this.b=parseInt(o.charAt(2)+o.charAt(2),16)/255,this;if(6===l)return this.r=parseInt(o.charAt(0)+o.charAt(1),16)/255,this.g=parseInt(o.charAt(2)+o.charAt(3),16)/255,this.b=parseInt(o.charAt(4)+o.charAt(5),16)/255,this}return t&&0<t.length?this.setColorName(t):this}},{key:"setColorName",value:function(e){var t=hr[e];return void 0!==t?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this}},{key:"clone",value:function(){return new this.constructor(this.r,this.g,this.b)}},{key:"copy",value:function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}},{key:"copyGammaToLinear",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2;return this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this}},{key:"copyLinearToGamma",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2,t=0<t?1/t:1;return this.r=Math.pow(e.r,t),this.g=Math.pow(e.g,t),this.b=Math.pow(e.b,t),this}},{key:"convertGammaToLinear",value:function(e){return this.copyGammaToLinear(this,e),this}},{key:"convertLinearToGamma",value:function(e){return this.copyLinearToGamma(this,e),this}},{key:"copySRGBToLinear",value:function(e){return this.r=mr(e.r),this.g=mr(e.g),this.b=mr(e.b),this}},{key:"copyLinearToSRGB",value:function(e){return this.r=vr(e.r),this.g=vr(e.g),this.b=vr(e.b),this}},{key:"convertSRGBToLinear",value:function(){return this.copySRGBToLinear(this),this}},{key:"convertLinearToSRGB",value:function(){return this.copyLinearToSRGB(this),this}},{key:"getHex",value:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0}},{key:"getHexString",value:function(){return("000000"+this.getHex().toString(16)).slice(-6)}},{key:"getHSL",value:function(e){void 0===e&&(console.warn("THREE.Color: .getHSL() target is now required"),e={h:0,s:0,l:0});var t,n=this.r,i=this.g,r=this.b,a=Math.max(n,i,r),o=Math.min(n,i,r),s=(o+a)/2;if(o===a)u=t=0;else{var l=a-o,u=s<=.5?l/(a+o):l/(2-a-o);switch(a){case n:t=(i-r)/l+(i<r?6:0);break;case i:t=(r-n)/l+2;break;case r:t=(n-i)/l+4}t/=6}return e.h=t,e.s=u,e.l=s,e}},{key:"getStyle",value:function(){return"rgb("+(255*this.r|0)+","+(255*this.g|0)+","+(255*this.b|0)+")"}},{key:"offsetHSL",value:function(e,t,n){return this.getHSL(dr),dr.h+=e,dr.s+=t,dr.l+=n,this.setHSL(dr.h,dr.s,dr.l),this}},{key:"add",value:function(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}},{key:"addColors",value:function(e,t){return this.r=e.r+t.r,this.g=e.g+t.g,this.b=e.b+t.b,this}},{key:"addScalar",value:function(e){return this.r+=e,this.g+=e,this.b+=e,this}},{key:"sub",value:function(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}},{key:"multiply",value:function(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}},{key:"multiplyScalar",value:function(e){return this.r*=e,this.g*=e,this.b*=e,this}},{key:"lerp",value:function(e,t){return this.r+=(e.r-this.r)*t,this.g+=(e.g-this.g)*t,this.b+=(e.b-this.b)*t,this}},{key:"lerpHSL",value:function(e,t){this.getHSL(dr),e.getHSL(pr);var e=Be.lerp(dr.h,pr.h,t),n=Be.lerp(dr.s,pr.s,t),t=Be.lerp(dr.l,pr.l,t);return this.setHSL(e,n,t),this}},{key:"equals",value:function(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}},{key:"fromArray",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return this.r=e[t],this.g=e[t+1],this.b=e[t+2],this}},{key:"toArray",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,e}},{key:"fromBufferAttribute",value:function(e,t){return this.r=e.getX(t),this.g=e.getY(t),this.b=e.getZ(t),!0===e.normalized&&(this.r/=255,this.g/=255,this.b/=255),this}},{key:"toJSON",value:function(){return this.getHex()}}]),i}(),gr=(Me.NAMES=hr,Me.prototype.r=1,Me.prototype.g=1,Me.prototype.b=1,function(){function o(e,t,n,i,r){var a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;te(this,o),this.a=e,this.b=t,this.c=n,this.normal=i&&i.isVector3?i:new Re,this.vertexNormals=Array.isArray(i)?i:[],this.color=r&&r.isColor?r:new Me,this.vertexColors=Array.isArray(r)?r:[],this.materialIndex=a}return A(o,[{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){this.a=e.a,this.b=e.b,this.c=e.c,this.normal.copy(e.normal),this.color.copy(e.color),this.materialIndex=e.materialIndex;for(var t=0,n=e.vertexNormals.length;t<n;t++)this.vertexNormals[t]=e.vertexNormals[t].clone();for(var i=0,r=e.vertexColors.length;i<r;i++)this.vertexColors[i]=e.vertexColors[i].clone();return this}}]),o}()),Ar=0;function yr(){Object.defineProperty(this,"id",{value:Ar++}),this.uuid=Be.generateUUID(),this.name="",this.type="Material",this.fog=!0,this.blending=Ae,this.side=fe,this.flatShading=!1,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Oe,this.blendDst=Ne,this.blendEquation=Ee,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Je,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=519,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=7680,this.stencilZFail=7680,this.stencilZPass=7680,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaTest=0,this.premultipliedAlpha=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0}function L(e){yr.call(this),this.type="MeshBasicMaterial",this.color=new Me(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ze,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.setValues(e)}yr.prototype=Object.assign(Object.create(zn.prototype),{constructor:yr,isMaterial:!0,onBeforeCompile:function(){},customProgramCacheKey:function(){return this.onBeforeCompile.toString()},setValues:function(e){if(void 0!==e)for(var t in e){var n,i=e[t];void 0===i?console.warn("THREE.Material: '"+t+"' parameter is undefined."):"shading"===t?(console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===i):void 0!==(n=this[t])&&(n&&n.isColor?n.set(i):n&&n.isVector3&&i&&i.isVector3?n.copy(i):this[t]=i)}},toJSON:function(e){var t=void 0===e||"string"==typeof e,n=(t&&(e={textures:{},images:{}}),{metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}});function i(e){var t,n=[];for(t in e){var i=e[t];delete i.metadata,n.push(i)}return n}return n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),this.sheen&&this.sheen.isColor&&(n.sheen=this.sheen.getHex()),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,n.reflectivity=this.reflectivity,n.refractionRatio=this.refractionRatio,void 0!==this.combine&&(n.combine=this.combine),void 0!==this.envMapIntensity)&&(n.envMapIntensity=this.envMapIntensity),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.size&&(n.size=this.size),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Ae&&(n.blending=this.blending),!0===this.flatShading&&(n.flatShading=this.flatShading),this.side!==fe&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),0<this.alphaTest&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),1<this.wireframeLinewidth&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.morphTargets&&(n.morphTargets=!0),!0===this.morphNormals&&(n.morphNormals=!0),!0===this.skinning&&(n.skinning=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),"{}"!==JSON.stringify(this.userData)&&(n.userData=this.userData),t&&(t=i(e.textures),e=i(e.images),0<t.length&&(n.textures=t),0<e.length)&&(n.images=e),n},clone:function(){return(new this.constructor).copy(this)},copy:function(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.flatShading=e.flatShading,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;var t=e.clippingPlanes,n=null;if(null!==t)for(var i=t.length,n=new Array(i),r=0;r!==i;++r)n[r]=t[r].clone();return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Object.defineProperty(yr.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),((L.prototype=Object.create(yr.prototype)).constructor=L).prototype.isMeshBasicMaterial=!0,L.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this};var wr=new Re,br=new Le;function Q(e,t,n){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=!0===n,this.usage=Nn,this.updateRange={offset:0,count:-1},this.version=0}function xr(e,t,n){Q.call(this,new Int8Array(e),t,n)}function Er(e,t,n){Q.call(this,new Uint8Array(e),t,n)}function Cr(e,t,n){Q.call(this,new Uint8ClampedArray(e),t,n)}function Br(e,t,n){Q.call(this,new Int16Array(e),t,n)}function _r(e,t,n){Q.call(this,new Uint16Array(e),t,n)}function Mr(e,t,n){Q.call(this,new Int32Array(e),t,n)}function Tr(e,t,n){Q.call(this,new Uint32Array(e),t,n)}function Sr(e,t,n){Q.call(this,new Uint16Array(e),t,n)}function ne(e,t,n){Q.call(this,new Float32Array(e),t,n)}function Ir(e,t,n){Q.call(this,new Float64Array(e),t,n)}Object.defineProperty(Q.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(Q.prototype,{isBufferAttribute:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.itemSize,n*=t.itemSize;for(var i=0,r=this.itemSize;i<r;i++)this.array[e+i]=t.array[n+i];return this},copyArray:function(e){return this.array.set(e),this},copyColorsArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyColorsArray(): color is undefined",i),a=new Me),t[n++]=a.r,t[n++]=a.g,t[n++]=a.b}return this},copyVector2sArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector2sArray(): vector is undefined",i),a=new Le),t[n++]=a.x,t[n++]=a.y}return this},copyVector3sArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector3sArray(): vector is undefined",i),a=new Re),t[n++]=a.x,t[n++]=a.y,t[n++]=a.z}return this},copyVector4sArray:function(e){for(var t=this.array,n=0,i=0,r=e.length;i<r;i++){var a=e[i];void 0===a&&(console.warn("THREE.BufferAttribute.copyVector4sArray(): vector is undefined",i),a=new Kn),t[n++]=a.x,t[n++]=a.y,t[n++]=a.z,t[n++]=a.w}return this},applyMatrix3:function(e){if(2===this.itemSize)for(var t=0,n=this.count;t<n;t++)br.fromBufferAttribute(this,t),br.applyMatrix3(e),this.setXY(t,br.x,br.y);else if(3===this.itemSize)for(var i=0,r=this.count;i<r;i++)wr.fromBufferAttribute(this,i),wr.applyMatrix3(e),this.setXYZ(i,wr.x,wr.y,wr.z);return this},applyMatrix4:function(e){for(var t=0,n=this.count;t<n;t++)wr.x=this.getX(t),wr.y=this.getY(t),wr.z=this.getZ(t),wr.applyMatrix4(e),this.setXYZ(t,wr.x,wr.y,wr.z);return this},applyNormalMatrix:function(e){for(var t=0,n=this.count;t<n;t++)wr.x=this.getX(t),wr.y=this.getY(t),wr.z=this.getZ(t),wr.applyNormalMatrix(e),this.setXYZ(t,wr.x,wr.y,wr.z);return this},transformDirection:function(e){for(var t=0,n=this.count;t<n;t++)wr.x=this.getX(t),wr.y=this.getY(t),wr.z=this.getZ(t),wr.transformDirection(e),this.setXYZ(t,wr.x,wr.y,wr.z);return this},set:function(e){return this.array.set(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:0),this},getX:function(e){return this.array[e*this.itemSize]},setX:function(e,t){return this.array[e*this.itemSize]=t,this},getY:function(e){return this.array[e*this.itemSize+1]},setY:function(e,t){return this.array[e*this.itemSize+1]=t,this},getZ:function(e){return this.array[e*this.itemSize+2]},setZ:function(e,t){return this.array[e*this.itemSize+2]=t,this},getW:function(e){return this.array[e*this.itemSize+3]},setW:function(e,t){return this.array[e*this.itemSize+3]=t,this},setXY:function(e,t,n){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this},setXYZ:function(e,t,n,i){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this},setXYZW:function(e,t,n,i,r){return e*=this.itemSize,this.array[e+0]=t,this.array[e+1]=n,this.array[e+2]=i,this.array[e+3]=r,this},onUpload:function(e){return this.onUploadCallback=e,this},clone:function(){return new this.constructor(this.array,this.itemSize).copy(this)},toJSON:function(){return{itemSize:this.itemSize,type:this.array.constructor.name,array:Array.prototype.slice.call(this.array),normalized:this.normalized}}}),(xr.prototype=Object.create(Q.prototype)).constructor=xr,(Er.prototype=Object.create(Q.prototype)).constructor=Er,(Cr.prototype=Object.create(Q.prototype)).constructor=Cr,(Br.prototype=Object.create(Q.prototype)).constructor=Br,_r.prototype=Object.create(Q.prototype),_r.prototype.constructor=_r,(Mr.prototype=Object.create(Q.prototype)).constructor=Mr,Tr.prototype=Object.create(Q.prototype),Tr.prototype.constructor=Tr,((Sr.prototype=Object.create(Q.prototype)).constructor=Sr).prototype.isFloat16BufferAttribute=!0,(ne.prototype=Object.create(Q.prototype)).constructor=ne,(Ir.prototype=Object.create(Q.prototype)).constructor=Ir;var Dr=function(){function e(){te(this,e),this.vertices=[],this.normals=[],this.colors=[],this.uvs=[],this.uvs2=[],this.groups=[],this.morphTargets={},this.skinWeights=[],this.skinIndices=[],this.boundingBox=null,this.boundingSphere=null,this.verticesNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.uvsNeedUpdate=!1,this.groupsNeedUpdate=!1}return A(e,[{key:"computeGroups",value:function(e){for(var t,n=[],i=void 0,r=e.faces,a=0;a<r.length;a++){var o=r[a];o.materialIndex!==i&&(i=o.materialIndex,void 0!==t&&(t.count=3*a-t.start,n.push(t)),t={start:3*a,materialIndex:i})}void 0!==t&&(t.count=3*a-t.start,n.push(t)),this.groups=n}},{key:"fromGeometry",value:function(e){var t=e.faces,n=e.vertices,i=e.faceVertexUvs,r=i[0]&&0<i[0].length,a=i[1]&&0<i[1].length,o=e.morphTargets,s=o.length;if(0<s){for(var l=[],u=0;u<s;u++)l[u]={name:o[u].name,data:[]};this.morphTargets.position=l}var c=e.morphNormals,h=c.length;if(0<h){for(var d=[],p=0;p<h;p++)d[p]={name:c[p].name,data:[]};this.morphTargets.normal=d}var f=e.skinIndices,m=e.skinWeights,v=f.length===n.length,g=m.length===n.length;0<n.length&&0===t.length&&console.error("THREE.DirectGeometry: Faceless geometries are not supported.");for(var A=0;A<t.length;A++){var y=t[A],w=(this.vertices.push(n[y.a],n[y.b],n[y.c]),y.vertexNormals),w=(3===w.length?this.normals.push(w[0],w[1],w[2]):(w=y.normal,this.normals.push(w,w,w)),y.vertexColors);3===w.length?this.colors.push(w[0],w[1],w[2]):(w=y.color,this.colors.push(w,w,w)),!0===r&&(void 0!==(w=i[0][A])?this.uvs.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ",A),this.uvs.push(new Le,new Le,new Le))),!0===a&&(void 0!==(w=i[1][A])?this.uvs2.push(w[0],w[1],w[2]):(console.warn("THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ",A),this.uvs2.push(new Le,new Le,new Le)));for(var b=0;b<s;b++){var x=o[b].vertices;l[b].data.push(x[y.a],x[y.b],x[y.c])}for(var E=0;E<h;E++){var C=c[E].vertexNormals[A];d[E].data.push(C.a,C.b,C.c)}v&&this.skinIndices.push(f[y.a],f[y.b],f[y.c]),g&&this.skinWeights.push(m[y.a],m[y.b],m[y.c])}return this.computeGroups(e),this.verticesNeedUpdate=e.verticesNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this}}]),e}();function Pr(e){if(0===e.length)return-1/0;for(var t=e[0],n=1,i=e.length;n<i;++n)e[n]>t&&(t=e[n]);return t}var kr={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:"undefined"!=typeof Uint8ClampedArray?Uint8ClampedArray:Uint8Array,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Lr(e,t){return new kr[e](t)}var Rr=1,Fr=new _e,Or=new K,Nr=new Re,Gr=new Y,Ur=new Y,zr=new Re;function j(){Object.defineProperty(this,"id",{value:Rr+=2}),this.uuid=Be.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}j.prototype=Object.assign(Object.create(zn.prototype),{constructor:j,isBufferGeometry:!0,getIndex:function(){return this.index},setIndex:function(e){return Array.isArray(e)?this.index=new(65535<Pr(e)?Tr:_r)(e,1):this.index=e,this},getAttribute:function(e){return this.attributes[e]},setAttribute:function(e,t){return this.attributes[e]=t,this},deleteAttribute:function(e){return delete this.attributes[e],this},hasAttribute:function(e){return void 0!==this.attributes[e]},addGroup:function(e,t){this.groups.push({start:e,count:t,materialIndex:2<arguments.length&&void 0!==arguments[2]?arguments[2]:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(e,t){this.drawRange.start=e,this.drawRange.count=t},applyMatrix4:function(e){var t=this.attributes.position,t=(void 0!==t&&(t.applyMatrix4(e),t.needsUpdate=!0),this.attributes.normal),n=(void 0!==t&&(n=(new Wn).getNormalMatrix(e),t.applyNormalMatrix(n),t.needsUpdate=!0),this.attributes.tangent);return void 0!==n&&(n.transformDirection(e),n.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(e){return Fr.makeRotationX(e),this.applyMatrix4(Fr),this},rotateY:function(e){return Fr.makeRotationY(e),this.applyMatrix4(Fr),this},rotateZ:function(e){return Fr.makeRotationZ(e),this.applyMatrix4(Fr),this},translate:function(e,t,n){return Fr.makeTranslation(e,t,n),this.applyMatrix4(Fr),this},scale:function(e,t,n){return Fr.makeScale(e,t,n),this.applyMatrix4(Fr),this},lookAt:function(e){return Or.lookAt(e),Or.updateMatrix(),this.applyMatrix4(Or.matrix),this},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(Nr).negate(),this.translate(Nr.x,Nr.y,Nr.z),this},setFromObject:function(e){var t,n,i=e.geometry;return e.isPoints||e.isLine?(n=new ne(3*i.vertices.length,3),t=new ne(3*i.colors.length,3),this.setAttribute("position",n.copyVector3sArray(i.vertices)),this.setAttribute("color",t.copyColorsArray(i.colors)),i.lineDistances&&i.lineDistances.length===i.vertices.length&&(n=new ne(i.lineDistances.length,1),this.setAttribute("lineDistance",n.copyArray(i.lineDistances))),null!==i.boundingSphere&&(this.boundingSphere=i.boundingSphere.clone()),null!==i.boundingBox&&(this.boundingBox=i.boundingBox.clone())):e.isMesh&&i&&i.isGeometry&&this.fromGeometry(i),this},setFromPoints:function(e){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n];t.push(r.x,r.y,r.z||0)}return this.setAttribute("position",new ne(t,3)),this},updateFromObject:function(e){var t=e.geometry;if(e.isMesh){var n=t.__directGeometry;if(!0===t.elementsNeedUpdate&&(n=void 0,t.elementsNeedUpdate=!1),void 0===n)return this.fromGeometry(t);n.verticesNeedUpdate=t.verticesNeedUpdate,n.normalsNeedUpdate=t.normalsNeedUpdate,n.colorsNeedUpdate=t.colorsNeedUpdate,n.uvsNeedUpdate=t.uvsNeedUpdate,n.groupsNeedUpdate=t.groupsNeedUpdate,t.verticesNeedUpdate=!1,t.normalsNeedUpdate=!1,t.colorsNeedUpdate=!1,t.uvsNeedUpdate=!1,t.groupsNeedUpdate=!1,t=n}return!0===t.verticesNeedUpdate&&(void 0!==(n=this.attributes.position)&&(n.copyVector3sArray(t.vertices),n.needsUpdate=!0),t.verticesNeedUpdate=!1),!0===t.normalsNeedUpdate&&(void 0!==(n=this.attributes.normal)&&(n.copyVector3sArray(t.normals),n.needsUpdate=!0),t.normalsNeedUpdate=!1),!0===t.colorsNeedUpdate&&(void 0!==(n=this.attributes.color)&&(n.copyColorsArray(t.colors),n.needsUpdate=!0),t.colorsNeedUpdate=!1),t.uvsNeedUpdate&&(void 0!==(n=this.attributes.uv)&&(n.copyVector2sArray(t.uvs),n.needsUpdate=!0),t.uvsNeedUpdate=!1),t.lineDistancesNeedUpdate&&(void 0!==(n=this.attributes.lineDistance)&&(n.copyArray(t.lineDistances),n.needsUpdate=!0),t.lineDistancesNeedUpdate=!1),t.groupsNeedUpdate&&(t.computeGroups(e.geometry),this.groups=t.groups,t.groupsNeedUpdate=!1),this},fromGeometry:function(e){return e.__directGeometry=(new Dr).fromGeometry(e),this.fromDirectGeometry(e.__directGeometry)},fromDirectGeometry:function(e){var t,n=new Float32Array(3*e.vertices.length);for(t in this.setAttribute("position",new Q(n,3).copyVector3sArray(e.vertices)),0<e.normals.length&&(n=new Float32Array(3*e.normals.length),this.setAttribute("normal",new Q(n,3).copyVector3sArray(e.normals))),0<e.colors.length&&(n=new Float32Array(3*e.colors.length),this.setAttribute("color",new Q(n,3).copyColorsArray(e.colors))),0<e.uvs.length&&(n=new Float32Array(2*e.uvs.length),this.setAttribute("uv",new Q(n,2).copyVector2sArray(e.uvs))),0<e.uvs2.length&&(n=new Float32Array(2*e.uvs2.length),this.setAttribute("uv2",new Q(n,2).copyVector2sArray(e.uvs2))),this.groups=e.groups,e.morphTargets){for(var i=[],r=e.morphTargets[t],a=0,o=r.length;a<o;a++){var s=r[a],l=new ne(3*s.data.length,3);l.name=s.name,i.push(l.copyVector3sArray(s.data))}this.morphAttributes[t]=i}return 0<e.skinIndices.length&&(n=new ne(4*e.skinIndices.length,4),this.setAttribute("skinIndex",n.copyVector4sArray(e.skinIndices))),0<e.skinWeights.length&&(n=new ne(4*e.skinWeights.length,4),this.setAttribute("skinWeight",n.copyVector4sArray(e.skinWeights))),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Y);var e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)console.error('THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingBox.set(new Re(-1/0,-1/0,-1/0),new Re(1/0,1/0,1/0));else{if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(var n=0,i=t.length;n<i;n++){var r=t[n];Gr.setFromBufferAttribute(r),this.morphTargetsRelative?(zr.addVectors(this.boundingBox.min,Gr.min),this.boundingBox.expandByPoint(zr),zr.addVectors(this.boundingBox.max,Gr.max),this.boundingBox.expandByPoint(zr)):(this.boundingBox.expandByPoint(Gr.min),this.boundingBox.expandByPoint(Gr.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new gi);var e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute)console.error('THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set "mesh.frustumCulled" to "false".',this),this.boundingSphere.set(new Re,1/0);else if(e){var n=this.boundingSphere.center;if(Gr.setFromBufferAttribute(e),t)for(var i=0,r=t.length;i<r;i++){var a=t[i];Ur.setFromBufferAttribute(a),this.morphTargetsRelative?(zr.addVectors(Gr.min,Ur.min),Gr.expandByPoint(zr),zr.addVectors(Gr.max,Ur.max),Gr.expandByPoint(zr)):(Gr.expandByPoint(Ur.min),Gr.expandByPoint(Ur.max))}Gr.getCenter(n);for(var o=0,s=0,l=e.count;s<l;s++)zr.fromBufferAttribute(e,s),o=Math.max(o,n.distanceToSquared(zr));if(t)for(var u=0,c=t.length;u<c;u++)for(var h=t[u],d=this.morphTargetsRelative,p=0,f=h.count;p<f;p++)zr.fromBufferAttribute(h,p),d&&(Nr.fromBufferAttribute(e,p),zr.add(Nr)),o=Math.max(o,n.distanceToSquared(zr));this.boundingSphere.radius=Math.sqrt(o),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}},computeFaceNormals:function(){},computeVertexNormals:function(){var e=this.index,t=this.getAttribute("position");if(void 0!==t){var n=this.getAttribute("normal");if(void 0===n)n=new Q(new Float32Array(3*t.count),3),this.setAttribute("normal",n);else for(var i=0,r=n.count;i<r;i++)n.setXYZ(i,0,0,0);var a=new Re,o=new Re,s=new Re,l=new Re,u=new Re,c=new Re,h=new Re,d=new Re;if(e)for(var p=0,f=e.count;p<f;p+=3){var m=e.getX(p+0),v=e.getX(p+1),g=e.getX(p+2);a.fromBufferAttribute(t,m),o.fromBufferAttribute(t,v),s.fromBufferAttribute(t,g),h.subVectors(s,o),d.subVectors(a,o),h.cross(d),l.fromBufferAttribute(n,m),u.fromBufferAttribute(n,v),c.fromBufferAttribute(n,g),l.add(h),u.add(h),c.add(h),n.setXYZ(m,l.x,l.y,l.z),n.setXYZ(v,u.x,u.y,u.z),n.setXYZ(g,c.x,c.y,c.z)}else for(var A=0,y=t.count;A<y;A+=3)a.fromBufferAttribute(t,A+0),o.fromBufferAttribute(t,A+1),s.fromBufferAttribute(t,A+2),h.subVectors(s,o),d.subVectors(a,o),h.cross(d),n.setXYZ(A+0,h.x,h.y,h.z),n.setXYZ(A+1,h.x,h.y,h.z),n.setXYZ(A+2,h.x,h.y,h.z);this.normalizeNormals(),n.needsUpdate=!0}},merge:function(e,t){if(e&&e.isBufferGeometry){void 0===t&&(t=0,console.warn("THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge."));var n,i=this.attributes;for(n in i)if(void 0!==e.attributes[n])for(var r=i[n].array,a=e.attributes[n],o=a.array,a=a.itemSize*t,s=Math.min(o.length,r.length-a),l=0,u=a;l<s;l++,u++)r[u]=o[l];return this}console.error("THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.",e)},normalizeNormals:function(){for(var e=this.attributes.normal,t=0,n=e.count;t<n;t++)zr.fromBufferAttribute(e,t),zr.normalize(),e.setXYZ(t,zr.x,zr.y,zr.z)},toNonIndexed:function(){function e(e,t){for(var n=e.array,i=e.itemSize,e=e.normalized,r=new n.constructor(t.length*i),a=0,o=0,s=0,l=t.length;s<l;s++)for(var a=t[s]*i,u=0;u<i;u++)r[o++]=n[a++];return new Q(r,i,e)}if(null===this.index)return console.warn("THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed."),this;var t,n=new j,i=this.index.array,r=this.attributes;for(t in r){var a=e(r[t],i);n.setAttribute(t,a)}var o,s=this.morphAttributes;for(o in s){for(var l=[],u=s[o],c=0,h=u.length;c<h;c++){var d=e(u[c],i);l.push(d)}n.morphAttributes[o]=l}n.morphTargetsRelative=this.morphTargetsRelative;for(var p=this.groups,f=0,m=p.length;f<m;f++){var v=p[f];n.addGroup(v.start,v.count,v.materialIndex)}return n},toJSON:function(){var e={metadata:{version:4.5,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),0<Object.keys(this.userData).length&&(e.userData=this.userData),void 0!==this.parameters){var t,n=this.parameters;for(t in n)void 0!==n[t]&&(e[t]=n[t])}else{e.data={attributes:{}};var i,r=this.index,a=(null!==r&&(e.data.index={type:r.array.constructor.name,array:Array.prototype.slice.call(r.array)}),this.attributes);for(i in a){var o=a[i],s=o.toJSON(e.data);""!==o.name&&(s.name=o.name),e.data.attributes[i]=s}var l,u={},c=!1;for(l in this.morphAttributes){for(var h=this.morphAttributes[l],d=[],p=0,f=h.length;p<f;p++){var m=h[p],v=m.toJSON(e.data);""!==m.name&&(v.name=m.name),d.push(v)}0<d.length&&(u[l]=d,c=!0)}c&&(e.data.morphAttributes=u,e.data.morphTargetsRelative=this.morphTargetsRelative);r=this.groups,r=(0<r.length&&(e.data.groups=JSON.parse(JSON.stringify(r))),this.boundingSphere);null!==r&&(e.data.boundingSphere={center:r.center.toArray(),radius:r.radius})}return e},clone:function(){return(new j).copy(this)},copy:function(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;var t,n={},i=(this.name=e.name,e.index),r=(null!==i&&this.setIndex(i.clone(n)),e.attributes);for(t in r){var a=r[t];this.setAttribute(t,a.clone(n))}var o,s=e.morphAttributes;for(o in s){for(var l=[],u=s[o],c=0,h=u.length;c<h;c++)l.push(u[c].clone(n));this.morphAttributes[o]=l}this.morphTargetsRelative=e.morphTargetsRelative;for(var d=e.groups,p=0,f=d.length;p<f;p++){var m=d[p];this.addGroup(m.start,m.count,m.materialIndex)}i=e.boundingBox,null!==i&&(this.boundingBox=i.clone()),i=e.boundingSphere;return null!==i&&(this.boundingSphere=i.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this},dispose:function(){this.dispatchEvent({type:"dispose"})}});var Hr=new _e,Qr=new Bi,Vr=new gi,jr=new Re,Wr=new Re,Jr=new Re,qr=new Re,Xr=new Re,Yr=new Re,Kr=new Re,Zr=new Re,$r=new Re,ea=new Le,ta=new Le,na=new Le,ia=new Re,ra=new Re;function Z(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new j,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new L;K.call(this),this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}function aa(e,t,n,i,r,a,o,s){i=t.side===me?i.intersectTriangle(o,a,r,!0,s):i.intersectTriangle(r,a,o,t.side!==ve,s);if(null===i)return null;ra.copy(s),ra.applyMatrix4(e.matrixWorld);r=n.ray.origin.distanceTo(ra);return r<n.near||r>n.far?null:{distance:r,point:ra.clone(),object:e}}function oa(e,t,n,i,r,a,o,s,l,u,c,h){jr.fromBufferAttribute(r,u),Wr.fromBufferAttribute(r,c),Jr.fromBufferAttribute(r,h);var d=e.morphTargetInfluences;if(t.morphTargets&&a&&d){Kr.set(0,0,0),Zr.set(0,0,0),$r.set(0,0,0);for(var p=0,f=a.length;p<f;p++){var m=d[p],v=a[p];0!==m&&(qr.fromBufferAttribute(v,u),Xr.fromBufferAttribute(v,c),Yr.fromBufferAttribute(v,h),o?(Kr.addScaledVector(qr,m),Zr.addScaledVector(Xr,m),$r.addScaledVector(Yr,m)):(Kr.addScaledVector(qr.sub(jr),m),Zr.addScaledVector(Xr.sub(Wr),m),$r.addScaledVector(Yr.sub(Jr),m)))}jr.add(Kr),Wr.add(Zr),Jr.add($r)}e.isSkinnedMesh&&(e.boneTransform(u,jr),e.boneTransform(c,Wr),e.boneTransform(h,Jr));r=aa(e,t,n,i,jr,Wr,Jr,ia);return r&&(s&&(ea.fromBufferAttribute(s,u),ta.fromBufferAttribute(s,c),na.fromBufferAttribute(s,h),r.uv=cr.getUV(ia,jr,Wr,Jr,ea,ta,na,new Le)),l&&(ea.fromBufferAttribute(l,u),ta.fromBufferAttribute(l,c),na.fromBufferAttribute(l,h),r.uv2=cr.getUV(ia,jr,Wr,Jr,ea,ta,na,new Le)),e=new gr(u,c,h),cr.getNormal(jr,Wr,Jr,e.normal),r.face=e),r}Z.prototype=Object.assign(Object.create(K.prototype),{constructor:Z,isMesh:!0,copy:function(e){return K.prototype.copy.call(this,e),void 0!==e.morphTargetInfluences&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),void 0!==e.morphTargetDictionary&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this},updateMorphTargets:function(){var e=this.geometry;if(e.isBufferGeometry){var t=e.morphAttributes,n=Object.keys(t);if(0<n.length){var i=t[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r<a;r++){var o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}else{t=e.morphTargets;void 0!==t&&0<t.length&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}},raycast:function(e,t){var n=this.geometry,i=this.material,r=this.matrixWorld;if(void 0!==i&&(null===n.boundingSphere&&n.computeBoundingSphere(),Vr.copy(n.boundingSphere),Vr.applyMatrix4(r),!1!==e.ray.intersectsSphere(Vr)&&(Hr.copy(r).invert(),Qr.copy(e.ray).applyMatrix4(Hr),null===n.boundingBox||!1!==Qr.intersectsBox(n.boundingBox))))if(n.isBufferGeometry){var a=n.index,o=n.attributes.position,s=n.morphAttributes.position,l=n.morphTargetsRelative,u=n.attributes.uv,c=n.attributes.uv2,h=n.groups,d=n.drawRange;if(null!==a)if(Array.isArray(i))for(var p=0,f=h.length;p<f;p++)for(var m=h[p],v=i[m.materialIndex],g=Math.max(m.start,d.start),A=Math.min(m.start+m.count,d.start+d.count);g<A;g+=3){var y,w=a.getX(g),b=a.getX(g+1),F=a.getX(g+2);(y=oa(this,v,e,Qr,o,s,l,u,c,w,b,F))&&(y.faceIndex=Math.floor(g/3),y.face.materialIndex=m.materialIndex,t.push(y))}else for(var x=Math.max(0,d.start),O=Math.min(a.count,d.start+d.count);x<O;x+=3){var N=a.getX(x),G=a.getX(x+1),U=a.getX(x+2);(y=oa(this,i,e,Qr,o,s,l,u,c,N,G,U))&&(y.faceIndex=Math.floor(x/3),t.push(y))}else if(void 0!==o)if(Array.isArray(i))for(var E=0,z=h.length;E<z;E++)for(var C=h[E],H=i[C.materialIndex],B=Math.max(C.start,d.start),Q=Math.min(C.start+C.count,d.start+d.count);B<Q;B+=3)(y=oa(this,H,e,Qr,o,s,l,u,c,B,B+1,B+2))&&(y.faceIndex=Math.floor(B/3),y.face.materialIndex=C.materialIndex,t.push(y));else for(var _=Math.max(0,d.start),V=Math.min(o.count,d.start+d.count);_<V;_+=3)(y=oa(this,i,e,Qr,o,s,l,u,c,_,_+1,_+2))&&(y.faceIndex=Math.floor(_/3),t.push(y))}else if(n.isGeometry){var M,j=Array.isArray(i),T=n.vertices,S=n.faces,r=n.faceVertexUvs[0];0<r.length&&(M=r);for(var I=0,W=S.length;I<W;I++){var D,P,k,L=S[I],R=j?i[L.materialIndex]:i;void 0!==R&&(D=T[L.a],P=T[L.b],k=T[L.c],y=aa(this,R,e,Qr,D,P,k,ia))&&(M&&M[I]&&(R=M[I],ea.copy(R[0]),ta.copy(R[1]),na.copy(R[2]),y.uv=cr.getUV(ia,D,P,k,ea,ta,na,new Le)),y.face=L,y.faceIndex=I,t.push(y))}}}});var sa=function(){y(u,j);var l=C(u);function u(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,I=(te(this,u),(e=l.call(this)).type="BoxBufferGeometry",e.parameters={width:t,height:n,depth:i,widthSegments:r,heightSegments:a,depthSegments:o},G(e)),r=Math.floor(r),a=Math.floor(a),o=Math.floor(o),D=[],P=[],k=[],L=[],R=0,F=0;function s(e,t,n,i,r,a,o,s,l,u,c){for(var h=a/l,d=o/u,p=a/2,f=o/2,m=s/2,v=l+1,g=u+1,A=0,y=0,w=new Re,b=0;b<g;b++)for(var x=b*d-f,E=0;E<v;E++)w[e]=(E*h-p)*i,w[t]=x*r,w[n]=m,P.push(w.x,w.y,w.z),w[e]=0,w[t]=0,w[n]=0<s?1:-1,k.push(w.x,w.y,w.z),L.push(E/l),L.push(1-b/u),A+=1;for(var C=0;C<u;C++)for(var B=0;B<l;B++){var _=R+B+v*C,M=R+B+v*(C+1),T=R+(B+1)+v*(C+1),S=R+(B+1)+v*C;D.push(_,M,S),D.push(M,T,S),y+=6}I.addGroup(F,y,c),F+=y,R+=A}return s("z","y","x",-1,-1,i,n,t,o,a,0),s("z","y","x",1,-1,i,n,-t,o,a,1),s("x","z","y",1,1,t,i,n,r,o,2),s("x","z","y",1,-1,t,i,-n,r,o,3),s("x","y","z",1,-1,t,n,i,r,a,4),s("x","y","z",-1,-1,t,n,-i,r,a,5),e.setIndex(D),e.setAttribute("position",new ne(P,3)),e.setAttribute("normal",new ne(k,3)),e.setAttribute("uv",new ne(L,2)),e}return A(u)}();function la(e){var t,n={};for(t in e)for(var i in n[t]={},e[t]){var r=e[t][i];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture)?n[t][i]=r.clone():Array.isArray(r)?n[t][i]=r.slice():n[t][i]=r}return n}function ua(e){for(var t={},n=0;n<e.length;n++){var i,r=la(e[n]);for(i in r)t[i]=r[i]}return t}var ca={clone:la,merge:ua},ha="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",da="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}";function pa(e){yr.call(this),this.type="ShaderMaterial",this.defines={},this.uniforms={},this.vertexShader=ha,this.fragmentShader=da,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,void 0!==e&&(void 0!==e.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(e))}function fa(){K.call(this),this.type="Camera",this.matrixWorldInverse=new _e,this.projectionMatrix=new _e,this.projectionMatrixInverse=new _e}function ma(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:50,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2e3;fa.call(this),this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}((pa.prototype=Object.create(yr.prototype)).constructor=pa).prototype.isShaderMaterial=!0,pa.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=la(e.uniforms),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.lights=e.lights,this.clipping=e.clipping,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this},pa.prototype.toJSON=function(e){var t,n=yr.prototype.toJSON.call(this,e);for(t in n.glslVersion=this.glslVersion,n.uniforms={},this.uniforms){var i=this.uniforms[t].value;i&&i.isTexture?n.uniforms[t]={type:"t",value:i.toJSON(e).uuid}:i&&i.isColor?n.uniforms[t]={type:"c",value:i.getHex()}:i&&i.isVector2?n.uniforms[t]={type:"v2",value:i.toArray()}:i&&i.isVector3?n.uniforms[t]={type:"v3",value:i.toArray()}:i&&i.isVector4?n.uniforms[t]={type:"v4",value:i.toArray()}:i&&i.isMatrix3?n.uniforms[t]={type:"m3",value:i.toArray()}:i&&i.isMatrix4?n.uniforms[t]={type:"m4",value:i.toArray()}:n.uniforms[t]={value:i}}0<Object.keys(this.defines).length&&(n.defines=this.defines),n.vertexShader=this.vertexShader,n.fragmentShader=this.fragmentShader;var r,a={};for(r in this.extensions)!0===this.extensions[r]&&(a[r]=!0);return 0<Object.keys(a).length&&(n.extensions=a),n},fa.prototype=Object.assign(Object.create(K.prototype),{constructor:fa,isCamera:!0,copy:function(e,t){return K.prototype.copy.call(this,e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this},getWorldDirection:function(e){void 0===e&&(console.warn("THREE.Camera: .getWorldDirection() target is now required"),e=new Re),this.updateWorldMatrix(!0,!1);var t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()},updateMatrixWorld:function(e){K.prototype.updateMatrixWorld.call(this,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()},updateWorldMatrix:function(e,t){K.prototype.updateWorldMatrix.call(this,e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()},clone:function(){return(new this.constructor).copy(this)}}),ma.prototype=Object.assign(Object.create(fa.prototype),{constructor:ma,isPerspectiveCamera:!0,copy:function(e,t){return fa.prototype.copy.call(this,e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this},setFocalLength:function(e){e=.5*this.getFilmHeight()/e;this.fov=2*Be.RAD2DEG*Math.atan(e),this.updateProjectionMatrix()},getFocalLength:function(){var e=Math.tan(.5*Be.DEG2RAD*this.fov);return.5*this.getFilmHeight()/e},getEffectiveFOV:function(){return 2*Be.RAD2DEG*Math.atan(Math.tan(.5*Be.DEG2RAD*this.fov)/this.zoom)},getFilmWidth:function(){return this.filmGauge*Math.min(this.aspect,1)},getFilmHeight:function(){return this.filmGauge/Math.max(this.aspect,1)},setViewOffset:function(e,t,n,i,r,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var e,t=this.near,n=t*Math.tan(.5*Be.DEG2RAD*this.fov)/this.zoom,i=2*n,r=this.aspect*i,a=-.5*r,o=this.view,s=(null!==this.view&&this.view.enabled&&(s=o.fullWidth,e=o.fullHeight,a+=o.offsetX*r/s,n-=o.offsetY*i/e,r*=o.width/s,i*=o.height/e),this.filmOffset);0!==s&&(a+=t*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(a,a+r,n,n-i,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()},toJSON:function(e){e=K.prototype.toJSON.call(this,e);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,null!==this.view&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}});function va(e,t,a){var o,s,l,u,c,h;K.call(this),this.type="CubeCamera",!0!==a.isWebGLCubeRenderTarget?console.error("THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter."):(this.renderTarget=a,(o=new ma(90,1,e,t)).layers=this.layers,o.up.set(0,-1,0),o.lookAt(new Re(1,0,0)),this.add(o),(s=new ma(90,1,e,t)).layers=this.layers,s.up.set(0,-1,0),s.lookAt(new Re(-1,0,0)),this.add(s),(l=new ma(90,1,e,t)).layers=this.layers,l.up.set(0,0,1),l.lookAt(new Re(0,1,0)),this.add(l),(u=new ma(90,1,e,t)).layers=this.layers,u.up.set(0,0,-1),u.lookAt(new Re(0,-1,0)),this.add(u),(c=new ma(90,1,e,t)).layers=this.layers,c.up.set(0,-1,0),c.lookAt(new Re(0,0,1)),this.add(c),(h=new ma(90,1,e,t)).layers=this.layers,h.up.set(0,-1,0),h.lookAt(new Re(0,0,-1)),this.add(h),this.update=function(e,t){null===this.parent&&this.updateMatrixWorld();var n=e.xr.enabled,i=e.getRenderTarget(),r=(e.xr.enabled=!1,a.texture.generateMipmaps);a.texture.generateMipmaps=!1,e.setRenderTarget(a,0),e.render(t,o),e.setRenderTarget(a,1),e.render(t,s),e.setRenderTarget(a,2),e.render(t,l),e.setRenderTarget(a,3),e.render(t,u),e.setRenderTarget(a,4),e.render(t,c),a.texture.generateMipmaps=r,e.setRenderTarget(a,5),e.render(t,h),e.setRenderTarget(i),e.xr.enabled=n})}function ga(e,t,n,i,r,a,o,s,l,u){Xn.call(this,e=void 0!==e?e:[],t=void 0!==t?t:et,n,i,r,a,o=void 0!==o?o:Tt,s,l,u),this.flipY=!1,this._needsFlipEnvMap=!0}function Aa(e,t,n){Number.isInteger(t)&&(console.warn("THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )"),t=n),Zn.call(this,e,e,t),this.texture=new ga(void 0,(t=t||{}).mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture._needsFlipEnvMap=!1}function ya(e,t,n,i,r,a,o,s,l,u,c,h){Xn.call(this,null,a,o,s,l,u,i,r,c,h),this.image={data:e||null,width:t||1,height:n||1},this.magFilter=void 0!==l?l:ut,this.minFilter=void 0!==u?u:ut,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.needsUpdate=!0}(va.prototype=Object.create(K.prototype)).constructor=va,((ga.prototype=Object.create(Xn.prototype)).constructor=ga).prototype.isCubeTexture=!0,Object.defineProperty(ga.prototype,"images",{get:function(){return this.image},set:function(e){this.image=e}}),((Aa.prototype=Object.create(Zn.prototype)).constructor=Aa).prototype.isWebGLCubeRenderTarget=!0,Aa.prototype.fromEquirectangularTexture=function(e,t){this.texture.type=t.type,this.texture.format=St,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;var n={tEquirect:{value:null}},i="\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t#include <begin_vertex>\n\t\t\t\t#include <project_vertex>\n\n\t\t\t}\n\t\t",r="\n\n\t\t\tuniform sampler2D tEquirect;\n\n\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t}\n\t\t",a=new sa(5,5,5),n=new pa({name:"CubemapFromEquirect",uniforms:la(n),vertexShader:i,fragmentShader:r,side:me,blending:ge}),i=(n.uniforms.tEquirect.value=t,new Z(a,n)),r=t.minFilter;return t.minFilter===pt&&(t.minFilter=U),new va(1,10,this).update(e,i),t.minFilter=r,i.geometry.dispose(),i.material.dispose(),this},Aa.prototype.clear=function(e,t,n,i){for(var r=e.getRenderTarget(),a=0;a<6;a++)e.setRenderTarget(this,a),e.clear(t,n,i);e.setRenderTarget(r)},((ya.prototype=Object.create(Xn.prototype)).constructor=ya).prototype.isDataTexture=!0;var wa=new gi,ba=new Re,xa=function(){function o(e,t,n,i,r,a){te(this,o),this.planes=[void 0!==e?e:new $i,void 0!==t?t:new $i,void 0!==n?n:new $i,void 0!==i?i:new $i,void 0!==r?r:new $i,void 0!==a?a:new $i]}return A(o,[{key:"set",value:function(e,t,n,i,r,a){var o=this.planes;return o[0].copy(e),o[1].copy(t),o[2].copy(n),o[3].copy(i),o[4].copy(r),o[5].copy(a),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){for(var t=this.planes,n=0;n<6;n++)t[n].copy(e.planes[n]);return this}},{key:"setFromProjectionMatrix",value:function(e){var t=this.planes,e=e.elements,n=e[0],i=e[1],r=e[2],a=e[3],o=e[4],s=e[5],l=e[6],u=e[7],c=e[8],h=e[9],d=e[10],p=e[11],f=e[12],m=e[13],v=e[14],e=e[15];return t[0].setComponents(a-n,u-o,p-c,e-f).normalize(),t[1].setComponents(a+n,u+o,p+c,e+f).normalize(),t[2].setComponents(a+i,u+s,p+h,e+m).normalize(),t[3].setComponents(a-i,u-s,p-h,e-m).normalize(),t[4].setComponents(a-r,u-l,p-d,e-v).normalize(),t[5].setComponents(a+r,u+l,p+d,e+v).normalize(),this}},{key:"intersectsObject",value:function(e){var t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),wa.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(wa)}},{key:"intersectsSprite",value:function(e){return wa.center.set(0,0,0),wa.radius=.7071067811865476,wa.applyMatrix4(e.matrixWorld),this.intersectsSphere(wa)}},{key:"intersectsSphere",value:function(e){for(var t=this.planes,n=e.center,i=-e.radius,r=0;r<6;r++)if(t[r].distanceToPoint(n)<i)return!1;return!0}},{key:"intersectsBox",value:function(e){for(var t=this.planes,n=0;n<6;n++){var i=t[n];if(ba.x=(0<i.normal.x?e.max:e.min).x,ba.y=(0<i.normal.y?e.max:e.min).y,ba.z=(0<i.normal.z?e.max:e.min).z,i.distanceToPoint(ba)<0)return!1}return!0}},{key:"containsPoint",value:function(e){for(var t=this.planes,n=0;n<6;n++)if(t[n].distanceToPoint(e)<0)return!1;return!0}}]),o}();function Ea(){var n=null,e=!1,i=null,r=null;function a(e,t){i(e,t),r=n.requestAnimationFrame(a)}return{start:function(){!0!==e&&null!==i&&(r=n.requestAnimationFrame(a),e=!0)},stop:function(){n.cancelAnimationFrame(r),e=!1},setAnimationLoop:function(e){i=e},setContext:function(e){n=e}}}function Ca(l,e){var u=e.isWebGL2,c=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),c.get(e)},remove:function(e){e.isInterleavedBufferAttribute&&(e=e.data);var t=c.get(e);t&&(l.deleteBuffer(t.buffer),c.delete(e))},update:function(e,t){var n,i,r,a,o,s;e.isGLBufferAttribute?(!(n=c.get(e))||n.version<e.version)&&c.set(e,{buffer:e.buffer,type:e.type,bytesPerElement:e.elementSize,version:e.version}):(e.isInterleavedBufferAttribute&&(e=e.data),void 0===(n=c.get(e))?c.set(e,(r=t,a=(i=e).array,o=i.usage,s=l.createBuffer(),l.bindBuffer(r,s),l.bufferData(r,a,o),i.onUploadCallback(),r=5126,a instanceof Float32Array?r=5126:a instanceof Float64Array?console.warn("THREE.WebGLAttributes: Unsupported data buffer format: Float64Array."):a instanceof Uint16Array?i.isFloat16BufferAttribute?u?r=5131:console.warn("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2."):r=5123:a instanceof Int16Array?r=5122:a instanceof Uint32Array?r=5125:a instanceof Int32Array?r=5124:a instanceof Int8Array?r=5120:a instanceof Uint8Array&&(r=5121),{buffer:s,type:r,bytesPerElement:a.BYTES_PER_ELEMENT,version:i.version})):n.version<e.version&&(o=n.buffer,s=t,a=(r=e).array,r=r.updateRange,l.bindBuffer(s,o),-1===r.count?l.bufferSubData(s,0,a):(u?l.bufferSubData(s,r.offset*a.BYTES_PER_ELEMENT,a,r.offset,r.count):l.bufferSubData(s,r.offset*a.BYTES_PER_ELEMENT,a.subarray(r.offset,r.offset+r.count)),r.count=-1),n.version=e.version))}}}var Ba=function(){y(_,j);var B=C(_);function _(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=(te(this,_),(e=B.call(this)).type="PlaneBufferGeometry",e.parameters={width:t,height:n,widthSegments:i,heightSegments:r},t/2),o=n/2,s=Math.floor(i),l=Math.floor(r),u=s+1,c=l+1,h=t/s,d=n/l,p=[],f=[],m=[],v=[],g=0;g<c;g++)for(var A=g*d-o,y=0;y<u;y++)f.push(y*h-a,-A,0),m.push(0,0,1),v.push(y/s),v.push(1-g/l);for(var w=0;w<l;w++)for(var b=0;b<s;b++){var x=b+u*(w+1),E=b+1+u*(w+1),C=b+1+u*w;p.push(b+u*w,x,C),p.push(x,E,C)}return e.setIndex(p),e.setAttribute("position",new ne(f,3)),e.setAttribute("normal",new ne(m,3)),e.setAttribute("uv",new ne(v,2)),e}return A(_)}(),_a={alphamap_fragment:"#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef ALPHATEST\n\tif ( diffuseColor.a < ALPHATEST ) discard;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\n\treflectedLight.indirectDiffuse *= ambientOcclusion;\n\t#if defined( USE_ENVMAP ) && defined( STANDARD )\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\n\t#endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n\tuniform sampler2D aoMap;\n\tuniform float aoMapIntensity;\n#endif",begin_vertex:"vec3 transformed = vec3( position );",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n\tvec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\n}\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\tif( cutoffDistance > 0.0 ) {\n\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t}\n\treturn distanceFalloff;\n#else\n\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t}\n\treturn 1.0;\n#endif\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\n\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\n\treturn Fr * fresnel + F0;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\n\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\treturn specularColor * brdf.x + brdf.y;\n}\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\n\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\n\tvec3 FssEss = F * brdf.x + brdf.y;\n\tfloat Ess = brdf.x + brdf.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie(float roughness, float NoH) {\n\tfloat invAlpha = 1.0 / roughness;\n\tfloat cos2h = NoH * NoH;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\n}\nfloat V_Neubelt(float NoV, float NoL) {\n\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\n}\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\n\tvec3 N = geometry.normal;\n\tvec3 V = geometry.viewDir;\n\tvec3 H = normalize( V + L );\n\tfloat dotNH = saturate( dot( N, H ) );\n\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\n}\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor.xyz *= color.xyz;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat linearToRelativeLuminance( const in vec3 color ) {\n\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\n\treturn dot( weights, color.rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_maxMipLevel 8.0\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_maxTileSize 256.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\n\t\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\n\t\tvec2 f = fract( uv );\n\t\tuv += 0.5 - f;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tif ( mipInt < cubeUV_maxMipLevel ) {\n\t\t\tuv.y += 2.0 * cubeUV_maxTileSize;\n\t\t}\n\t\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\n\t\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\n\t\tuv *= texelSize;\n\t\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x += texelSize;\n\t\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.y += texelSize;\n\t\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tuv.x -= texelSize;\n\t\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\n\t\tvec3 tm = mix( tl, tr, f.x );\n\t\tvec3 bm = mix( bl, br, f.x );\n\t\treturn mix( tm, bm, f.y );\n\t}\n\t#define r0 1.0\n\t#define v0 0.339\n\t#define m0 - 2.0\n\t#define r1 0.8\n\t#define v1 0.276\n\t#define m1 - 1.0\n\t#define r4 0.4\n\t#define v4 0.046\n\t#define m4 2.0\n\t#define r5 0.305\n\t#define v5 0.016\n\t#define m5 3.0\n\t#define r6 0.21\n\t#define v6 0.0038\n\t#define m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= r1 ) {\n\t\t\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\n\t\t} else if ( roughness >= r4 ) {\n\t\t\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\n\t\t} else if ( roughness >= r5 ) {\n\t\t\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\n\t\t} else if ( roughness >= r6 ) {\n\t\t\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif",encodings_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\n\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract( Le );\n\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\n\treturn vec4( max( vRGB, 0.0 ), 1.0 );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifndef ENVMAP_TYPE_CUBE_UV\n\t\tenvColor = envMapTexelToLinear( envColor );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\tuniform int maxMipLevel;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif",envmap_physical_pars_fragment:"#if defined( USE_ENVMAP )\n\t#ifdef ENVMAP_MODE_REFRACTION\n\t\tuniform float refractionRatio;\n\t#endif\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -viewDir, normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif",fog_vertex:"#ifdef USE_FOG\n\tfogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n\tvarying float fogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn texture2D( gradientMap, coord ).rgb;\n\t#else\n\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t#endif\n}",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n#endif",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\nvIndirectFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n\tvIndirectBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\n#ifdef DOUBLE_SIDED\n\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\n\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\n#endif\n#if NUM_POINT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_DIR_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n\t#pragma unroll_loop_end\n#endif",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\n\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon\n#define Material_LightProbeLOD( material )\t(0)",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\n#ifdef REFLECTIVITY\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#endif\n#ifdef CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheen;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat specularRoughness;\n\tvec3 specularColor;\n#ifdef CLEARCOAT\n\tfloat clearcoat;\n\tfloat clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tvec3 sheenColor;\n#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = ccDotNL * directLight.color;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tccIrradiance *= PI;\n\t\t#endif\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\n\t\t\tmaterial.specularRoughness,\n\t\t\tdirectLight.direction,\n\t\t\tgeometry,\n\t\t\tmaterial.sheenColor\n\t\t);\n\t#else\n\t\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\n\t#endif\n\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef CLEARCOAT\n\t\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\n\t\tfloat ccDotNL = ccDotNV;\n\t\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\n\t#else\n\t\tfloat clearcoatDHR = 0.0;\n\t#endif\n\tfloat clearcoatInv = 1.0 - clearcoatDHR;\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\n\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\n\t#ifdef CLEARCOAT\n\t\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\n\t#endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, uv );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifndef USE_MORPHNORMALS\n\t\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\t\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t#endif\n#endif",normal_fragment_begin:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;",normal_fragment_maps:"#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\n\t\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\n\t\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\n\t\tvec3 N = normalize( surf_norm );\n\t\tmat3 tsn = mat3( S, T, N );\n\t\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif",clearcoat_normal_fragment_begin:"#ifdef CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\n\t#endif\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\n\t\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\tvec4 shadowWorldPosition;\n\t#endif\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform highp sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmissionmap_fragment:"#ifdef USE_TRANSMISSIONMAP\n\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\n#endif",transmissionmap_pars_fragment:"#ifdef USE_TRANSMISSIONMAP\n\tuniform sampler2D transmissionMap;\n#endif",uv_pars_fragment:"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif",uv_vertex:"#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif",background_frag:"uniform sampler2D t2D;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}",cube_frag:"#include <envmap_common_pars_fragment>\nuniform float opacity;\nvarying vec3 vWorldDirection;\n#include <cube_uv_reflection_fragment>\nvoid main() {\n\tvec3 vReflect = vWorldDirection;\n\t#include <envmap_fragment>\n\tgl_FragColor = envColor;\n\tgl_FragColor.a *= opacity;\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",cube_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\tgl_Position.z = gl_Position.w;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <logdepthbuf_fragment>\n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}",depth_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvHighPrecisionZW = gl_Position.zw;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include <common>\n#include <packing>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main () {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include <beginnormal_vertex>\n\t\t#include <morphnormal_vertex>\n\t\t#include <skinnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\tvWorldPosition = worldPosition.xyz;\n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tvec4 texColor = texture2D( tEquirect, sampleUV );\n\tgl_FragColor = mapTexelToLinear( texColor );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include <common>\nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include <begin_vertex>\n\t#include <project_vertex>\n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <color_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\n\t\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include <aomap_fragment>\n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshbasic_vert:"#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <skinbase_vertex>\n\t#ifdef USE_ENVMAP\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <worldpos_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <envmap_vertex>\n\t#include <fog_vertex>\n}",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <fog_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <emissivemap_fragment>\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\n\t#else\n\t\treflectedLight.indirectDiffuse += vIndirectFront;\n\t#endif\n\t#include <lightmap_fragment>\n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\nvarying vec3 vIndirectFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n\tvarying vec3 vIndirectBack;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <envmap_pars_vertex>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <lights_lambert_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t\tmatcapColor = matcapTexelToLinear( matcapColor );\n\t#else\n\t\tvec4 matcapColor = vec4( 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <color_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#ifndef FLAT_SHADED\n\t\tvNormal = normalize( transformedNormal );\n\t#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n\tvViewPosition = - mvPosition.xyz;\n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <gradientmap_pars_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_toon_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_toon_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_pars_fragment>\n#include <cube_uv_reflection_fragment>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <lights_phong_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <specularmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <specularmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <lights_phong_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include <envmap_fragment>\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <envmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <envmap_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n\t#define REFLECTIVITY\n\t#define CLEARCOAT\n\t#define TRANSMISSION\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef TRANSMISSION\n\tuniform float transmission;\n#endif\n#ifdef REFLECTIVITY\n\tuniform float reflectivity;\n#endif\n#ifdef CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheen;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#include <color_pars_fragment>\n#include <uv_pars_fragment>\n#include <uv2_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <aomap_pars_fragment>\n#include <lightmap_pars_fragment>\n#include <emissivemap_pars_fragment>\n#include <transmissionmap_pars_fragment>\n#include <bsdfs>\n#include <cube_uv_reflection_fragment>\n#include <envmap_common_pars_fragment>\n#include <envmap_physical_pars_fragment>\n#include <fog_pars_fragment>\n#include <lights_pars_begin>\n#include <lights_physical_pars_fragment>\n#include <shadowmap_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <clearcoat_pars_fragment>\n#include <roughnessmap_pars_fragment>\n#include <metalnessmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#ifdef TRANSMISSION\n\t\tfloat totalTransmission = transmission;\n\t#endif\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <color_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\t#include <roughnessmap_fragment>\n\t#include <metalnessmap_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\t#include <clearcoat_normal_fragment_begin>\n\t#include <clearcoat_normal_fragment_maps>\n\t#include <emissivemap_fragment>\n\t#include <transmissionmap_fragment>\n\t#include <lights_physical_fragment>\n\t#include <lights_fragment_begin>\n\t#include <lights_fragment_maps>\n\t#include <lights_fragment_end>\n\t#include <aomap_fragment>\n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#ifdef TRANSMISSION\n\t\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\n\t#endif\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\t#include <dithering_fragment>\n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <uv2_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <shadowmap_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <uv2_vertex>\n\t#include <color_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\tvViewPosition = - mvPosition.xyz;\n\t#include <worldpos_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <packing>\n#include <uv_pars_fragment>\n#include <bumpmap_pars_fragment>\n#include <normalmap_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\t#include <logdepthbuf_fragment>\n\t#include <normal_fragment_begin>\n\t#include <normal_fragment_maps>\n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif\n#include <common>\n#include <uv_pars_vertex>\n#include <displacementmap_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <skinning_vertex>\n\t#include <displacementmap_vertex>\n\t#include <project_vertex>\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <color_pars_fragment>\n#include <map_particle_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_particle_fragment>\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n}",points_vert:"uniform float size;\nuniform float scale;\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <color_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include <common>\n#include <packing>\n#include <fog_pars_fragment>\n#include <bsdfs>\n#include <lights_pars_begin>\n#include <shadowmap_pars_fragment>\n#include <shadowmask_pars_fragment>\nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",shadow_vert:"#include <common>\n#include <fog_pars_vertex>\n#include <shadowmap_pars_vertex>\nvoid main() {\n\t#include <begin_vertex>\n\t#include <project_vertex>\n\t#include <worldpos_vertex>\n\t#include <beginnormal_vertex>\n\t#include <morphnormal_vertex>\n\t#include <skinbase_vertex>\n\t#include <skinnormal_vertex>\n\t#include <defaultnormal_vertex>\n\t#include <shadowmap_vertex>\n\t#include <fog_vertex>\n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include <common>\n#include <uv_pars_fragment>\n#include <map_pars_fragment>\n#include <alphamap_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\nvoid main() {\n\t#include <clipping_planes_fragment>\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include <logdepthbuf_fragment>\n\t#include <map_fragment>\n\t#include <alphamap_fragment>\n\t#include <alphatest_fragment>\n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include <common>\n#include <uv_pars_vertex>\n#include <fog_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvoid main() {\n\t#include <uv_vertex>\n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <fog_vertex>\n}"},D={common:{diffuse:{value:new Me(15658734)},opacity:{value:1},map:{value:null},uvTransform:{value:new Wn},uv2Transform:{value:new Wn},alphaMap:{value:null}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},refractionRatio:{value:.98},maxMipLevel:{value:0}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Le(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Me(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Me(15658734)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Wn}},sprite:{diffuse:{value:new Me(15658734)},opacity:{value:1},center:{value:new Le(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},uvTransform:{value:new Wn}}},Ma={basic:{uniforms:ua([D.common,D.specularmap,D.envmap,D.aomap,D.lightmap,D.fog]),vertexShader:_a.meshbasic_vert,fragmentShader:_a.meshbasic_frag},lambert:{uniforms:ua([D.common,D.specularmap,D.envmap,D.aomap,D.lightmap,D.emissivemap,D.fog,D.lights,{emissive:{value:new Me(0)}}]),vertexShader:_a.meshlambert_vert,fragmentShader:_a.meshlambert_frag},phong:{uniforms:ua([D.common,D.specularmap,D.envmap,D.aomap,D.lightmap,D.emissivemap,D.bumpmap,D.normalmap,D.displacementmap,D.fog,D.lights,{emissive:{value:new Me(0)},specular:{value:new Me(1118481)},shininess:{value:30}}]),vertexShader:_a.meshphong_vert,fragmentShader:_a.meshphong_frag},standard:{uniforms:ua([D.common,D.envmap,D.aomap,D.lightmap,D.emissivemap,D.bumpmap,D.normalmap,D.displacementmap,D.roughnessmap,D.metalnessmap,D.fog,D.lights,{emissive:{value:new Me(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:_a.meshphysical_vert,fragmentShader:_a.meshphysical_frag},toon:{uniforms:ua([D.common,D.aomap,D.lightmap,D.emissivemap,D.bumpmap,D.normalmap,D.displacementmap,D.gradientmap,D.fog,D.lights,{emissive:{value:new Me(0)}}]),vertexShader:_a.meshtoon_vert,fragmentShader:_a.meshtoon_frag},matcap:{uniforms:ua([D.common,D.bumpmap,D.normalmap,D.displacementmap,D.fog,{matcap:{value:null}}]),vertexShader:_a.meshmatcap_vert,fragmentShader:_a.meshmatcap_frag},points:{uniforms:ua([D.points,D.fog]),vertexShader:_a.points_vert,fragmentShader:_a.points_frag},dashed:{uniforms:ua([D.common,D.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:_a.linedashed_vert,fragmentShader:_a.linedashed_frag},depth:{uniforms:ua([D.common,D.displacementmap]),vertexShader:_a.depth_vert,fragmentShader:_a.depth_frag},normal:{uniforms:ua([D.common,D.bumpmap,D.normalmap,D.displacementmap,{opacity:{value:1}}]),vertexShader:_a.normal_vert,fragmentShader:_a.normal_frag},sprite:{uniforms:ua([D.sprite,D.fog]),vertexShader:_a.sprite_vert,fragmentShader:_a.sprite_frag},background:{uniforms:{uvTransform:{value:new Wn},t2D:{value:null}},vertexShader:_a.background_vert,fragmentShader:_a.background_frag},cube:{uniforms:ua([D.envmap,{opacity:{value:1}}]),vertexShader:_a.cube_vert,fragmentShader:_a.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:_a.equirect_vert,fragmentShader:_a.equirect_frag},distanceRGBA:{uniforms:ua([D.common,D.displacementmap,{referencePosition:{value:new Re},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:_a.distanceRGBA_vert,fragmentShader:_a.distanceRGBA_frag},shadow:{uniforms:ua([D.lights,D.fog,{color:{value:new Me(0)},opacity:{value:1}}]),vertexShader:_a.shadow_vert,fragmentShader:_a.shadow_frag}};function Ta(a,o,n,s,i){var l,u,c=new Me(0),h=0,d=null,p=0,f=null;function m(e,t){n.buffers.color.setClear(e.r,e.g,e.b,t,i)}return{getClearColor:function(){return c},setClearColor:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;c.set(e),m(c,h=t)},getClearAlpha:function(){return h},setClearAlpha:function(e){m(c,h=e)},render:function(e,t,n,i){(t=!0===t.isScene?t.background:null)&&t.isTexture&&(t=o.get(t));var r=(r=a.xr).getSession&&r.getSession();null===(t=r&&"additive"===r.environmentBlendMode?null:t)?m(c,h):t&&t.isColor&&(m(t,1),i=!0),(a.autoClear||i)&&a.clear(a.autoClearColor,a.autoClearDepth,a.autoClearStencil),t&&(t.isCubeTexture||t.isWebGLCubeRenderTarget||t.mapping===rt)?(void 0===u&&((u=new Z(new sa(1,1,1),new pa({name:"BackgroundCubeMaterial",uniforms:la(Ma.cube.uniforms),vertexShader:Ma.cube.vertexShader,fragmentShader:Ma.cube.fragmentShader,side:me,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),u.geometry.deleteAttribute("uv"),u.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(u.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),s.update(u)),t.isWebGLCubeRenderTarget&&(t=t.texture),u.material.uniforms.envMap.value=t,u.material.uniforms.flipEnvMap.value=t.isCubeTexture&&t._needsFlipEnvMap?-1:1,d===t&&p===t.version&&f===a.toneMapping||(u.material.needsUpdate=!0,p=(d=t).version,f=a.toneMapping),e.unshift(u,u.geometry,u.material,0,0,null)):t&&t.isTexture&&(void 0===l&&((l=new Z(new Ba(2,2),new pa({name:"BackgroundMaterial",uniforms:la(Ma.background.uniforms),vertexShader:Ma.background.vertexShader,fragmentShader:Ma.background.fragmentShader,side:fe,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),s.update(l)),!0===(l.material.uniforms.t2D.value=t).matrixAutoUpdate&&t.updateMatrix(),l.material.uniforms.uvTransform.value.copy(t.matrix),d===t&&p===t.version&&f===a.toneMapping||(l.material.needsUpdate=!0,p=(d=t).version,f=a.toneMapping),e.unshift(l,l.geometry,l.material,0,0,null))}}}function Sa(y,w,b,x){var a=y.getParameter(34921),p=x.isWebGL2?null:w.get("OES_vertex_array_object"),f=x.isWebGL2||null!==p,m={},e=A(null),v=e;function g(e){if(x.isWebGL2)return y.bindVertexArray(e);p.bindVertexArrayOES(e)}function o(e){if(x.isWebGL2)return y.deleteVertexArray(e);p.deleteVertexArrayOES(e)}function A(e){for(var t=[],n=[],i=[],r=0;r<a;r++)i[r]=n[r]=t[r]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:t,enabledAttributes:n,attributeDivisors:i,object:e,attributes:{},index:null}}function E(){for(var e=v.newAttributes,t=0,n=e.length;t<n;t++)e[t]=0}function C(e){B(e,0)}function B(e,t){var n=v.newAttributes,i=v.enabledAttributes,r=v.attributeDivisors;n[e]=1,0===i[e]&&(y.enableVertexAttribArray(e),i[e]=1),r[e]!==t&&((x.isWebGL2?y:w.get("ANGLE_instanced_arrays"))[x.isWebGL2?"vertexAttribDivisor":"vertexAttribDivisorANGLE"](e,t),r[e]=t)}function _(){for(var e=v.newAttributes,t=v.enabledAttributes,n=0,i=t.length;n<i;n++)t[n]!==e[n]&&(y.disableVertexAttribArray(n),t[n]=0)}function M(e,t,n,i,r,a){!0!==x.isWebGL2||5124!==n&&5125!==n?y.vertexAttribPointer(e,t,n,i,r,a):y.vertexAttribIPointer(e,t,n,r,a)}function s(){t(),v!==e&&g((v=e).object)}function t(){e.geometry=null,e.program=null,e.wireframe=!1}return{setup:function(e,t,n,i,r){var a=!1;if(f){var o=function(e,t,n){var n=!0===n.wireframe,i=m[e.id];void 0===i&&(i={},m[e.id]=i);e=i[t.id];void 0===e&&(e={},i[t.id]=e);i=e[n];void 0===i&&(i=A(x.isWebGL2?y.createVertexArray():p.createVertexArrayOES()),e[n]=i);return i}(i,n,t);if(v!==o&&g((v=o).object),a=function(e,t){var n,i=v.attributes,r=e.attributes,a=0;for(n in r){var o=i[n],s=r[n];if(void 0===o)return!0;if(o.attribute!==s)return!0;if(o.data!==s.data)return!0;a++}return v.attributesNum!==a||v.index!==t}(i,r)){var s,o=r,l={},u=i.attributes,c=0;for(s in u){var h=u[s],d={};(d.attribute=h).data&&(d.data=h.data),l[s]=d,c++}v.attributes=l,v.attributesNum=c,v.index=o}}else{o=!0===t.wireframe;v.geometry===i.id&&v.program===n.id&&v.wireframe===o||(v.geometry=i.id,v.program=n.id,v.wireframe=o,a=!0)}!0===e.isInstancedMesh&&(a=!0),null!==r&&b.update(r,34963),a&&(function(e,t,n,i){if(!1===x.isWebGL2&&(e.isInstancedMesh||i.isInstancedBufferGeometry)&&null===w.get("ANGLE_instanced_arrays"))return;E();var r,a=i.attributes,o=n.getAttributes(),s=t.defaultAttributeValues;for(r in o){var l=o[r];if(0<=l){var u=a[r];if(void 0!==u){var c,h=u.normalized,d=u.itemSize,p=b.get(u);void 0!==p&&(g=p.buffer,c=p.type,p=p.bytesPerElement,u.isInterleavedBufferAttribute?(v=u.data,f=v.stride,m=u.offset,v&&v.isInstancedInterleavedBuffer?(B(l,v.meshPerAttribute),void 0===i._maxInstanceCount&&(i._maxInstanceCount=v.meshPerAttribute*v.count)):C(l),y.bindBuffer(34962,g),M(l,d,c,h,f*p,m*p)):(u.isInstancedBufferAttribute?(B(l,u.meshPerAttribute),void 0===i._maxInstanceCount&&(i._maxInstanceCount=u.meshPerAttribute*u.count)):C(l),y.bindBuffer(34962,g),M(l,d,c,h,0,0)))}else if("instanceMatrix"===r){var f,m,v=b.get(e.instanceMatrix);void 0!==v&&(f=v.buffer,m=v.type,B(l+0,1),B(l+1,1),B(l+2,1),B(l+3,1),y.bindBuffer(34962,f),y.vertexAttribPointer(l+0,4,m,!1,64,0),y.vertexAttribPointer(l+1,4,m,!1,64,16),y.vertexAttribPointer(l+2,4,m,!1,64,32),y.vertexAttribPointer(l+3,4,m,!1,64,48))}else if("instanceColor"===r){var g,p=b.get(e.instanceColor);void 0!==p&&(u=p.buffer,g=p.type,B(l,1),y.bindBuffer(34962,u),y.vertexAttribPointer(l,3,g,!1,12,0))}else if(void 0!==s){var A=s[r];if(void 0!==A)switch(A.length){case 2:y.vertexAttrib2fv(l,A);break;case 3:y.vertexAttrib3fv(l,A);break;case 4:y.vertexAttrib4fv(l,A);break;default:y.vertexAttrib1fv(l,A)}}}}_()}(e,t,n,i),null!==r)&&y.bindBuffer(34963,b.get(r).buffer)},reset:s,resetDefaultState:t,dispose:function(){for(var e in s(),m){var t,n=m[e];for(t in n){var i,r=n[t];for(i in r)o(r[i].object),delete r[i];delete n[t]}delete m[e]}},releaseStatesOfGeometry:function(e){if(void 0!==m[e.id]){var t,n=m[e.id];for(t in n){var i,r=n[t];for(i in r)o(r[i].object),delete r[i];delete n[t]}delete m[e.id]}},releaseStatesOfProgram:function(e){for(var t in m){t=m[t];if(void 0!==t[e.id]){var n,i=t[e.id];for(n in i)o(i[n].object),delete i[n];delete t[e.id]}}},initAttributes:E,enableAttribute:C,disableUnusedAttributes:_}}function Ia(a,o,s,e){var l,u=e.isWebGL2;this.setMode=function(e){l=e},this.render=function(e,t){a.drawArrays(l,e,t),s.update(t,l,1)},this.renderInstances=function(e,t,n){if(0!==n){var i,r;if(u)i=a,r="drawArraysInstanced";else if(r="drawArraysInstancedANGLE",null===(i=o.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");i[r](l,e,t,n),s.update(t,l,n)}}}function Da(t,n,e){var i;function r(e){if("highp"===e){if(0<t.getShaderPrecisionFormat(35633,36338).precision&&0<t.getShaderPrecisionFormat(35632,36338).precision)return"highp";e="mediump"}return"mediump"===e&&0<t.getShaderPrecisionFormat(35633,36337).precision&&0<t.getShaderPrecisionFormat(35632,36337).precision?"mediump":"lowp"}var a="undefined"!=typeof WebGL2RenderingContext&&t instanceof WebGL2RenderingContext||"undefined"!=typeof WebGL2ComputeRenderingContext&&t instanceof WebGL2ComputeRenderingContext,o=void 0!==e.precision?e.precision:"highp",s=r(o),s=(s!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",s,"instead."),o=s),!0===e.logarithmicDepthBuffer),e=t.getParameter(34930),l=t.getParameter(35660),u=t.getParameter(3379),c=t.getParameter(34076),h=t.getParameter(34921),d=t.getParameter(36347),p=t.getParameter(36348),f=t.getParameter(36349),m=0<l,v=a||!!n.get("OES_texture_float");return{isWebGL2:a,getMaxAnisotropy:function(){var e;return void 0===i&&(e=n.get("EXT_texture_filter_anisotropic"),i=null!==e?t.getParameter(e.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0),i},getMaxPrecision:r,precision:o,logarithmicDepthBuffer:s,maxTextures:e,maxVertexTextures:l,maxTextureSize:u,maxCubemapSize:c,maxAttributes:h,maxVertexUniforms:d,maxVaryings:p,maxFragmentUniforms:f,vertexTextures:m,floatFragmentTextures:v,floatVertexTextures:m&&v,maxSamples:a?t.getParameter(36183):0}}function Pa(u){var c=this,h=null,d=0,p=!1,f=!1,m=new $i,v=new Wn,g={value:null,needsUpdate:!1};function A(){g.value!==h&&(g.value=h,g.needsUpdate=0<d),c.numPlanes=d,c.numIntersection=0}function y(e,t,n,i){var r=null!==e?e.length:0,a=null;if(0!==r){if(a=g.value,!0!==i||null===a){var i=n+4*r,o=t.matrixWorldInverse;v.getNormalMatrix(o),(null===a||a.length<i)&&(a=new Float32Array(i));for(var s=0,l=n;s!==r;++s,l+=4)m.copy(e[s]).applyMatrix4(o,v),m.normal.toArray(a,l),a[l+3]=m.constant}g.value=a,g.needsUpdate=!0}return c.numPlanes=r,c.numIntersection=0,a}this.uniform=g,this.numPlanes=0,this.numIntersection=0,this.init=function(e,t,n){var i=0!==e.length||t||0!==d||p;return p=t,h=y(e,n,0),d=e.length,i},this.beginShadows=function(){f=!0,y(null)},this.endShadows=function(){f=!1,A()},this.setState=function(e,t,n){var i=e.clippingPlanes,r=e.clipIntersection,a=e.clipShadows,e=u.get(e);if(!p||null===i||0===i.length||f&&!a)f?y(null):A();else{var a=f?0:d,o=4*a,s=e.clippingState||null;g.value=s;for(var s=y(i,t,o,n),l=0;l!==o;++l)s[l]=h[l];e.clippingState=s,this.numIntersection=r?this.numPlanes:0,this.numPlanes+=a}}}function ka(r){var a=new WeakMap;function o(e,t){return t===nt?e.mapping=et:t===it&&(e.mapping=tt),e}function s(e){var e=e.target,t=(e.removeEventListener("dispose",s),a.get(e));void 0!==t&&(a.delete(e),t.dispose())}return{get:function(e){if(e&&e.isTexture){var t,n,i=e.mapping;if(i===nt||i===it)return a.has(e)?o(a.get(e).texture,e.mapping):(i=e.image)&&0<i.height?(t=r.getRenderList(),n=r.getRenderTarget(),(i=new Aa(i.height/2)).fromEquirectangularTexture(r,e),a.set(e,i),r.setRenderTarget(n),r.setRenderList(t),e.addEventListener("dispose",s),o(i.texture,e.mapping)):null}return e},dispose:function(){a=new WeakMap}}}function La(n){var i={};return{has:function(e){if(void 0!==i[e])return null!==i[e];var t;switch(e){case"WEBGL_depth_texture":t=n.getExtension("WEBGL_depth_texture")||n.getExtension("MOZ_WEBGL_depth_texture")||n.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":t=n.getExtension("EXT_texture_filter_anisotropic")||n.getExtension("MOZ_EXT_texture_filter_anisotropic")||n.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":t=n.getExtension("WEBGL_compressed_texture_s3tc")||n.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":t=n.getExtension("WEBGL_compressed_texture_pvrtc")||n.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:t=n.getExtension(e)}return null!==(i[e]=t)},get:function(e){return this.has(e)||console.warn("THREE.WebGLRenderer: "+e+" extension not supported."),i[e]}}}function Ra(e,v,r,a){var o=new WeakMap,g=new WeakMap;function s(e){var t,e=e.target,n=o.get(e);for(t in null!==n.index&&v.remove(n.index),n.attributes)v.remove(n.attributes[t]);e.removeEventListener("dispose",s),o.delete(e);var i=g.get(n);i&&(v.remove(i),g.delete(n)),a.releaseStatesOfGeometry(n),!0===e.isInstancedBufferGeometry&&delete e._maxInstanceCount,r.memory.geometries--}function i(e){var t=[],n=e.index,i=e.attributes.position,r=0;if(null!==n)for(var a=n.array,r=n.version,o=0,s=a.length;o<s;o+=3){var l=a[o+0],u=a[o+1],c=a[o+2];t.push(l,u,u,c,c,l)}else{n=i.array;r=i.version;for(var h=0,d=n.length/3-1;h<d;h+=3){var p=h+0,f=h+1,m=h+2;t.push(p,f,f,m,m,p)}}i=new(65535<Pr(t)?Tr:_r)(t,1),i.version=r,n=g.get(e);n&&v.remove(n),g.set(e,i)}return{get:function(e,t){var n=o.get(t);return n||(t.addEventListener("dispose",s),t.isBufferGeometry?n=t:t.isGeometry&&(void 0===t._bufferGeometry&&(t._bufferGeometry=(new j).setFromObject(e)),n=t._bufferGeometry),o.set(t,n),r.memory.geometries++),n},update:function(e){var t,n=e.attributes;for(t in n)v.update(n[t],34962);var i,r=e.morphAttributes;for(i in r)for(var a=r[i],o=0,s=a.length;o<s;o++)v.update(a[o],34962)},getWireframeAttribute:function(e){var t,n=g.get(e);return(!n||null!==(t=e.index)&&n.version<t.version)&&i(e),g.get(e)}}}function Fa(a,o,s,e){var l,u,c,h=e.isWebGL2;this.setMode=function(e){l=e},this.setIndex=function(e){u=e.type,c=e.bytesPerElement},this.render=function(e,t){a.drawElements(l,t,u,e*c),s.update(t,l,1)},this.renderInstances=function(e,t,n){if(0!==n){var i,r;if(h)i=a,r="drawElementsInstanced";else if(r="drawElementsInstancedANGLE",null===(i=o.get("ANGLE_instanced_arrays")))return void console.error("THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.");i[r](l,t,u,e*c,n),s.update(t,l,n)}}}function Oa(e){var i={frame:0,calls:0,triangles:0,points:0,lines:0};return{memory:{geometries:0,textures:0},render:i,programs:null,autoReset:!0,reset:function(){i.frame++,i.calls=0,i.triangles=0,i.points=0,i.lines=0},update:function(e,t,n){switch(i.calls++,t){case 4:i.triangles+=n*(e/3);break;case 1:i.lines+=n*(e/2);break;case 3:i.lines+=n*(e-1);break;case 2:i.lines+=n*e;break;case 0:i.points+=n*e;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",t)}}}}function Na(e,t){return e[0]-t[0]}function Ga(e,t){return Math.abs(t[1])-Math.abs(e[1])}function Ua(g){for(var A={},y=new Float32Array(8),w=[],e=0;e<8;e++)w[e]=[e,0];return{update:function(e,t,n,i){var r=e.morphTargetInfluences,a=void 0===r?0:r.length;if(void 0===(o=A[t.id])){for(var o=[],s=0;s<a;s++)o[s]=[s,0];A[t.id]=o}for(var l=0;l<a;l++){var u=o[l];u[0]=l,u[1]=r[l]}o.sort(Ga);for(var c=0;c<8;c++)c<a&&o[c][1]?(w[c][0]=o[c][0],w[c][1]=o[c][1]):(w[c][0]=Number.MAX_SAFE_INTEGER,w[c][1]=0);w.sort(Na);for(var h=n.morphTargets&&t.morphAttributes.position,d=n.morphNormals&&t.morphAttributes.normal,p=0,f=0;f<8;f++){var m=w[f],v=m[0],m=m[1];v!==Number.MAX_SAFE_INTEGER&&m?(h&&t.getAttribute("morphTarget"+f)!==h[v]&&t.setAttribute("morphTarget"+f,h[v]),d&&t.getAttribute("morphNormal"+f)!==d[v]&&t.setAttribute("morphNormal"+f,d[v]),p+=y[f]=m):(h&&!0===t.hasAttribute("morphTarget"+f)&&t.deleteAttribute("morphTarget"+f),d&&!0===t.hasAttribute("morphNormal"+f)&&t.deleteAttribute("morphNormal"+f),y[f]=0)}e=t.morphTargetsRelative?1:1-p,i.getUniforms().setValue(g,"morphTargetBaseInfluence",e),i.getUniforms().setValue(g,"morphTargetInfluences",y)}}}function za(e,r,a,o){var s=new WeakMap;function l(e){e=e.target;e.removeEventListener("dispose",l),a.remove(e.instanceMatrix),null!==e.instanceColor&&a.remove(e.instanceColor)}return{update:function(e){var t=o.render.frame,n=e.geometry,i=r.get(e,n);return s.get(i)!==t&&(n.isGeometry&&i.updateFromObject(e),r.update(i),s.set(i,t)),e.isInstancedMesh&&(!1===e.hasEventListener("dispose",l)&&e.addEventListener("dispose",l),a.update(e.instanceMatrix,34962),null!==e.instanceColor)&&a.update(e.instanceColor,34962),i},dispose:function(){s=new WeakMap}}}function Ha(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;Xn.call(this,null),this.image={data:e,width:t,height:n,depth:i},this.magFilter=ut,this.minFilter=ut,this.wrapR=st,this.generateMipmaps=!1,this.flipY=!1,this.needsUpdate=!0}function Qa(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:null,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;Xn.call(this,null),this.image={data:e,width:t,height:n,depth:i},this.magFilter=ut,this.minFilter=ut,this.wrapR=st,this.generateMipmaps=!1,this.flipY=!1,this.needsUpdate=!0}Ma.physical={uniforms:ua([Ma.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Le(1,1)},clearcoatNormalMap:{value:null},sheen:{value:new Me(0)},transmission:{value:0},transmissionMap:{value:null}}]),vertexShader:_a.meshphysical_vert,fragmentShader:_a.meshphysical_frag},((Ha.prototype=Object.create(Xn.prototype)).constructor=Ha).prototype.isDataTexture2DArray=!0,((Qa.prototype=Object.create(Xn.prototype)).constructor=Qa).prototype.isDataTexture3D=!0;var Va=new Xn,ja=new Ha,Wa=new Qa,Ja=new ga,qa=[],Xa=[],Ya=new Float32Array(16),Ka=new Float32Array(9),Za=new Float32Array(4);function $a(e,t,n){var i=e[0];if(i<=0||0<i)return e;var r=t*n,a=qa[r];if(void 0===a&&(a=new Float32Array(r),qa[r]=a),0!==t){i.toArray(a,0);for(var o=1,s=0;o!==t;++o)e[o].toArray(a,s+=n)}return a}function eo(e,t){if(e.length===t.length){for(var n=0,i=e.length;n<i;n++)if(e[n]!==t[n])return;return 1}}function to(e,t){for(var n=0,i=t.length;n<i;n++)e[n]=t[n]}function no(e,t){var n=Xa[t];void 0===n&&(n=new Int32Array(t),Xa[t]=n);for(var i=0;i!==t;++i)n[i]=e.allocateTextureUnit();return n}function io(e,t){var n=this.cache;n[0]!==t&&(e.uniform1f(this.addr,t),n[0]=t)}function ro(e,t){var n=this.cache;void 0!==t.x?n[0]===t.x&&n[1]===t.y||(e.uniform2f(this.addr,t.x,t.y),n[0]=t.x,n[1]=t.y):eo(n,t)||(e.uniform2fv(this.addr,t),to(n,t))}function ao(e,t){var n=this.cache;void 0!==t.x?n[0]===t.x&&n[1]===t.y&&n[2]===t.z||(e.uniform3f(this.addr,t.x,t.y,t.z),n[0]=t.x,n[1]=t.y,n[2]=t.z):void 0!==t.r?n[0]===t.r&&n[1]===t.g&&n[2]===t.b||(e.uniform3f(this.addr,t.r,t.g,t.b),n[0]=t.r,n[1]=t.g,n[2]=t.b):eo(n,t)||(e.uniform3fv(this.addr,t),to(n,t))}function oo(e,t){var n=this.cache;void 0!==t.x?n[0]===t.x&&n[1]===t.y&&n[2]===t.z&&n[3]===t.w||(e.uniform4f(this.addr,t.x,t.y,t.z,t.w),n[0]=t.x,n[1]=t.y,n[2]=t.z,n[3]=t.w):eo(n,t)||(e.uniform4fv(this.addr,t),to(n,t))}function so(e,t){var n=this.cache,i=t.elements;void 0===i?eo(n,t)||(e.uniformMatrix2fv(this.addr,!1,t),to(n,t)):eo(n,i)||(Za.set(i),e.uniformMatrix2fv(this.addr,!1,Za),to(n,i))}function lo(e,t){var n=this.cache,i=t.elements;void 0===i?eo(n,t)||(e.uniformMatrix3fv(this.addr,!1,t),to(n,t)):eo(n,i)||(Ka.set(i),e.uniformMatrix3fv(this.addr,!1,Ka),to(n,i))}function uo(e,t){var n=this.cache,i=t.elements;void 0===i?eo(n,t)||(e.uniformMatrix4fv(this.addr,!1,t),to(n,t)):eo(n,i)||(Ya.set(i),e.uniformMatrix4fv(this.addr,!1,Ya),to(n,i))}function co(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.safeSetTexture2D(t||Va,r)}function ho(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture2DArray(t||ja,r)}function po(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.setTexture3D(t||Wa,r)}function fo(e,t,n){var i=this.cache,r=n.allocateTextureUnit();i[0]!==r&&(e.uniform1i(this.addr,r),i[0]=r),n.safeSetTextureCube(t||Ja,r)}function mo(e,t){var n=this.cache;n[0]!==t&&(e.uniform1i(this.addr,t),n[0]=t)}function vo(e,t){var n=this.cache;eo(n,t)||(e.uniform2iv(this.addr,t),to(n,t))}function go(e,t){var n=this.cache;eo(n,t)||(e.uniform3iv(this.addr,t),to(n,t))}function Ao(e,t){var n=this.cache;eo(n,t)||(e.uniform4iv(this.addr,t),to(n,t))}function yo(e,t){var n=this.cache;n[0]!==t&&(e.uniform1ui(this.addr,t),n[0]=t)}function wo(e,t){e.uniform1fv(this.addr,t)}function bo(e,t){e.uniform1iv(this.addr,t)}function xo(e,t){e.uniform2iv(this.addr,t)}function Eo(e,t){e.uniform3iv(this.addr,t)}function Co(e,t){e.uniform4iv(this.addr,t)}function Bo(e,t){t=$a(t,this.size,2);e.uniform2fv(this.addr,t)}function _o(e,t){t=$a(t,this.size,3);e.uniform3fv(this.addr,t)}function Mo(e,t){t=$a(t,this.size,4);e.uniform4fv(this.addr,t)}function To(e,t){t=$a(t,this.size,4);e.uniformMatrix2fv(this.addr,!1,t)}function So(e,t){t=$a(t,this.size,9);e.uniformMatrix3fv(this.addr,!1,t)}function Io(e,t){t=$a(t,this.size,16);e.uniformMatrix4fv(this.addr,!1,t)}function Do(e,t,n){var i=t.length,r=no(n,i);e.uniform1iv(this.addr,r);for(var a=0;a!==i;++a)n.safeSetTexture2D(t[a]||Va,r[a])}function Po(e,t,n){var i=t.length,r=no(n,i);e.uniform1iv(this.addr,r);for(var a=0;a!==i;++a)n.safeSetTextureCube(t[a]||Ja,r[a])}function ko(e,t,n){this.id=e,this.addr=n,this.cache=[],this.setValue=function(e){switch(e){case 5126:return io;case 35664:return ro;case 35665:return ao;case 35666:return oo;case 35674:return so;case 35675:return lo;case 35676:return uo;case 5124:case 35670:return mo;case 35667:case 35671:return vo;case 35668:case 35672:return go;case 35669:case 35673:return Ao;case 5125:return yo;case 35678:case 36198:case 36298:case 36306:case 35682:return co;case 35679:case 36299:case 36307:return po;case 35680:case 36300:case 36308:case 36293:return fo;case 36289:case 36303:case 36311:case 36292:return ho}}(t.type)}function Lo(e,t,n){this.id=e,this.addr=n,this.cache=[],this.size=t.size,this.setValue=function(e){switch(e){case 5126:return wo;case 35664:return Bo;case 35665:return _o;case 35666:return Mo;case 35674:return To;case 35675:return So;case 35676:return Io;case 5124:case 35670:return bo;case 35667:case 35671:return xo;case 35668:case 35672:return Eo;case 35669:case 35673:return Co;case 35678:case 36198:case 36298:case 36306:case 35682:return Do;case 35680:case 36300:case 36308:case 36293:return Po}}(t.type)}function Ro(e){this.id=e,this.seq=[],this.map={}}Lo.prototype.updateCache=function(e){var t=this.cache;e instanceof Float32Array&&t.length!==e.length&&(this.cache=new Float32Array(e.length)),to(t,e)},Ro.prototype.setValue=function(e,t,n){for(var i=this.seq,r=0,a=i.length;r!==a;++r){var o=i[r];o.setValue(e,t[o.id],n)}};var Fo=/(\w+)(\])?(\[|\.)?/g;function Oo(e,t){e.seq.push(t),e.map[t.id]=t}function No(e,t){this.seq=[],this.map={};for(var n=e.getProgramParameter(t,35718),i=0;i<n;++i){var r=e.getActiveUniform(t,i),a=e.getUniformLocation(t,r.name),o=(f=p=d=h=c=u=l=s=o=void 0,r),s=a,l=this,u=o.name,c=u.length;for(Fo.lastIndex=0;;){var h=Fo.exec(u),d=Fo.lastIndex,p=h[1],f="]"===h[2],h=h[3];if(f&&(p|=0),void 0===h||"["===h&&d+2===c){Oo(l,new(void 0===h?ko:Lo)(p,o,s));break}f=l.map[p];void 0===f&&Oo(l,f=new Ro(p)),l=f}}}function Go(e,t,n){t=e.createShader(t);return e.shaderSource(t,n),e.compileShader(t),t}No.prototype.setValue=function(e,t,n,i){t=this.map[t];void 0!==t&&t.setValue(e,n,i)},No.prototype.setOptional=function(e,t,n){t=t[n];void 0!==t&&this.setValue(e,n,t)},No.upload=function(e,t,n,i){for(var r=0,a=t.length;r!==a;++r){var o=t[r],s=n[o.id];!1!==s.needsUpdate&&o.setValue(e,s.value,i)}},No.seqWithValue=function(e,t){for(var n=[],i=0,r=e.length;i!==r;++i){var a=e[i];a.id in t&&n.push(a)}return n};var Uo=0;function zo(e){switch(e){case kn:return["Linear","( value )"];case Ln:return["sRGB","( value )"];case 3002:return["RGBE","( value )"];case 3004:return["RGBM","( value, 7.0 )"];case 3005:return["RGBM","( value, 16.0 )"];case 3006:return["RGBD","( value, 256.0 )"];case 3007:return["Gamma","( value, float( GAMMA_FACTOR ) )"];case 3003:return["LogLuv","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}function Ho(e,t,n){var i=e.getShaderParameter(t,35713),r=e.getShaderInfoLog(t).trim();return i&&""===r?"":"THREE.WebGLShader: gl.getShaderInfoLog() "+n+"\n"+r+function(e){for(var t=e.split("\n"),n=0;n<t.length;n++)t[n]=n+1+": "+t[n];return t.join("\n")}(e.getShaderSource(t))}function Qo(e,t){t=zo(t);return"vec4 "+e+"( vec4 value ) { return "+t[0]+"ToLinear"+t[1]+"; }"}function Vo(e){return""!==e}function jo(e,t){return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function Wo(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}var Jo=/^[ \t]*#include +<([\w\d./]+)>/gm;function qo(e){return e.replace(Jo,Xo)}function Xo(e,t){var n=_a[t];if(void 0===n)throw new Error("Can not resolve #include <"+t+">");return qo(n)}var Yo=/#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,Ko=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Zo(e){return e.replace(Ko,es).replace(Yo,$o)}function $o(e,t,n,i){return console.warn("WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead."),es(0,t,n,i)}function es(e,t,n,i){for(var r="",a=parseInt(t);a<parseInt(n);a++)r+=i.replace(/\[\s*i\s*\]/g,"[ "+a+" ]").replace(/UNROLLED_LOOP_INDEX/g,a);return r}function ts(e){var t="precision "+e.precision+" float;\nprecision "+e.precision+" int;";return"highp"===e.precision?t+="\n#define HIGH_PRECISION":"mediump"===e.precision?t+="\n#define MEDIUM_PRECISION":"lowp"===e.precision&&(t+="\n#define LOW_PRECISION"),t}function ns(e,t,n,i){var r,a,o,s,l,u=e.getContext(),c=n.defines,h=n.vertexShader,d=n.fragmentShader,p=(f="SHADOWMAP_TYPE_BASIC",(p=n).shadowMapType===de?f="SHADOWMAP_TYPE_PCF":2===p.shadowMapType?f="SHADOWMAP_TYPE_PCF_SOFT":p.shadowMapType===pe&&(f="SHADOWMAP_TYPE_VSM"),f),f=function(e){var t="ENVMAP_TYPE_CUBE";if(e.envMap)switch(e.envMapMode){case et:case tt:t="ENVMAP_TYPE_CUBE";break;case rt:case at:t="ENVMAP_TYPE_CUBE_UV"}return t}(n),m=function(e){var t="ENVMAP_MODE_REFLECTION";if(e.envMap)switch(e.envMapMode){case tt:case at:t="ENVMAP_MODE_REFRACTION"}return t}(n),v=function(e){var t="ENVMAP_BLENDING_NONE";if(e.envMap)switch(e.combine){case Ze:t="ENVMAP_BLENDING_MULTIPLY";break;case 1:t="ENVMAP_BLENDING_MIX";break;case 2:t="ENVMAP_BLENDING_ADD"}return t}(n),g=0<e.gammaFactor?e.gammaFactor:1,A=n.isWebGL2?"":[(A=n).extensionDerivatives||A.envMapCubeUV||A.bumpMap||A.tangentSpaceNormalMap||A.clearcoatNormalMap||A.flatShading||"physical"===A.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(A.extensionFragDepth||A.logarithmicDepthBuffer)&&A.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",A.extensionDrawBuffers&&A.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(A.extensionShaderTextureLOD||A.envMap)&&A.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Vo).join("\n"),c=function(e){var t,n=[];for(t in e){var i=e[t];!1!==i&&n.push("#define "+t+" "+i)}return n.join("\n")}(c),y=u.createProgram(),w=n.glslVersion?"#version "+n.glslVersion+"\n":"",f=(n.isRawShaderMaterial?(0<(r=[c].filter(Vo).join("\n")).length&&(r+="\n"),0<(a=[A,c].filter(Vo).join("\n")).length&&(a+="\n")):(r=[ts(n),"#define SHADER_NAME "+n.shaderName,c,n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+g,"#define MAX_BONES "+n.maxBones,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+m:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.displacementMap&&n.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.useVertexTexture?"#define BONE_TEXTURE":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+p:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(Vo).join("\n"),a=[A,ts(n),"#define SHADER_NAME "+n.shaderName,c,n.alphaTest?"#define ALPHATEST "+n.alphaTest+(n.alphaTest%1?"":".0"):"","#define GAMMA_FACTOR "+g,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+f:"",n.envMap?"#define "+m:"",n.envMap?"#define "+v:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMap&&n.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",n.normalMap&&n.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.sheen?"#define USE_SHEEN":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.vertexTangents?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor?"#define USE_COLOR":"",n.vertexUvs?"#define USE_UV":"",n.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+p:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.logarithmicDepthBuffer&&n.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"",(n.extensionShaderTextureLOD||n.envMap)&&n.rendererExtensionShaderTextureLod?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",n.toneMapping!==$e?"#define TONE_MAPPING":"",n.toneMapping!==$e?_a.tonemapping_pars_fragment:"",n.toneMapping!==$e?function(e,t){var n;switch(t){case 1:n="Linear";break;case 2:n="Reinhard";break;case 3:n="OptimizedCineon";break;case 4:n="ACESFilmic";break;case 5:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),n="Linear"}return"vec3 "+e+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",_a.encodings_pars_fragment,n.map?Qo("mapTexelToLinear",n.mapEncoding):"",n.matcap?Qo("matcapTexelToLinear",n.matcapEncoding):"",n.envMap?Qo("envMapTexelToLinear",n.envMapEncoding):"",n.emissiveMap?Qo("emissiveMapTexelToLinear",n.emissiveMapEncoding):"",n.lightMap?Qo("lightMapTexelToLinear",n.lightMapEncoding):"",(c="linearToOutputTexel",g=zo(g=n.outputEncoding),"vec4 "+c+"( vec4 value ) { return LinearTo"+g[0]+g[1]+"; }"),n.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(Vo).join("\n")),h=Wo(jo(qo(h),n),n),d=Wo(jo(qo(d),n),n),h=Zo(h),d=Zo(d),n.isWebGL2&&!0!==n.isRawShaderMaterial&&(w="#version 300 es\n",r=["#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+r,a=["#define varying in",n.glslVersion===Un?"":"out highp vec4 pc_fragColor;",n.glslVersion===Un?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+a),w+r+h),m=w+a+d,v=Go(u,35633,f),p=Go(u,35632,m);return u.attachShader(y,v),u.attachShader(y,p),void 0!==n.index0AttributeName?u.bindAttribLocation(y,0,n.index0AttributeName):!0===n.morphTargets&&u.bindAttribLocation(y,0,"position"),u.linkProgram(y),e.debug.checkShaderErrors&&(c=u.getProgramInfoLog(y).trim(),g=u.getShaderInfoLog(v).trim(),h=u.getShaderInfoLog(p).trim(),!(d=w=!0)===u.getProgramParameter(y,35714)?(w=!1,e=Ho(u,v,"vertex"),o=Ho(u,p,"fragment"),console.error("THREE.WebGLProgram: shader error: ",u.getError(),"35715",u.getProgramParameter(y,35715),"gl.getProgramInfoLog",c,e,o),o?console.log(m.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n")):console.log(f.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n"))):""!==c?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",c):""!==g&&""!==h||(d=!1),d)&&(this.diagnostics={runnable:w,programLog:c,vertexShader:{log:g,prefix:r},fragmentShader:{log:h,prefix:a}}),u.deleteShader(v),u.deleteShader(p),this.getUniforms=function(){return s=void 0===s?new No(u,y):s},this.getAttributes=function(){return l=void 0===l?function(e,t){for(var n={},i=e.getProgramParameter(t,35721),r=0;r<i;r++){var a=e.getActiveAttrib(t,r).name;n[a]=e.getAttribLocation(t,a)}return n}(u,y):l},this.destroy=function(){i.releaseStatesOfProgram(this),u.deleteProgram(y),this.program=void 0},this.name=n.shaderName,this.id=Uo++,this.cacheKey=t,this.usedTimes=1,this.program=y,this.vertexShader=v,this.fragmentShader=p,this}function is(d,p,f,m,o,v){var s=[],g=m.isWebGL2,A=m.logarithmicDepthBuffer,y=m.floatVertexTextures,w=m.maxVertexUniforms,b=m.vertexTextures,x=m.precision,E={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"},r=["precision","isWebGL2","supportsVertexTextures","outputEncoding","instancing","instancingColor","map","mapEncoding","matcap","matcapEncoding","envMap","envMapMode","envMapEncoding","envMapCubeUV","lightMap","lightMapEncoding","aoMap","emissiveMap","emissiveMapEncoding","bumpMap","normalMap","objectSpaceNormalMap","tangentSpaceNormalMap","clearcoatMap","clearcoatRoughnessMap","clearcoatNormalMap","displacementMap","specularMap","roughnessMap","metalnessMap","gradientMap","alphaMap","combine","vertexColors","vertexTangents","vertexUvs","uvsVertexOnly","fog","useFog","fogExp2","flatShading","sizeAttenuation","logarithmicDepthBuffer","skinning","maxBones","useVertexTexture","morphTargets","morphNormals","maxMorphTargets","maxMorphNormals","premultipliedAlpha","numDirLights","numPointLights","numSpotLights","numHemiLights","numRectAreaLights","numDirLightShadows","numPointLightShadows","numSpotLightShadows","shadowMapEnabled","shadowMapType","toneMapping","physicallyCorrectLights","alphaTest","doubleSided","flipSided","numClippingPlanes","numClipIntersection","depthPacking","dithering","sheen","transmissionMap"];function C(e){e=e&&e.isTexture?e.encoding:e&&e.isWebGLRenderTarget?(console.warn("THREE.WebGLPrograms.getTextureEncodingFromMap: don't use render targets as textures. Use their .texture property instead."),e.texture.encoding):kn;return e}return{getParameters:function(e,t,n,i,r){var a,o,s,l=i.fog,i=e.isMeshStandardMaterial?i.environment:null,i=p.get(e.envMap||i),u=E[e.type],c=r.isSkinnedMesh?(c=(c=r).skeleton.bones,y?1024:(a=Math.floor((w-20)/4),(a=Math.min(a,c.length))<c.length?(console.warn("THREE.WebGLRenderer: Skeleton has "+c.length+" bones. This GPU supports "+a+"."),0):a)):0,h=(null!==e.precision&&(x=m.getMaxPrecision(e.precision))!==e.precision&&console.warn("THREE.WebGLProgram.getParameters:",e.precision,"not supported, using",x,"instead."),s=(u?(o=(a=Ma[u]).vertexShader,a):(o=e.vertexShader,e)).fragmentShader,d.getRenderTarget());return{isWebGL2:g,shaderID:u,shaderName:e.type,vertexShader:o,fragmentShader:s,defines:e.defines,isRawShaderMaterial:!0===e.isRawShaderMaterial,glslVersion:e.glslVersion,precision:x,instancing:!0===r.isInstancedMesh,instancingColor:!0===r.isInstancedMesh&&null!==r.instanceColor,supportsVertexTextures:b,outputEncoding:null!==h?C(h.texture):d.outputEncoding,map:!!e.map,mapEncoding:C(e.map),matcap:!!e.matcap,matcapEncoding:C(e.matcap),envMap:!!i,envMapMode:i&&i.mapping,envMapEncoding:C(i),envMapCubeUV:!!i&&(i.mapping===rt||i.mapping===at),lightMap:!!e.lightMap,lightMapEncoding:C(e.lightMap),aoMap:!!e.aoMap,emissiveMap:!!e.emissiveMap,emissiveMapEncoding:C(e.emissiveMap),bumpMap:!!e.bumpMap,normalMap:!!e.normalMap,objectSpaceNormalMap:e.normalMapType===On,tangentSpaceNormalMap:e.normalMapType===Fn,clearcoatMap:!!e.clearcoatMap,clearcoatRoughnessMap:!!e.clearcoatRoughnessMap,clearcoatNormalMap:!!e.clearcoatNormalMap,displacementMap:!!e.displacementMap,roughnessMap:!!e.roughnessMap,metalnessMap:!!e.metalnessMap,specularMap:!!e.specularMap,alphaMap:!!e.alphaMap,gradientMap:!!e.gradientMap,sheen:!!e.sheen,transmissionMap:!!e.transmissionMap,combine:e.combine,vertexTangents:e.normalMap&&e.vertexTangents,vertexColors:e.vertexColors,vertexUvs:!!(e.map||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e.emissiveMap||e.roughnessMap||e.metalnessMap||e.clearcoatMap||e.clearcoatRoughnessMap||e.clearcoatNormalMap||e.displacementMap||e.transmissionMap),uvsVertexOnly:!(e.map||e.bumpMap||e.normalMap||e.specularMap||e.alphaMap||e.emissiveMap||e.roughnessMap||e.metalnessMap||e.clearcoatNormalMap||e.transmissionMap||!e.displacementMap),fog:!!l,useFog:e.fog,fogExp2:l&&l.isFogExp2,flatShading:e.flatShading,sizeAttenuation:e.sizeAttenuation,logarithmicDepthBuffer:A,skinning:e.skinning&&0<c,maxBones:c,useVertexTexture:y,morphTargets:e.morphTargets,morphNormals:e.morphNormals,maxMorphTargets:d.maxMorphTargets,maxMorphNormals:d.maxMorphNormals,numDirLights:t.directional.length,numPointLights:t.point.length,numSpotLights:t.spot.length,numRectAreaLights:t.rectArea.length,numHemiLights:t.hemi.length,numDirLightShadows:t.directionalShadowMap.length,numPointLightShadows:t.pointShadowMap.length,numSpotLightShadows:t.spotShadowMap.length,numClippingPlanes:v.numPlanes,numClipIntersection:v.numIntersection,dithering:e.dithering,shadowMapEnabled:d.shadowMap.enabled&&0<n.length,shadowMapType:d.shadowMap.type,toneMapping:e.toneMapped?d.toneMapping:$e,physicallyCorrectLights:d.physicallyCorrectLights,premultipliedAlpha:e.premultipliedAlpha,alphaTest:e.alphaTest,doubleSided:e.side===ve,flipSided:e.side===me,depthPacking:void 0!==e.depthPacking&&e.depthPacking,index0AttributeName:e.index0AttributeName,extensionDerivatives:e.extensions&&e.extensions.derivatives,extensionFragDepth:e.extensions&&e.extensions.fragDepth,extensionDrawBuffers:e.extensions&&e.extensions.drawBuffers,extensionShaderTextureLOD:e.extensions&&e.extensions.shaderTextureLOD,rendererExtensionFragDepth:g||f.has("EXT_frag_depth"),rendererExtensionDrawBuffers:g||f.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:g||f.has("EXT_shader_texture_lod"),customProgramCacheKey:e.customProgramCacheKey()}},getProgramCacheKey:function(e){var t=[];if(e.shaderID?t.push(e.shaderID):(t.push(e.fragmentShader),t.push(e.vertexShader)),void 0!==e.defines)for(var n in e.defines)t.push(n),t.push(e.defines[n]);if(!1===e.isRawShaderMaterial){for(var i=0;i<r.length;i++)t.push(e[r[i]]);t.push(d.outputEncoding),t.push(d.gammaFactor)}return t.push(e.customProgramCacheKey),t.join()},getUniforms:function(e){var t=E[e.type];return t?(t=Ma[t],ca.clone(t.uniforms)):e.uniforms},acquireProgram:function(e,t){for(var n,i=0,r=s.length;i<r;i++){var a=s[i];if(a.cacheKey===t){++(n=a).usedTimes;break}}return void 0===n&&(n=new ns(d,t,e,o),s.push(n)),n},releaseProgram:function(e){var t;0==--e.usedTimes&&(t=s.indexOf(e),s[t]=s[s.length-1],s.pop(),e.destroy())},programs:s}}function rs(){var i=new WeakMap;return{get:function(e){var t=i.get(e);return void 0===t&&i.set(e,t={}),t},remove:function(e){i.delete(e)},update:function(e,t,n){i.get(e)[t]=n},dispose:function(){i=new WeakMap}}}function as(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.program!==t.program?e.program.id-t.program.id:e.material.id!==t.material.id?e.material.id-t.material.id:e.z!==t.z?e.z-t.z:e.id-t.id}function os(e,t){return e.groupOrder!==t.groupOrder?e.groupOrder-t.groupOrder:e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id-t.id}function ss(l){var u=[],c=0,o=[],s=[],h={id:-1};function d(e,t,n,i,r,a){var o=u[c],s=l.get(n);return void 0===o?(o={id:e.id,object:e,geometry:t,material:n,program:s.program||h,groupOrder:i,renderOrder:e.renderOrder,z:r,group:a},u[c]=o):(o.id=e.id,o.object=e,o.geometry=t,o.material=n,o.program=s.program||h,o.groupOrder=i,o.renderOrder=e.renderOrder,o.z=r,o.group=a),c++,o}return{opaque:o,transparent:s,init:function(){c=0,s.length=o.length=0},push:function(e,t,n,i,r,a){e=d(e,t,n,i,r,a),(!0===n.transparent?s:o).push(e)},unshift:function(e,t,n,i,r,a){e=d(e,t,n,i,r,a),(!0===n.transparent?s:o).unshift(e)},finish:function(){for(var e=c,t=u.length;e<t;e++){var n=u[e];if(null===n.id)break;n.id=null,n.object=null,n.geometry=null,n.material=null,n.program=null,n.group=null}},sort:function(e,t){1<o.length&&o.sort(e||as),1<s.length&&s.sort(t||os)}}}function ls(r){var a=new WeakMap;return{get:function(e,t){var n,i=a.get(e);return void 0===i?(n=new ss(r),a.set(e,new WeakMap),a.get(e).set(t,n)):void 0===(n=i.get(t))&&(n=new ss(r),i.set(t,n)),n},dispose:function(){a=new WeakMap}}}function us(){var n={};return{get:function(e){if(void 0!==n[e.id])return n[e.id];var t;switch(e.type){case"DirectionalLight":t={direction:new Re,color:new Me};break;case"SpotLight":t={position:new Re,direction:new Re,color:new Me,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new Re,color:new Me,distance:0,decay:0};break;case"HemisphereLight":t={direction:new Re,skyColor:new Me,groundColor:new Me};break;case"RectAreaLight":t={color:new Me,position:new Re,halfWidth:new Re,halfHeight:new Re}}return n[e.id]=t}}}var cs=0;function hs(e,t){return(t.castShadow?1:0)-(e.castShadow?1:0)}function ds(_,M){for(var n,T=new us,S=(n={},{get:function(e){if(void 0!==n[e.id])return n[e.id];var t;switch(e.type){case"DirectionalLight":case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Le};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Le,shadowCameraNear:1,shadowCameraFar:1e3}}return n[e.id]=t}}),I={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]},e=0;e<9;e++)I.probe.push(new Re);var f=new Re,m=new _e,v=new _e;return{setup:function(e){for(var t=0,n=0,i=0,r=0;r<9;r++)I.probe[r].set(0,0,0);var a=0,o=0,s=0,l=0,u=0,c=0,h=0,d=0;e.sort(hs);for(var p=0,f=e.length;p<f;p++){var m,v,g,A,y=e[p],w=y.color,b=y.intensity,x=y.distance,E=y.shadow&&y.shadow.map?y.shadow.map.texture:null;if(y.isAmbientLight)t+=w.r*b,n+=w.g*b,i+=w.b*b;else if(y.isLightProbe)for(var C=0;C<9;C++)I.probe[C].addScaledVector(y.sh.coefficients[C],b);else y.isDirectionalLight?((g=T.get(y)).color.copy(y.color).multiplyScalar(y.intensity),y.castShadow&&(m=y.shadow,(v=S.get(y)).shadowBias=m.bias,v.shadowNormalBias=m.normalBias,v.shadowRadius=m.radius,v.shadowMapSize=m.mapSize,I.directionalShadow[a]=v,I.directionalShadowMap[a]=E,I.directionalShadowMatrix[a]=y.shadow.matrix,c++),I.directional[a]=g,a++):y.isSpotLight?((m=T.get(y)).position.setFromMatrixPosition(y.matrixWorld),m.color.copy(w).multiplyScalar(b),m.distance=x,m.coneCos=Math.cos(y.angle),m.penumbraCos=Math.cos(y.angle*(1-y.penumbra)),m.decay=y.decay,y.castShadow&&(v=y.shadow,(g=S.get(y)).shadowBias=v.bias,g.shadowNormalBias=v.normalBias,g.shadowRadius=v.radius,g.shadowMapSize=v.mapSize,I.spotShadow[s]=g,I.spotShadowMap[s]=E,I.spotShadowMatrix[s]=y.shadow.matrix,d++),I.spot[s]=m,s++):y.isRectAreaLight?((x=T.get(y)).color.copy(w).multiplyScalar(b),x.halfWidth.set(.5*y.width,0,0),x.halfHeight.set(0,.5*y.height,0),I.rectArea[l]=x,l++):y.isPointLight?((w=T.get(y)).color.copy(y.color).multiplyScalar(y.intensity),w.distance=y.distance,w.decay=y.decay,y.castShadow&&(x=y.shadow,(A=S.get(y)).shadowBias=x.bias,A.shadowNormalBias=x.normalBias,A.shadowRadius=x.radius,A.shadowMapSize=x.mapSize,A.shadowCameraNear=x.camera.near,A.shadowCameraFar=x.camera.far,I.pointShadow[o]=A,I.pointShadowMap[o]=E,I.pointShadowMatrix[o]=y.shadow.matrix,h++),I.point[o]=w,o++):y.isHemisphereLight&&((x=T.get(y)).skyColor.copy(y.color).multiplyScalar(b),x.groundColor.copy(y.groundColor).multiplyScalar(b),I.hemi[u]=x,u++)}0<l&&(M.isWebGL2||!0===_.has("OES_texture_float_linear")?(I.rectAreaLTC1=D.LTC_FLOAT_1,I.rectAreaLTC2=D.LTC_FLOAT_2):!0===_.has("OES_texture_half_float_linear")?(I.rectAreaLTC1=D.LTC_HALF_1,I.rectAreaLTC2=D.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),I.ambient[0]=t,I.ambient[1]=n,I.ambient[2]=i;var B=I.hash;B.directionalLength===a&&B.pointLength===o&&B.spotLength===s&&B.rectAreaLength===l&&B.hemiLength===u&&B.numDirectionalShadows===c&&B.numPointShadows===h&&B.numSpotShadows===d||(I.directional.length=a,I.spot.length=s,I.rectArea.length=l,I.point.length=o,I.hemi.length=u,I.directionalShadow.length=c,I.directionalShadowMap.length=c,I.pointShadow.length=h,I.pointShadowMap.length=h,I.spotShadow.length=d,I.spotShadowMap.length=d,I.directionalShadowMatrix.length=c,I.pointShadowMatrix.length=h,I.spotShadowMatrix.length=d,B.directionalLength=a,B.pointLength=o,B.spotLength=s,B.rectAreaLength=l,B.hemiLength=u,B.numDirectionalShadows=c,B.numPointShadows=h,B.numSpotShadows=d,I.version=cs++)},setupView:function(e,t){for(var n=0,i=0,r=0,a=0,o=0,s=t.matrixWorldInverse,l=0,u=e.length;l<u;l++){var c,h,d,p=e[l];p.isDirectionalLight?((c=I.directional[n]).direction.setFromMatrixPosition(p.matrixWorld),f.setFromMatrixPosition(p.target.matrixWorld),c.direction.sub(f),c.direction.transformDirection(s),n++):p.isSpotLight?((c=I.spot[r]).position.setFromMatrixPosition(p.matrixWorld),c.position.applyMatrix4(s),c.direction.setFromMatrixPosition(p.matrixWorld),f.setFromMatrixPosition(p.target.matrixWorld),c.direction.sub(f),c.direction.transformDirection(s),r++):p.isRectAreaLight?((h=I.rectArea[a]).position.setFromMatrixPosition(p.matrixWorld),h.position.applyMatrix4(s),v.identity(),m.copy(p.matrixWorld),m.premultiply(s),v.extractRotation(m),h.halfWidth.set(.5*p.width,0,0),h.halfHeight.set(0,.5*p.height,0),h.halfWidth.applyMatrix4(v),h.halfHeight.applyMatrix4(v),a++):p.isPointLight?((h=I.point[i]).position.setFromMatrixPosition(p.matrixWorld),h.position.applyMatrix4(s),i++):p.isHemisphereLight&&((d=I.hemi[o]).direction.setFromMatrixPosition(p.matrixWorld),d.direction.transformDirection(s),d.direction.normalize(),o++)}},state:I}}function ps(e,t){var n=new ds(e,t),i=[],r=[];return{init:function(){i.length=0,r.length=0},state:{lightsArray:i,shadowsArray:r,lights:n},setupLights:function(){n.setup(i)},setupLightsView:function(e){n.setupView(i,e)},pushLight:function(e){i.push(e)},pushShadow:function(e){r.push(e)}}}function fs(i,r){var a=new WeakMap;return{get:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return!1===a.has(e)?(t=new ps(i,r),a.set(e,[]),a.get(e).push(t)):n>=a.get(e).length?(t=new ps(i,r),a.get(e).push(t)):t=a.get(e)[n],t},dispose:function(){a=new WeakMap}}}function ms(e){yr.call(this),this.type="MeshDepthMaterial",this.depthPacking=3200,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}function vs(e){yr.call(this),this.type="MeshDistanceMaterial",this.referencePosition=new Re,this.nearDistance=1,this.farDistance=1e3,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}((ms.prototype=Object.create(yr.prototype)).constructor=ms).prototype.isMeshDepthMaterial=!0,ms.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.depthPacking=e.depthPacking,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this},((vs.prototype=Object.create(yr.prototype)).constructor=vs).prototype.isMeshDistanceMaterial=!0,vs.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this};var gs="uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include <packing>\nvoid main() {\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\n\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean * HALF_SAMPLE_RATE;\n\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}",As="void main() {\n\tgl_Position = vec4( position, 1.0 );\n}";function ys(g,A,y){var w=new xa,b=new Le,x=new Le,E=new Kn,r=[],a=[],h={},d={0:me,1:fe,2:ve},C=new pa({defines:{SAMPLE_RATE:.25,HALF_SAMPLE_RATE:1/8},uniforms:{shadow_pass:{value:null},resolution:{value:new Le},radius:{value:4}},vertexShader:As,fragmentShader:gs}),B=C.clone(),e=(B.defines.HORIZONTAL_PASS=1,new j),_=(e.setAttribute("position",new Q(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3)),new Z(e,C)),M=this;function p(e,t,n){var n=e<<0|t<<1|n<<2,i=r[n];return void 0===i&&(i=new ms({depthPacking:Rn,morphTargets:e,skinning:t}),r[n]=i),i}function f(e,t,n){var n=e<<0|t<<1|n<<2,i=a[n];return void 0===i&&(i=new vs({morphTargets:e,skinning:t}),a[n]=i),i}function T(e,t,n,i,r,a,o){var s,l=null,u=p,c=e.customDepthMaterial;return!0===i.isPointLight&&(u=f,c=e.customDistanceMaterial),l=void 0===c?(!(s=!1)===n.morphTargets&&(s=t.morphAttributes&&t.morphAttributes.position&&0<t.morphAttributes.position.length),!(t=!1)===e.isSkinnedMesh&&(!0===n.skinning?t=!0:console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",e)),u(s,t,!0===e.isInstancedMesh)):c,g.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length&&(u=l.uuid,s=n.uuid,void 0===(t=h[u])&&(h[u]=t={}),void 0===(e=t[s])&&(e=l.clone(),t[s]=e),l=e),l.visible=n.visible,l.wireframe=n.wireframe,l.side=o===pe?null!==n.shadowSide?n.shadowSide:n.side:null!==n.shadowSide?n.shadowSide:d[n.side],l.clipShadows=n.clipShadows,l.clippingPlanes=n.clippingPlanes,l.clipIntersection=n.clipIntersection,l.wireframeLinewidth=n.wireframeLinewidth,l.linewidth=n.linewidth,!0===i.isPointLight&&!0===l.isMeshDistanceMaterial&&(l.referencePosition.setFromMatrixPosition(i.matrixWorld),l.nearDistance=r,l.farDistance=a),l}this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=de,this.render=function(e,t,n){if(!1!==M.enabled&&(!1!==M.autoUpdate||!1!==M.needsUpdate)&&0!==e.length){var i=g.getRenderTarget(),r=g.getActiveCubeFace(),a=g.getActiveMipmapLevel(),o=g.state;o.setBlending(ge),o.buffers.color.setClear(1,1,1,1),o.buffers.depth.setTest(!0),o.setScissorTest(!1);for(var s,l,u=0,c=e.length;u<c;u++){var h=e[u],d=h.shadow;if(void 0===d)console.warn("THREE.WebGLShadowMap:",h,"has no shadow.");else if(!1!==d.autoUpdate||!1!==d.needsUpdate){b.copy(d.mapSize);for(var p=d.getFrameExtents(),f=(b.multiply(p),x.copy(d.mapSize),(b.x>y||b.y>y)&&(b.x>y&&(x.x=Math.floor(y/p.x),b.x=x.x*p.x,d.mapSize.x=x.x),b.y>y)&&(x.y=Math.floor(y/p.y),b.y=x.y*p.y,d.mapSize.y=x.y),null!==d.map||d.isPointLightShadow||this.type!==pe||(d.map=new Zn(b.x,b.y,p={minFilter:U,magFilter:U,format:St}),d.map.texture.name=h.name+".shadowMap",d.mapPass=new Zn(b.x,b.y,p),d.camera.updateProjectionMatrix()),null===d.map&&(d.map=new Zn(b.x,b.y,{minFilter:ut,magFilter:ut,format:St}),d.map.texture.name=h.name+".shadowMap",d.camera.updateProjectionMatrix()),g.setRenderTarget(d.map),g.clear(),d.getViewportCount()),m=0;m<f;m++){var v=d.getViewport(m);E.set(x.x*v.x,x.y*v.y,x.x*v.z,x.y*v.w),o.viewport(E),d.updateMatrices(h,m),w=d.getFrustum(),!function e(t,n,i,r,a){if(!1===t.visible)return;var o=t.layers.test(n.layers);if(o&&(t.isMesh||t.isLine||t.isPoints)&&(t.castShadow||t.receiveShadow&&a===pe)&&(!t.frustumCulled||w.intersectsObject(t))){t.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,t.matrixWorld);var s=A.update(t),l=t.material;if(Array.isArray(l))for(var u=s.groups,c=0,h=u.length;c<h;c++){var d=u[c],p=l[d.materialIndex];p&&p.visible&&(p=T(t,s,p,r,i.near,i.far,a),g.renderBufferDirect(i,null,s,p,t,d))}else l.visible&&(o=T(t,s,l,r,i.near,i.far,a),g.renderBufferDirect(i,null,s,o,t,null))}var f=t.children;for(var m=0,v=f.length;m<v;m++)e(f[m],n,i,r,a)}(t,n,d.camera,h,this.type)}d.isPointLightShadow||this.type!==pe||(p=d,s=n,l=void 0,l=A.update(_),C.uniforms.shadow_pass.value=p.map.texture,C.uniforms.resolution.value=p.mapSize,C.uniforms.radius.value=p.radius,g.setRenderTarget(p.mapPass),g.clear(),g.renderBufferDirect(s,null,l,C,_,null),B.uniforms.shadow_pass.value=p.mapPass.texture,B.uniforms.resolution.value=p.mapSize,B.uniforms.radius.value=p.radius,g.setRenderTarget(p.map),g.clear(),g.renderBufferDirect(s,null,l,B,_,null)),d.needsUpdate=!1}}M.needsUpdate=!1,g.setRenderTarget(i,r,a)}}}function ws(c,F,e){e=e.isWebGL2;var i=new function(){var t=!1,a=new Kn,n=null,o=new Kn(0,0,0,0);return{setMask:function(e){n===e||t||(c.colorMask(e,e,e,e),n=e)},setLocked:function(e){t=e},setClear:function(e,t,n,i,r){!0===r&&(e*=i,t*=i,n*=i),a.set(e,t,n,i),!1===o.equals(a)&&(c.clearColor(e,t,n,i),o.copy(a))},reset:function(){t=!1,n=null,o.set(-1,0,0,0)}}},r=new function(){var t=!1,n=null,i=null,r=null;return{setTest:function(e){(e?I:D)(2929)},setMask:function(e){n===e||t||(c.depthMask(e),n=e)},setFunc:function(e){if(i!==e){if(e)switch(e){case Ve:c.depthFunc(512);break;case je:c.depthFunc(519);break;case We:c.depthFunc(513);break;case Je:c.depthFunc(515);break;case qe:c.depthFunc(514);break;case Xe:c.depthFunc(518);break;case Ye:c.depthFunc(516);break;case Ke:c.depthFunc(517);break;default:c.depthFunc(515)}else c.depthFunc(515);i=e}},setLocked:function(e){t=e},setClear:function(e){r!==e&&(c.clearDepth(e),r=e)},reset:function(){t=!1,r=i=n=null}}},a=new function(){var t=!1,n=null,i=null,r=null,a=null,o=null,s=null,l=null,u=null;return{setTest:function(e){t||(e?I:D)(2960)},setMask:function(e){n===e||t||(c.stencilMask(e),n=e)},setFunc:function(e,t,n){i===e&&r===t&&a===n||(c.stencilFunc(e,t,n),i=e,r=t,a=n)},setOp:function(e,t,n){o===e&&s===t&&l===n||(c.stencilOp(e,t,n),o=e,s=t,l=n)},setLocked:function(e){t=e},setClear:function(e){u!==e&&(c.clearStencil(e),u=e)},reset:function(){t=!1,u=l=s=o=a=r=i=n=null}}},t={},n=null,l=null,u=null,h=null,d=null,p=null,f=null,m=null,v=null,g=!1,o=null,s=null,A=null,y=null,w=null,O=c.getParameter(35661),b=!1,x=0,E=c.getParameter(7938),C=(-1!==E.indexOf("WebGL")?(x=parseFloat(/^WebGL (\d)/.exec(E)[1]),b=1<=x):-1!==E.indexOf("OpenGL ES")&&(x=parseFloat(/^OpenGL ES (\d)/.exec(E)[1]),b=2<=x),null),B={},_=new Kn,M=new Kn;function T(e,t,n){var i=new Uint8Array(4),r=c.createTexture();c.bindTexture(e,r),c.texParameteri(e,10241,9728),c.texParameteri(e,10240,9728);for(var a=0;a<n;a++)c.texImage2D(t+a,0,6408,1,1,0,6408,5121,i);return r}var S={};function I(e){!0!==t[e]&&(c.enable(e),t[e]=!0)}function D(e){!1!==t[e]&&(c.disable(e),t[e]=!1)}S[3553]=T(3553,3553,1),S[34067]=T(34067,34069,6),i.setClear(0,0,0,1),r.setClear(1),a.setClear(0),I(2929),r.setFunc(Je),R(!1),N(ce),I(2884),L(ge);z(E={},Ee,32774),z(E,Ce,32778),z(E,Te,32779);var P=E,k=(e?(P[Se]=32775,P[Ie]=32776):null!==(x=F.get("EXT_blend_minmax"))&&(P[Se]=x.MIN_EXT,P[Ie]=x.MAX_EXT),z(E={},De,0),z(E,Pe,1),z(E,ke,768),z(E,Oe,770),z(E,Qe,776),z(E,ze,774),z(E,Ge,772),z(E,Fe,769),z(E,Ne,771),z(E,He,775),z(E,Ue,773),E);function L(e,t,n,i,r,a,o,s){if(e===ge)l&&(D(3042),l=!1);else if(l||(I(3042),l=!0),e!==xe){if(e!==u||s!==g){if(h===Ee&&f===Ee||(c.blendEquation(32774),f=h=Ee),s)switch(e){case Ae:c.blendFuncSeparate(1,771,1,771);break;case ye:c.blendFunc(1,1);break;case we:c.blendFuncSeparate(0,0,769,771);break;case be:c.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",e)}else switch(e){case Ae:c.blendFuncSeparate(770,771,1,771);break;case ye:c.blendFunc(770,1);break;case we:c.blendFunc(0,769);break;case be:c.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",e)}v=m=p=d=null,u=e,g=s}}else r=r||t,a=a||n,o=o||i,t===h&&r===f||(c.blendEquationSeparate(P[t],P[r]),h=t,f=r),n===d&&i===p&&a===m&&o===v||(c.blendFuncSeparate(k[n],k[i],k[a],k[o]),d=n,p=i,m=a,v=o),u=e,g=null}function R(e){o!==e&&(e?c.frontFace(2304):c.frontFace(2305),o=e)}function N(e){e!==ue?(I(2884),e!==s&&(e===ce?c.cullFace(1029):e===he?c.cullFace(1028):c.cullFace(1032))):D(2884),s=e}function G(e,t,n){e?(I(32823),y===t&&w===n||(c.polygonOffset(t,n),y=t,w=n)):D(32823)}function U(e){C!==(e=void 0===e?33984+O-1:e)&&(c.activeTexture(e),C=e)}return{buffers:{color:i,depth:r,stencil:a},enable:I,disable:D,useProgram:function(e){return n!==e&&(c.useProgram(e),n=e,!0)},setBlending:L,setMaterial:function(e,t){(e.side===ve?D:I)(2884);var n=e.side===me,t=(R(n=t?!n:n),e.blending===Ae&&!1===e.transparent?L(ge):L(e.blending,e.blendEquation,e.blendSrc,e.blendDst,e.blendEquationAlpha,e.blendSrcAlpha,e.blendDstAlpha,e.premultipliedAlpha),r.setFunc(e.depthFunc),r.setTest(e.depthTest),r.setMask(e.depthWrite),i.setMask(e.colorWrite),e.stencilWrite);a.setTest(t),t&&(a.setMask(e.stencilWriteMask),a.setFunc(e.stencilFunc,e.stencilRef,e.stencilFuncMask),a.setOp(e.stencilFail,e.stencilZFail,e.stencilZPass)),G(e.polygonOffset,e.polygonOffsetFactor,e.polygonOffsetUnits)},setFlipSided:R,setCullFace:N,setLineWidth:function(e){e!==A&&(b&&c.lineWidth(e),A=e)},setPolygonOffset:G,setScissorTest:function(e){(e?I:D)(3089)},activeTexture:U,bindTexture:function(e,t){null===C&&U();var n=B[C];void 0===n&&(B[C]=n={type:void 0,texture:void 0}),n.type===e&&n.texture===t||(c.bindTexture(e,t||S[e]),n.type=e,n.texture=t)},unbindTexture:function(){var e=B[C];void 0!==e&&void 0!==e.type&&(c.bindTexture(e.type,null),e.type=void 0,e.texture=void 0)},compressedTexImage2D:function(){try{c.compressedTexImage2D.apply(c,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage2D:function(){try{c.texImage2D.apply(c,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},texImage3D:function(){try{c.texImage3D.apply(c,arguments)}catch(e){console.error("THREE.WebGLState:",e)}},scissor:function(e){!1===_.equals(e)&&(c.scissor(e.x,e.y,e.z,e.w),_.copy(e))},viewport:function(e){!1===M.equals(e)&&(c.viewport(e.x,e.y,e.z,e.w),M.copy(e))},reset:function(){t={},g=!(B={}),w=y=A=s=o=v=m=f=p=d=h=u=l=n=C=null,i.reset(),r.reset(),a.reset()}}}function bs(x,i,E,C,r,B,u){var e,a,_=r.isWebGL2,t=r.maxTextures,M=r.maxCubemapSize,F=r.maxTextureSize,O=r.maxSamples,o=new WeakMap,n=!1;try{n="undefined"!=typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function s(e,t){return n?new OffscreenCanvas(e,t):document.createElementNS("http://www.w3.org/1999/xhtml","canvas")}function T(e,t,n,i){var r=1;return(r=e.width>i||e.height>i?i/Math.max(e.width,e.height):r)<1||!0===t?"undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap?(t=(i=t?Be.floorPowerOfTwo:Math.floor)(r*e.width),i=i(r*e.height),void 0===a&&(a=s(t,i)),(r=n?s(t,i):a).width=t,r.height=i,r.getContext("2d").drawImage(e,0,0,t,i),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+t+"x"+i+")."),r):("data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e):e}function S(e){return Be.isPowerOfTwo(e.width)&&Be.isPowerOfTwo(e.height)}function I(e,t){return e.generateMipmaps&&t&&e.minFilter!==ut&&e.minFilter!==U}function D(e,t,n,i){x.generateMipmap(e),C.get(t).__maxMipLevel=Math.log(Math.max(n,i))*Math.LOG2E}function P(e,t,n){if(!1===_)return t;if(null!==e){if(void 0!==x[e])return x[e];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+e+"'")}e=t;return 6403===t&&(5126===n&&(e=33326),5131===n&&(e=33325),5121===n)&&(e=33321),6407===t&&(5126===n&&(e=34837),5131===n&&(e=34843),5121===n)&&(e=32849),33325!==(e=6408===t&&(5126===n&&(e=34836),5131===n&&(e=34842),5121===n)?32856:e)&&33326!==e&&34842!==e&&34836!==e||i.get("EXT_color_buffer_float"),e}function l(e){return e===ut||e===ct||e===ht?9728:9729}function c(e){var t,n,e=e.target;e.removeEventListener("dispose",c),t=e,void 0!==(n=C.get(t)).__webglInit&&(x.deleteTexture(n.__webglTexture),C.remove(t)),e.isVideoTexture&&o.delete(e),u.memory.textures--}function h(e){var e=e.target,t=(e.removeEventListener("dispose",h),C.get(e)),n=C.get(e.texture);if(e){if(void 0!==n.__webglTexture&&x.deleteTexture(n.__webglTexture),e.depthTexture&&e.depthTexture.dispose(),e.isWebGLCubeRenderTarget)for(var i=0;i<6;i++)x.deleteFramebuffer(t.__webglFramebuffer[i]),t.__webglDepthbuffer&&x.deleteRenderbuffer(t.__webglDepthbuffer[i]);else x.deleteFramebuffer(t.__webglFramebuffer),t.__webglDepthbuffer&&x.deleteRenderbuffer(t.__webglDepthbuffer),t.__webglMultisampledFramebuffer&&x.deleteFramebuffer(t.__webglMultisampledFramebuffer),t.__webglColorRenderbuffer&&x.deleteRenderbuffer(t.__webglColorRenderbuffer),t.__webglDepthRenderbuffer&&x.deleteRenderbuffer(t.__webglDepthRenderbuffer);C.remove(e.texture),C.remove(e)}u.memory.textures--}var d=0;function p(e,t){var n,i=C.get(e);if(e.isVideoTexture&&(n=e,r=u.render.frame,o.get(n)!==r)&&(o.set(n,r),n.update()),0<e.version&&i.__version!==e.version){var r=e.image;if(void 0===r)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else{if(!1!==r.complete)return void g(i,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}E.activeTexture(33984+t),E.bindTexture(3553,i.__webglTexture)}function f(e,t){var n=C.get(e);if(0<e.version&&n.__version!==e.version){var i=n,r=e,e=t;if(6===r.image.length){L(i,r),E.activeTexture(33984+e),E.bindTexture(34067,i.__webglTexture),x.pixelStorei(37440,r.flipY);for(var a=r&&(r.isCompressedTexture||r.image[0].isCompressedTexture),o=r.image[0]&&r.image[0].isDataTexture,s=[],l=0;l<6;l++)s[l]=a||o?o?r.image[l].image:r.image[l]:T(r.image[l],!1,!0,M);var u,e=s[0],c=S(e)||_,h=B.convert(r.format),d=B.convert(r.type),p=P(r.internalFormat,h,d);if(k(34067,r,c),a){for(var f=0;f<6;f++){u=s[f].mipmaps;for(var m=0;m<u.length;m++){var v=u[m];r.format!==St&&r.format!==Tt?null!==h?E.compressedTexImage2D(34069+f,m,p,v.width,v.height,0,v.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):E.texImage2D(34069+f,m,p,v.width,v.height,0,h,d,v.data)}}i.__maxMipLevel=u.length-1}else{u=r.mipmaps;for(var g=0;g<6;g++)if(o){E.texImage2D(34069+g,0,p,s[g].width,s[g].height,0,h,d,s[g].data);for(var A=0;A<u.length;A++){var y=u[A].image[g].image;E.texImage2D(34069+g,A+1,p,y.width,y.height,0,h,d,y.data)}}else{E.texImage2D(34069+g,0,p,h,d,s[g]);for(var w=0;w<u.length;w++){var b=u[w];E.texImage2D(34069+g,w+1,p,h,d,b.image[g])}}i.__maxMipLevel=u.length}I(r,c)&&D(34067,r,e.width,e.height),i.__version=r.version,r.onUpdate&&r.onUpdate(r)}}else E.activeTexture(33984+t),E.bindTexture(34067,n.__webglTexture)}z(e={},ot,10497),z(e,st,33071),z(e,lt,33648);var m=e,v=(z(e={},ut,9728),z(e,ct,9984),z(e,ht,9986),z(e,U,9729),z(e,dt,9985),z(e,pt,9987),e);function k(e,t,n){n?(x.texParameteri(e,10242,m[t.wrapS]),x.texParameteri(e,10243,m[t.wrapT]),32879!==e&&35866!==e||x.texParameteri(e,32882,m[t.wrapR]),x.texParameteri(e,10240,v[t.magFilter]),x.texParameteri(e,10241,v[t.minFilter])):(x.texParameteri(e,10242,33071),x.texParameteri(e,10243,33071),32879!==e&&35866!==e||x.texParameteri(e,32882,33071),t.wrapS===st&&t.wrapT===st||console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),x.texParameteri(e,10240,l(t.magFilter)),x.texParameteri(e,10241,l(t.minFilter)),t.minFilter!==ut&&t.minFilter!==U&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter."));n=i.get("EXT_texture_filter_anisotropic");!n||t.type===bt&&null===i.get("OES_texture_float_linear")||t.type===xt&&null===(_||i.get("OES_texture_half_float_linear"))||(1<t.anisotropy||C.get(t).__currentAnisotropy)&&(x.texParameterf(e,n.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(t.anisotropy,r.getMaxAnisotropy())),C.get(t).__currentAnisotropy=t.anisotropy)}function L(e,t){void 0===e.__webglInit&&(e.__webglInit=!0,t.addEventListener("dispose",c),e.__webglTexture=x.createTexture(),u.memory.textures++)}function g(e,t,n){var i,r=3553,n=(t.isDataTexture2DArray&&(r=35866),t.isDataTexture3D&&(r=32879),L(e,t),E.activeTexture(33984+n),E.bindTexture(r,e.__webglTexture),x.pixelStorei(37440,t.flipY),x.pixelStorei(37441,t.premultiplyAlpha),x.pixelStorei(3317,t.unpackAlignment),n=t,!_&&(n.wrapS!==st||n.wrapT!==st||n.minFilter!==ut&&n.minFilter!==U)&&!1===S(t.image)),n=T(t.image,n,!1,F),a=S(n)||_,o=B.convert(t.format),s=B.convert(t.type),l=P(t.internalFormat,o,s),u=(k(r,t,a),t.mipmaps);if(t.isDepthTexture)l=6402,_?l=t.type===bt?36012:t.type===wt?33190:t.type===_t?35056:33189:t.type===bt&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),t.format===kt&&6402===l&&t.type!==At&&t.type!==wt&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),t.type=At,s=B.convert(t.type)),t.format===Lt&&6402===l&&(l=34041,t.type!==_t)&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),t.type=_t,s=B.convert(t.type)),E.texImage2D(3553,0,l,n.width,n.height,0,o,s,null);else if(t.isDataTexture)if(0<u.length&&a){for(var c=0,h=u.length;c<h;c++)i=u[c],E.texImage2D(3553,c,l,i.width,i.height,0,o,s,i.data);t.generateMipmaps=!1,e.__maxMipLevel=u.length-1}else E.texImage2D(3553,0,l,n.width,n.height,0,o,s,n.data),e.__maxMipLevel=0;else if(t.isCompressedTexture){for(var d=0,p=u.length;d<p;d++)i=u[d],t.format!==St&&t.format!==Tt?null!==o?E.compressedTexImage2D(3553,d,l,i.width,i.height,0,i.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):E.texImage2D(3553,d,l,i.width,i.height,0,o,s,i.data);e.__maxMipLevel=u.length-1}else if(t.isDataTexture2DArray)E.texImage3D(35866,0,l,n.width,n.height,n.depth,0,o,s,n.data),e.__maxMipLevel=0;else if(t.isDataTexture3D)E.texImage3D(32879,0,l,n.width,n.height,n.depth,0,o,s,n.data),e.__maxMipLevel=0;else if(0<u.length&&a){for(var f=0,m=u.length;f<m;f++)i=u[f],E.texImage2D(3553,f,l,o,s,i);t.generateMipmaps=!1,e.__maxMipLevel=u.length-1}else E.texImage2D(3553,0,l,o,s,n),e.__maxMipLevel=0;I(t,a)&&D(r,t,n.width,n.height),e.__version=t.version,t.onUpdate&&t.onUpdate(t)}function A(e,t,n,i){var r=B.convert(t.texture.format),a=B.convert(t.texture.type),o=P(t.texture.internalFormat,r,a);E.texImage2D(i,0,o,t.width,t.height,0,r,a,null),x.bindFramebuffer(36160,e),x.framebufferTexture2D(36160,n,i,C.get(t.texture).__webglTexture,0),x.bindFramebuffer(36160,null)}function y(e,t,n){var i,r;x.bindRenderbuffer(36161,e),t.depthBuffer&&!t.stencilBuffer?(r=33189,n?((i=t.depthTexture)&&i.isDepthTexture&&(i.type===bt?r=36012:i.type===wt&&(r=33190)),i=w(t),x.renderbufferStorageMultisample(36161,i,r,t.width,t.height)):x.renderbufferStorage(36161,r,t.width,t.height),x.framebufferRenderbuffer(36160,36096,36161,e)):t.depthBuffer&&t.stencilBuffer?(n?(i=w(t),x.renderbufferStorageMultisample(36161,i,35056,t.width,t.height)):x.renderbufferStorage(36161,34041,t.width,t.height),x.framebufferRenderbuffer(36160,33306,36161,e)):(r=B.convert(t.texture.format),i=B.convert(t.texture.type),e=P(t.texture.internalFormat,r,i),n?(r=w(t),x.renderbufferStorageMultisample(36161,r,e,t.width,t.height)):x.renderbufferStorage(36161,e,t.width,t.height)),x.bindRenderbuffer(36161,null)}function N(e){var t=C.get(e),n=!0===e.isWebGLCubeRenderTarget;if(e.depthTexture){if(n)throw new Error("target.depthTexture not supported in Cube render targets");var i=t.__webglFramebuffer,r=e;if(r&&r.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(x.bindFramebuffer(36160,i),!r.depthTexture||!r.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");if(C.get(r.depthTexture).__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),p(r.depthTexture,0),i=C.get(r.depthTexture).__webglTexture,r.depthTexture.format===kt)x.framebufferTexture2D(36160,36096,3553,i,0);else{if(r.depthTexture.format!==Lt)throw new Error("Unknown depthTexture format");x.framebufferTexture2D(36160,33306,3553,i,0)}}else if(n){t.__webglDepthbuffer=[];for(var a=0;a<6;a++)x.bindFramebuffer(36160,t.__webglFramebuffer[a]),t.__webglDepthbuffer[a]=x.createRenderbuffer(),y(t.__webglDepthbuffer[a],e,!1)}else x.bindFramebuffer(36160,t.__webglFramebuffer),t.__webglDepthbuffer=x.createRenderbuffer(),y(t.__webglDepthbuffer,e,!1);x.bindFramebuffer(36160,null)}function w(e){return _&&e.isWebGLMultisampleRenderTarget?Math.min(O,e.samples):0}var b=!1,R=!1;this.allocateTextureUnit=function(){var e=d;return t<=e&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+t),d+=1,e},this.resetTextureUnits=function(){d=0},this.setTexture2D=p,this.setTexture2DArray=function(e,t){var n=C.get(e);0<e.version&&n.__version!==e.version?g(n,e,t):(E.activeTexture(33984+t),E.bindTexture(35866,n.__webglTexture))},this.setTexture3D=function(e,t){var n=C.get(e);0<e.version&&n.__version!==e.version?g(n,e,t):(E.activeTexture(33984+t),E.bindTexture(32879,n.__webglTexture))},this.setTextureCube=f,this.setupRenderTarget=function(e){var t,n=C.get(e),i=C.get(e.texture),r=(e.addEventListener("dispose",h),i.__webglTexture=x.createTexture(),u.memory.textures++,!0===e.isWebGLCubeRenderTarget),a=!0===e.isWebGLMultisampleRenderTarget,o=S(e)||_;if(!_||e.texture.format!==Tt||e.texture.type!==bt&&e.texture.type!==xt||(e.texture.format=St,console.warn("THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.")),r){n.__webglFramebuffer=[];for(var s=0;s<6;s++)n.__webglFramebuffer[s]=x.createFramebuffer()}else n.__webglFramebuffer=x.createFramebuffer(),a&&(_?(n.__webglMultisampledFramebuffer=x.createFramebuffer(),n.__webglColorRenderbuffer=x.createRenderbuffer(),x.bindRenderbuffer(36161,n.__webglColorRenderbuffer),a=B.convert(e.texture.format),t=B.convert(e.texture.type),a=P(e.texture.internalFormat,a,t),t=w(e),x.renderbufferStorageMultisample(36161,t,a,e.width,e.height),x.bindFramebuffer(36160,n.__webglMultisampledFramebuffer),x.framebufferRenderbuffer(36160,36064,36161,n.__webglColorRenderbuffer),x.bindRenderbuffer(36161,null),e.depthBuffer&&(n.__webglDepthRenderbuffer=x.createRenderbuffer(),y(n.__webglDepthRenderbuffer,e,!0)),x.bindFramebuffer(36160,null)):console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2."));if(r){E.bindTexture(34067,i.__webglTexture),k(34067,e.texture,o);for(var l=0;l<6;l++)A(n.__webglFramebuffer[l],e,36064,34069+l);I(e.texture,o)&&D(34067,e.texture,e.width,e.height),E.bindTexture(34067,null)}else E.bindTexture(3553,i.__webglTexture),k(3553,e.texture,o),A(n.__webglFramebuffer,e,36064,3553),I(e.texture,o)&&D(3553,e.texture,e.width,e.height),E.bindTexture(3553,null);e.depthBuffer&&N(e)},this.updateRenderTargetMipmap=function(e){var t,n,i=e.texture;I(i,S(e)||_)&&(t=e.isWebGLCubeRenderTarget?34067:3553,n=C.get(i).__webglTexture,E.bindTexture(t,n),D(t,i,e.width,e.height),E.bindTexture(t,null))},this.updateMultisampleRenderTarget=function(e){var t,n,i,r;e.isWebGLMultisampleRenderTarget&&(_?(t=C.get(e),x.bindFramebuffer(36008,t.__webglMultisampledFramebuffer),x.bindFramebuffer(36009,t.__webglFramebuffer),n=e.width,i=e.height,r=16384,e.depthBuffer&&(r|=256),e.stencilBuffer&&(r|=1024),x.blitFramebuffer(0,0,n,i,0,0,n,i,r,9728),x.bindFramebuffer(36160,t.__webglMultisampledFramebuffer)):console.warn("THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2."))},this.safeSetTexture2D=function(e,t){e&&e.isWebGLRenderTarget&&(!1===b&&(console.warn("THREE.WebGLTextures.safeSetTexture2D: don't use render targets as textures. Use their .texture property instead."),b=!0),e=e.texture),p(e,t)},this.safeSetTextureCube=function(e,t){e&&e.isWebGLCubeRenderTarget&&(!1===R&&(console.warn("THREE.WebGLTextures.safeSetTextureCube: don't use cube render targets as textures. Use their .texture property instead."),R=!0),e=e.texture),f(e,t)}}function xs(e,n,t){var i=t.isWebGL2;return{convert:function(e){var t;if(e===mt)return 5121;if(e===Et)return 32819;if(e===Ct)return 32820;if(e===Bt)return 33635;if(e===vt)return 5120;if(e===gt)return 5122;if(e===At)return 5123;if(e===yt)return 5124;if(e===wt)return 5125;if(e===bt)return 5126;if(e===xt)return i?5131:null!==(t=n.get("OES_texture_half_float"))?t.HALF_FLOAT_OES:null;if(e===Mt)return 6406;if(e===Tt)return 6407;if(e===St)return 6408;if(e===It)return 6409;if(e===Dt)return 6410;if(e===kt)return 6402;if(e===Lt)return 34041;if(e===Rt)return 6403;if(e===Ft)return 36244;if(e===Ot)return 33319;if(e===Nt)return 33320;if(e===Gt)return 36248;if(e===Ut)return 36249;if(e===zt||e===Ht||e===Qt||e===Vt){if(null===(t=n.get("WEBGL_compressed_texture_s3tc")))return null;if(e===zt)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===Ht)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===Qt)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===Vt)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(e===jt||e===Wt||e===Jt||e===qt){if(null===(t=n.get("WEBGL_compressed_texture_pvrtc")))return null;if(e===jt)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===Wt)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===Jt)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===qt)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(e===Xt)return null!==(t=n.get("WEBGL_compressed_texture_etc1"))?t.COMPRESSED_RGB_ETC1_WEBGL:null;if((e===Yt||e===Kt)&&null!==(t=n.get("WEBGL_compressed_texture_etc"))){if(e===Yt)return t.COMPRESSED_RGB8_ETC2;if(e===Kt)return t.COMPRESSED_RGBA8_ETC2_EAC}return e===Zt||e===$t||e===en||e===tn||e===nn||e===rn||e===an||e===on||e===sn||e===ln||e===un||e===cn||e===hn||e===dn||e===fn||e===mn||e===vn||e===gn||e===An||e===yn||e===wn||e===bn||e===xn||e===En||e===Cn||e===Bn||e===_n||e===Mn?null!==(t=n.get("WEBGL_compressed_texture_astc"))?e:null:e===pn?null!==(t=n.get("EXT_texture_compression_bptc"))?e:null:e===_t?i?34042:null!==(t=n.get("WEBGL_depth_texture"))?t.UNSIGNED_INT_24_8_WEBGL:null:void 0}}}function Es(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];ma.call(this),this.cameras=e}function Cs(){K.call(this),this.type="Group"}function Bs(){this._targetRay=null,this._grip=null,this._hand=null}function _s(p,t){var n=this,g=null,i=1,f=null,r="local-floor",m=null,v=[],u=new Map,A=new ma,y=(A.layers.enable(1),A.viewport=new Kn,new ma),w=(y.layers.enable(2),y.viewport=new Kn,[A,y]),b=new Es,x=(b.layers.enable(1),b.layers.enable(2),null),E=null;function a(e){var t=u.get(e.inputSource);t&&t.dispatchEvent({type:e.type,data:e.inputSource})}function o(){u.forEach(function(e,t){e.disconnect(t)}),u.clear(),p.setFramebuffer(null),p.setRenderTarget(p.getRenderTarget()),c.stop(),n.isPresenting=!1,n.dispatchEvent({type:"sessionend"})}function s(e){f=e,c.setContext(g),c.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}function l(e){for(var t=g.inputSources,n=0;n<v.length;n++)u.set(t[n],v[n]);for(var i=0;i<e.removed.length;i++){var r=e.removed[i],a=u.get(r);a&&(a.dispatchEvent({type:"disconnected",data:r}),u.delete(r))}for(var o=0;o<e.added.length;o++){var s=e.added[o],l=u.get(s);l&&l.dispatchEvent({type:"connected",data:s})}}this.enabled=!1,this.isPresenting=!1,this.getController=function(e){var t=v[e];return void 0===t&&(t=new Bs,v[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){var t=v[e];return void 0===t&&(t=new Bs,v[e]=t),t.getGripSpace()},this.getHand=function(e){var t=v[e];return void 0===t&&(t=new Bs,v[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){i=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){r=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return f},this.getSession=function(){return g},this.setSession=function(e){null!==(g=e)&&(g.addEventListener("select",a),g.addEventListener("selectstart",a),g.addEventListener("selectend",a),g.addEventListener("squeeze",a),g.addEventListener("squeezestart",a),g.addEventListener("squeezeend",a),g.addEventListener("end",o),!0!==(e=t.getContextAttributes()).xrCompatible&&t.makeXRCompatible(),e={antialias:e.antialias,alpha:e.alpha,depth:e.depth,stencil:e.stencil,framebufferScaleFactor:i},e=new XRWebGLLayer(g,t,e),g.updateRenderState({baseLayer:e}),g.requestReferenceSpace(r).then(s),g.addEventListener("inputsourceschange",l))};var C=new Re,B=new Re;function _(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.getCamera=function(e){b.near=y.near=A.near=e.near,b.far=y.far=A.far=e.far,x===b.near&&E===b.far||(g.updateRenderState({depthNear:b.near,depthFar:b.far}),x=b.near,E=b.far);var t=e.parent,n=b.cameras;_(b,t);for(var i=0;i<n.length;i++)_(n[i],t);e.matrixWorld.copy(b.matrixWorld);for(var r,a,o,s,l,u,c,h,d,p,f=e.children,m=0,v=f.length;m<v;m++)f[m].updateMatrixWorld(!0);return 2===n.length?(e=b,r=A,a=y,C.setFromMatrixPosition(r.matrixWorld),B.setFromMatrixPosition(a.matrixWorld),o=C.distanceTo(B),s=r.projectionMatrix.elements,a=a.projectionMatrix.elements,l=s[14]/(s[10]-1),u=s[14]/(s[10]+1),c=(s[9]+1)/s[5],h=(s[9]-1)/s[5],s=(s[8]-1)/s[0],a=(a[8]+1)/a[0],d=l*s,p=l*a,s=(a=o/(a-s))*-s,r.matrixWorld.decompose(e.position,e.quaternion,e.scale),e.translateX(s),e.translateZ(a),e.matrixWorld.compose(e.position,e.quaternion,e.scale),e.matrixWorldInverse.copy(e.matrixWorld).invert(),r=l+a,l=u+a,e.projectionMatrix.makePerspective(d-s,o-s+p,c*u/l*r,h*u/l*r,r,l)):b.projectionMatrix.copy(A.projectionMatrix),b};var M=null;var c=new Ea;c.setAnimationLoop(function(e,t){if(null!==(m=t.getViewerPose(f))){var n=m.views,i=g.renderState.baseLayer,r=(p.setFramebuffer(i.framebuffer),!1);n.length!==b.cameras.length&&(r=!(b.cameras.length=0));for(var a=0;a<n.length;a++){var o=n[a],s=i.getViewport(o),l=w[a];l.matrix.fromArray(o.transform.matrix),l.projectionMatrix.fromArray(o.projectionMatrix),l.viewport.set(s.x,s.y,s.width,s.height),0===a&&b.matrix.copy(l.matrix),!0===r&&b.cameras.push(l)}}for(var u=g.inputSources,c=0;c<v.length;c++){var h=v[c],d=u[c];h.update(d,t,f)}M&&M(e,t)}),this.setAnimationLoop=function(e){M=e},this.dispose=function(){}}function Ms(a){function v(e,t){e.opacity.value=t.opacity,t.color&&e.diffuse.value.copy(t.color),t.emissive&&e.emissive.value.copy(t.emissive).multiplyScalar(t.emissiveIntensity),t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.specularMap&&(e.specularMap.value=t.specularMap);var n,i,r=a.get(t).envMap;r&&(e.envMap.value=r,e.flipEnvMap.value=r.isCubeTexture&&r._needsFlipEnvMap?-1:1,e.reflectivity.value=t.reflectivity,e.refractionRatio.value=t.refractionRatio,void 0!==(r=a.get(r).__maxMipLevel))&&(e.maxMipLevel.value=r),t.lightMap&&(e.lightMap.value=t.lightMap,e.lightMapIntensity.value=t.lightMapIntensity),t.aoMap&&(e.aoMap.value=t.aoMap,e.aoMapIntensity.value=t.aoMapIntensity),t.map?n=t.map:t.specularMap?n=t.specularMap:t.displacementMap?n=t.displacementMap:t.normalMap?n=t.normalMap:t.bumpMap?n=t.bumpMap:t.roughnessMap?n=t.roughnessMap:t.metalnessMap?n=t.metalnessMap:t.alphaMap?n=t.alphaMap:t.emissiveMap?n=t.emissiveMap:t.clearcoatMap?n=t.clearcoatMap:t.clearcoatNormalMap?n=t.clearcoatNormalMap:t.clearcoatRoughnessMap&&(n=t.clearcoatRoughnessMap),void 0!==n&&(!0===(n=n.isWebGLRenderTarget?n.texture:n).matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix)),t.aoMap?i=t.aoMap:t.lightMap&&(i=t.lightMap),void 0!==i&&(!0===(i=i.isWebGLRenderTarget?i.texture:i).matrixAutoUpdate&&i.updateMatrix(),e.uv2Transform.value.copy(i.matrix))}function g(e,t){e.roughness.value=t.roughness,e.metalness.value=t.metalness,t.roughnessMap&&(e.roughnessMap.value=t.roughnessMap),t.metalnessMap&&(e.metalnessMap.value=t.metalnessMap),t.emissiveMap&&(e.emissiveMap.value=t.emissiveMap),t.bumpMap&&(e.bumpMap.value=t.bumpMap,e.bumpScale.value=t.bumpScale,t.side===me)&&(e.bumpScale.value*=-1),t.normalMap&&(e.normalMap.value=t.normalMap,e.normalScale.value.copy(t.normalScale),t.side===me)&&e.normalScale.value.negate(),t.displacementMap&&(e.displacementMap.value=t.displacementMap,e.displacementScale.value=t.displacementScale,e.displacementBias.value=t.displacementBias),a.get(t).envMap&&(e.envMapIntensity.value=t.envMapIntensity)}return{refreshFogUniforms:function(e,t){e.fogColor.value.copy(t.color),t.isFog?(e.fogNear.value=t.near,e.fogFar.value=t.far):t.isFogExp2&&(e.fogDensity.value=t.density)},refreshMaterialUniforms:function(e,t,n,i){var r,a,o,s,l,u,c,h,d,p,f,m;t.isMeshBasicMaterial?v(e,t):t.isMeshLambertMaterial?(v(e,t),f=e,(m=t).emissiveMap&&(f.emissiveMap.value=m.emissiveMap)):t.isMeshToonMaterial?(v(e,t),f=e,(m=t).gradientMap&&(f.gradientMap.value=m.gradientMap),m.emissiveMap&&(f.emissiveMap.value=m.emissiveMap),m.bumpMap&&(f.bumpMap.value=m.bumpMap,f.bumpScale.value=m.bumpScale,m.side===me)&&(f.bumpScale.value*=-1),m.normalMap&&(f.normalMap.value=m.normalMap,f.normalScale.value.copy(m.normalScale),m.side===me)&&f.normalScale.value.negate(),m.displacementMap&&(f.displacementMap.value=m.displacementMap,f.displacementScale.value=m.displacementScale,f.displacementBias.value=m.displacementBias)):t.isMeshPhongMaterial?(v(e,t),a=t,(r=e).specular.value.copy(a.specular),r.shininess.value=Math.max(a.shininess,1e-4),a.emissiveMap&&(r.emissiveMap.value=a.emissiveMap),a.bumpMap&&(r.bumpMap.value=a.bumpMap,r.bumpScale.value=a.bumpScale,a.side===me)&&(r.bumpScale.value*=-1),a.normalMap&&(r.normalMap.value=a.normalMap,r.normalScale.value.copy(a.normalScale),a.side===me)&&r.normalScale.value.negate(),a.displacementMap&&(r.displacementMap.value=a.displacementMap,r.displacementScale.value=a.displacementScale,r.displacementBias.value=a.displacementBias)):t.isMeshStandardMaterial?(v(e,t),t.isMeshPhysicalMaterial?(g(r=e,a=t),r.reflectivity.value=a.reflectivity,r.clearcoat.value=a.clearcoat,r.clearcoatRoughness.value=a.clearcoatRoughness,a.sheen&&r.sheen.value.copy(a.sheen),a.clearcoatMap&&(r.clearcoatMap.value=a.clearcoatMap),a.clearcoatRoughnessMap&&(r.clearcoatRoughnessMap.value=a.clearcoatRoughnessMap),a.clearcoatNormalMap&&(r.clearcoatNormalScale.value.copy(a.clearcoatNormalScale),r.clearcoatNormalMap.value=a.clearcoatNormalMap,a.side===me)&&r.clearcoatNormalScale.value.negate(),r.transmission.value=a.transmission,a.transmissionMap&&(r.transmissionMap.value=a.transmissionMap)):g(e,t)):t.isMeshMatcapMaterial?(v(e,t),d=e,(p=t).matcap&&(d.matcap.value=p.matcap),p.bumpMap&&(d.bumpMap.value=p.bumpMap,d.bumpScale.value=p.bumpScale,p.side===me)&&(d.bumpScale.value*=-1),p.normalMap&&(d.normalMap.value=p.normalMap,d.normalScale.value.copy(p.normalScale),p.side===me)&&d.normalScale.value.negate(),p.displacementMap&&(d.displacementMap.value=p.displacementMap,d.displacementScale.value=p.displacementScale,d.displacementBias.value=p.displacementBias)):t.isMeshDepthMaterial?(v(e,t),d=e,(p=t).displacementMap&&(d.displacementMap.value=p.displacementMap,d.displacementScale.value=p.displacementScale,d.displacementBias.value=p.displacementBias)):t.isMeshDistanceMaterial?(v(e,t),o=e,(s=t).displacementMap&&(o.displacementMap.value=s.displacementMap,o.displacementScale.value=s.displacementScale,o.displacementBias.value=s.displacementBias),o.referencePosition.value.copy(s.referencePosition),o.nearDistance.value=s.nearDistance,o.farDistance.value=s.farDistance):t.isMeshNormalMaterial?(v(e,t),o=e,(s=t).bumpMap&&(o.bumpMap.value=s.bumpMap,o.bumpScale.value=s.bumpScale,s.side===me)&&(o.bumpScale.value*=-1),s.normalMap&&(o.normalMap.value=s.normalMap,o.normalScale.value.copy(s.normalScale),s.side===me)&&o.normalScale.value.negate(),s.displacementMap&&(o.displacementMap.value=s.displacementMap,o.displacementScale.value=s.displacementScale,o.displacementBias.value=s.displacementBias)):t.isLineBasicMaterial?(h=t,(c=e).diffuse.value.copy(h.color),c.opacity.value=h.opacity,t.isLineDashedMaterial&&(c=t,(h=e).dashSize.value=c.dashSize,h.totalSize.value=c.dashSize+c.gapSize,h.scale.value=c.scale)):t.isPointsMaterial?(h=t,c=n,n=i,(i=e).diffuse.value.copy(h.color),i.opacity.value=h.opacity,i.size.value=h.size*c,i.scale.value=.5*n,h.map&&(i.map.value=h.map),h.alphaMap&&(i.alphaMap.value=h.alphaMap),h.map?l=h.map:h.alphaMap&&(l=h.alphaMap),void 0!==l&&(!0===l.matrixAutoUpdate&&l.updateMatrix(),i.uvTransform.value.copy(l.matrix))):t.isSpriteMaterial?(n=t,(i=e).diffuse.value.copy(n.color),i.opacity.value=n.opacity,i.rotation.value=n.rotation,n.map&&(i.map.value=n.map),n.alphaMap&&(i.alphaMap.value=n.alphaMap),n.map?u=n.map:n.alphaMap&&(u=n.alphaMap),void 0!==u&&(!0===u.matrixAutoUpdate&&u.updateMatrix(),i.uvTransform.value.copy(u.matrix))):t.isShadowMaterial?(e.color.value.copy(t.color),e.opacity.value=t.opacity):t.isShaderMaterial&&(t.uniformsNeedUpdate=!1)}}}function Ts(e){var r=void 0!==(e=e||{}).canvas?e.canvas:((n=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")).style.display="block",n),n=void 0!==e.context?e.context:null,O=void 0!==e.alpha&&e.alpha,N=void 0===e.depth||e.depth,G=void 0===e.stencil||e.stencil,U=void 0!==e.antialias&&e.antialias,z=void 0===e.premultipliedAlpha||e.premultipliedAlpha,H=void 0!==e.preserveDrawingBuffer&&e.preserveDrawingBuffer,Q=void 0!==e.powerPreference?e.powerPreference:"default",V=void 0!==e.failIfMajorPerformanceCaveat&&e.failIfMajorPerformanceCaveat,g=null,A=null,a=[],p=(this.domElement=r,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.gammaFactor=2,this.outputEncoding=kn,this.physicallyCorrectLights=!1,this.toneMapping=$e,this.toneMappingExposure=1,this.maxMorphTargets=8,this.maxMorphNormals=4,this),j=!1,W=null,J=0,q=0,f=null,h=null,m=-1,v=null,y=new Kn,o=new Kn,X=null,i=r.width,w=r.height,b=1,Y=null,K=null,s=new Kn(0,0,i,w),l=new Kn(0,0,i,w),Z=!1,$=new xa,ee=!1,te=!1,x=new _e,E=new Re,ne={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function ie(){return null===f?b:1}var d,C,B,_,M,T,S,c,re,I,D,ae,oe,se,P,u,le,ue,ce,k,L,R=n;function he(e,t){for(var n=0;n<e.length;n++){var i=e[n],i=r.getContext(i,t);if(null!==i)return i}return null}try{var de={alpha:O,depth:N,stencil:G,antialias:U,premultipliedAlpha:z,preserveDrawingBuffer:H,powerPreference:Q,failIfMajorPerformanceCaveat:V};if(r.addEventListener("webglcontextlost",ve,!1),r.addEventListener("webglcontextrestored",ge,!1),null===R){var pe=["webgl2","webgl","experimental-webgl"];if(!0===p.isWebGL1Renderer&&pe.shift(),null===(R=he(pe,de)))throw he(pe)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}void 0===R.getShaderPrecisionFormat&&(R.getShaderPrecisionFormat=function(){return{rangeMin:1,rangeMax:1,precision:1}})}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function fe(){d=new La(R),!1===(C=new Da(R,d,e)).isWebGL2&&(d.get("WEBGL_depth_texture"),d.get("OES_texture_float"),d.get("OES_texture_half_float"),d.get("OES_texture_half_float_linear"),d.get("OES_standard_derivatives"),d.get("OES_element_index_uint"),d.get("OES_vertex_array_object"),d.get("ANGLE_instanced_arrays")),d.get("OES_texture_float_linear"),k=new xs(0,d,C),(B=new ws(R,d,C)).scissor(o.copy(l).multiplyScalar(b).floor()),B.viewport(y.copy(s).multiplyScalar(b).floor()),_=new Oa,M=new rs,T=new bs(R,d,B,M,C,k,_),S=new ka(p),c=new Ca(R,C),L=new Sa(R,d,c,C),re=new Ra(0,c,_,L),I=new za(0,re,c,_),le=new Ua(R),P=new Pa(M),D=new is(p,S,d,C,L,P),ae=new Ms(M),oe=new ls(M),se=new fs(d,C),u=new Ta(p,S,B,I,z),ue=new Ia(R,d,_,C),ce=new Fa(R,d,_,C),_.programs=D.programs,p.capabilities=C,p.extensions=d,p.properties=M,p.renderLists=oe,p.state=B,p.info=_,p._textures=T}fe();var F=new _s(p,R),me=(this.xr=F,new ys(p,I,C.maxTextureSize));function ve(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),j=!0}function ge(){console.log("THREE.WebGLRenderer: Context Restored."),j=!1,fe()}function Ae(e){var e=e.target;e.removeEventListener("dispose",Ae),ye(e=e),M.remove(e)}function ye(e){e=M.get(e).program;void 0!==e&&D.releaseProgram(e)}this.shadowMap=me,this.getContext=function(){return R},this.getContextAttributes=function(){return R.getContextAttributes()},this.forceContextLoss=function(){var e=d.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){var e=d.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return b},this.setPixelRatio=function(e){void 0!==e&&(b=e,this.setSize(i,w,!1))},this.getSize=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getsize() now requires a Vector2 as an argument"),e=new Le),e.set(i,w)},this.setSize=function(e,t,n){F.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(i=e,w=t,r.width=Math.floor(e*b),r.height=Math.floor(t*b),!1!==n&&(r.style.width=e+"px",r.style.height=t+"px"),this.setViewport(0,0,e,t))},this.getDrawingBufferSize=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument"),e=new Le),e.set(i*b,w*b).floor()},this.setDrawingBufferSize=function(e,t,n){i=e,w=t,b=n,r.width=Math.floor(e*n),r.height=Math.floor(t*n),this.setViewport(0,0,e,t)},this.getCurrentViewport=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument"),e=new Kn),e.copy(y)},this.getViewport=function(e){return e.copy(s)},this.setViewport=function(e,t,n,i){e.isVector4?s.set(e.x,e.y,e.z,e.w):s.set(e,t,n,i),B.viewport(y.copy(s).multiplyScalar(b).floor())},this.getScissor=function(e){return e.copy(l)},this.setScissor=function(e,t,n,i){e.isVector4?l.set(e.x,e.y,e.z,e.w):l.set(e,t,n,i),B.scissor(o.copy(l).multiplyScalar(b).floor())},this.getScissorTest=function(){return Z},this.setScissorTest=function(e){B.setScissorTest(Z=e)},this.setOpaqueSort=function(e){Y=e},this.setTransparentSort=function(e){K=e},this.getClearColor=function(e){return void 0===e&&(console.warn("WebGLRenderer: .getClearColor() now requires a Color as an argument"),e=new Me),e.copy(u.getClearColor())},this.setClearColor=function(){u.setClearColor.apply(u,arguments)},this.getClearAlpha=function(){return u.getClearAlpha()},this.setClearAlpha=function(){u.setClearAlpha.apply(u,arguments)},this.clear=function(e,t,n){var i=0;void 0!==e&&!e||(i|=16384),void 0!==t&&!t||(i|=256),void 0!==n&&!n||(i|=1024),R.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){r.removeEventListener("webglcontextlost",ve,!1),r.removeEventListener("webglcontextrestored",ge,!1),oe.dispose(),se.dispose(),M.dispose(),S.dispose(),I.dispose(),L.dispose(),F.dispose(),t.stop()},this.renderBufferImmediate=function(e,t){L.initAttributes();var n=M.get(e),t=(e.hasPositions&&!n.position&&(n.position=R.createBuffer()),e.hasNormals&&!n.normal&&(n.normal=R.createBuffer()),e.hasUvs&&!n.uv&&(n.uv=R.createBuffer()),e.hasColors&&!n.color&&(n.color=R.createBuffer()),t.getAttributes());e.hasPositions&&(R.bindBuffer(34962,n.position),R.bufferData(34962,e.positionArray,35048),L.enableAttribute(t.position),R.vertexAttribPointer(t.position,3,5126,!1,0,0)),e.hasNormals&&(R.bindBuffer(34962,n.normal),R.bufferData(34962,e.normalArray,35048),L.enableAttribute(t.normal),R.vertexAttribPointer(t.normal,3,5126,!1,0,0)),e.hasUvs&&(R.bindBuffer(34962,n.uv),R.bufferData(34962,e.uvArray,35048),L.enableAttribute(t.uv),R.vertexAttribPointer(t.uv,2,5126,!1,0,0)),e.hasColors&&(R.bindBuffer(34962,n.color),R.bufferData(34962,e.colorArray,35048),L.enableAttribute(t.color),R.vertexAttribPointer(t.color,3,5126,!1,0,0)),L.disableUnusedAttributes(),R.drawArrays(4,0,e.count),e.count=0},this.renderBufferDirect=function(e,t,n,i,r,a){null===t&&(t=ne);var o=r.isMesh&&r.matrixWorld.determinant()<0,e=Ce(e,t,i,r),t=(B.setMaterial(i,o),n.index),o=n.attributes.position;if(null===t){if(void 0===o||0===o.count)return}else if(0===t.count)return;var s=1,e=(!0===i.wireframe&&(t=re.getWireframeAttribute(n),s=2),(i.morphTargets||i.morphNormals)&&le.update(r,n,i,e),L.setup(r,i,e,n,t),ue),l=(null!==t&&(l=c.get(t),(e=ce).setIndex(l)),(null!==t?t:o).count),t=n.drawRange.start*s,o=n.drawRange.count*s,u=null!==a?a.start*s:0,a=null!==a?a.count*s:1/0,s=Math.max(t,u),l=Math.min(l,t+o,u+a)-1,t=Math.max(0,l-s+1);0!==t&&(r.isMesh?!0===i.wireframe?(B.setLineWidth(i.wireframeLinewidth*ie()),e.setMode(1)):e.setMode(4):r.isLine?(o=i.linewidth,B.setLineWidth((o=void 0===o?1:o)*ie()),r.isLineSegments?e.setMode(1):r.isLineLoop?e.setMode(2):e.setMode(3)):r.isPoints?e.setMode(0):r.isSprite&&e.setMode(4),r.isInstancedMesh?e.renderInstances(s,t,r.count):n.isInstancedBufferGeometry?(u=Math.min(n.instanceCount,n._maxInstanceCount),e.renderInstances(s,t,u)):e.render(s,t))},this.compile=function(r,t){(A=se.get(r)).init(),r.traverseVisible(function(e){e.isLight&&e.layers.test(t.layers)&&(A.pushLight(e),e.castShadow)&&A.pushShadow(e)}),A.setupLights();var a=new WeakMap;r.traverse(function(e){var t=e.material;if(t)if(Array.isArray(t))for(var n=0;n<t.length;n++){var i=t[n];!1===a.has(i)&&(Ee(i,r,e),a.set(i))}else!1===a.has(t)&&(Ee(t,r,e),a.set(t))})};var we=null;var t=new Ea;function be(e,t,n){for(var i=!0===t.isScene?t.overrideMaterial:null,r=0,a=e.length;r<a;r++){var o=e[r],s=o.object,l=o.geometry,u=null===i?o.material:i,c=o.group;if(n.isArrayCamera)for(var h=n.cameras,d=0,p=h.length;d<p;d++){var f=h[d];s.layers.test(f.layers)&&(B.viewport(y.copy(f.viewport)),A.setupLightsView(f),xe(s,t,f,l,u,c))}else xe(s,t,n,l,u,c)}}function xe(e,t,n,i,r,a){var o,s;e.onBeforeRender(p,t,n,i,r,a),e.modelViewMatrix.multiplyMatrices(n.matrixWorldInverse,e.matrixWorld),e.normalMatrix.getNormalMatrix(e.modelViewMatrix),e.isImmediateRenderObject?(o=Ce(n,t,r,e),B.setMaterial(r),L.reset(),s=o,e.render(function(e){p.renderBufferImmediate(e,s)})):p.renderBufferDirect(n,t,i,r,e,a),e.onAfterRender(p,t,n,i,r,a)}function Ee(e,t,n){!0!==t.isScene&&(t=ne);var i=M.get(e),r=A.state.lights,a=A.state.shadowsArray,o=r.state.version,a=D.getParameters(e,r.state,a,t,n),n=D.getProgramCacheKey(a),s=i.program,l=!0;if(void 0===s)e.addEventListener("dispose",Ae);else if(s.cacheKey!==n)ye(e);else{if(i.lightsStateVersion===o&&void 0!==a.shaderID)return u=e.isMeshStandardMaterial?t.environment:null,void(i.envMap=S.get(e.envMap||u));l=!1}l&&(a.uniforms=D.getUniforms(e),e.onBeforeCompile(a,p),s=D.acquireProgram(a,n),i.program=s,i.uniforms=a.uniforms,i.outputEncoding=a.outputEncoding);var u=i.uniforms,n=((e.isShaderMaterial||e.isRawShaderMaterial)&&!0!==e.clipping||(i.numClippingPlanes=P.numPlanes,i.numIntersection=P.numIntersection,u.clippingPlanes=P.uniform),i.environment=e.isMeshStandardMaterial?t.environment:null,i.fog=t.fog,i.envMap=S.get(e.envMap||i.environment),i.needsLights=(l=e).isMeshLambertMaterial||l.isMeshToonMaterial||l.isMeshPhongMaterial||l.isMeshStandardMaterial||l.isShadowMaterial||l.isShaderMaterial&&!0===l.lights,i.lightsStateVersion=o,i.needsLights&&(u.ambientLightColor.value=r.state.ambient,u.lightProbe.value=r.state.probe,u.directionalLights.value=r.state.directional,u.directionalLightShadows.value=r.state.directionalShadow,u.spotLights.value=r.state.spot,u.spotLightShadows.value=r.state.spotShadow,u.rectAreaLights.value=r.state.rectArea,u.ltc_1.value=r.state.rectAreaLTC1,u.ltc_2.value=r.state.rectAreaLTC2,u.pointLights.value=r.state.point,u.pointLightShadows.value=r.state.pointShadow,u.hemisphereLights.value=r.state.hemi,u.directionalShadowMap.value=r.state.directionalShadowMap,u.directionalShadowMatrix.value=r.state.directionalShadowMatrix,u.spotShadowMap.value=r.state.spotShadowMap,u.spotShadowMatrix.value=r.state.spotShadowMatrix,u.pointShadowMap.value=r.state.pointShadowMap,u.pointShadowMatrix.value=r.state.pointShadowMatrix),i.program.getUniforms()),s=No.seqWithValue(n.seq,u);i.uniformsList=s}function Ce(e,t,n,i){!0!==t.isScene&&(t=ne),T.resetTextureUnits();var r,a,o=t.fog,s=n.isMeshStandardMaterial?t.environment:null,l=null===f?p.outputEncoding:f.texture.encoding,u=S.get(n.envMap||s),c=M.get(n),h=A.state.lights,d=(!0!==ee||!0!==te&&e===v||(d=e===v&&n.id===m,P.setState(n,e,d)),n.version===c.__version?(n.fog&&c.fog!==o||c.environment!==s||c.needsLights&&c.lightsStateVersion!==h.state.version||void 0!==c.numClippingPlanes&&(c.numClippingPlanes!==P.numPlanes||c.numIntersection!==P.numIntersection)||c.outputEncoding!==l||c.envMap!==u)&&Ee(n,t,i):(Ee(n,t,i),c.__version=n.version),!1),s=!1,h=!1,l=c.program,u=l.getUniforms(),t=c.uniforms;return B.useProgram(l.program)&&(h=s=d=!0),n.id!==m&&(m=n.id,s=!0),(d||v!==e)&&(u.setValue(R,"projectionMatrix",e.projectionMatrix),C.logarithmicDepthBuffer&&u.setValue(R,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),v!==e&&(v=e,h=s=!0),(n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshStandardMaterial||n.envMap)&&void 0!==(d=u.map.cameraPosition)&&d.setValue(R,E.setFromMatrixPosition(e.matrixWorld)),(n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial)&&u.setValue(R,"isOrthographic",!0===e.isOrthographicCamera),n.isMeshPhongMaterial||n.isMeshToonMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.isShadowMaterial||n.skinning)&&u.setValue(R,"viewMatrix",e.matrixWorldInverse),n.skinning&&(u.setOptional(R,i,"bindMatrix"),u.setOptional(R,i,"bindMatrixInverse"),d=i.skeleton)&&(e=d.bones,C.floatVertexTextures?(null===d.boneTexture&&(e=Math.sqrt(4*e.length),e=Be.ceilPowerOfTwo(e),e=Math.max(e,4),(a=new Float32Array(e*e*4)).set(d.boneMatrices),r=new ya(a,e,e,St,bt),d.boneMatrices=a,d.boneTexture=r,d.boneTextureSize=e),u.setValue(R,"boneTexture",d.boneTexture,T),u.setValue(R,"boneTextureSize",d.boneTextureSize)):u.setOptional(R,d,"boneMatrices")),!s&&c.receiveShadow===i.receiveShadow||(c.receiveShadow=i.receiveShadow,u.setValue(R,"receiveShadow",i.receiveShadow)),s&&(u.setValue(R,"toneMappingExposure",p.toneMappingExposure),c.needsLights&&(a=h,(r=t).ambientLightColor.needsUpdate=a,r.lightProbe.needsUpdate=a,r.directionalLights.needsUpdate=a,r.directionalLightShadows.needsUpdate=a,r.pointLights.needsUpdate=a,r.pointLightShadows.needsUpdate=a,r.spotLights.needsUpdate=a,r.spotLightShadows.needsUpdate=a,r.rectAreaLights.needsUpdate=a,r.hemisphereLights.needsUpdate=a),o&&n.fog&&ae.refreshFogUniforms(t,o),ae.refreshMaterialUniforms(t,n,b,w),No.upload(R,c.uniformsList,t,T)),n.isShaderMaterial&&!0===n.uniformsNeedUpdate&&(No.upload(R,c.uniformsList,t,T),n.uniformsNeedUpdate=!1),n.isSpriteMaterial&&u.setValue(R,"center",i.center),u.setValue(R,"modelViewMatrix",i.modelViewMatrix),u.setValue(R,"normalMatrix",i.normalMatrix),u.setValue(R,"modelMatrix",i.matrixWorld),l}t.setAnimationLoop(function(e){F.isPresenting||we&&we(e)}),"undefined"!=typeof window&&t.setContext(window),this.setAnimationLoop=function(e){we=e,F.setAnimationLoop(e),null===e?t.stop():t.start()},this.render=function(e,t){var n,i,r;void 0!==arguments[2]&&(console.warn("THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead."),r=arguments[2]),void 0!==arguments[3]&&(console.warn("THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead."),n=arguments[3]),void 0!==t&&!0!==t.isCamera?console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera."):!0!==j&&(L.resetDefaultState(),m=-1,!(v=null)===e.autoUpdate&&e.updateMatrixWorld(),null===t.parent&&t.updateMatrixWorld(),!0===F.enabled&&!0===F.isPresenting&&(t=F.getCamera(t)),!0===e.isScene&&e.onBeforeRender(p,e,t,r||f),(A=se.get(e,a.length)).init(),a.push(A),x.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),$.setFromProjectionMatrix(x),te=this.localClippingEnabled,ee=P.init(this.clippingPlanes,te,t),(g=oe.get(e,t)).init(),function e(t,n,i,r){if(!1===t.visible)return;var a=t.layers.test(n.layers);if(a)if(t.isGroup)i=t.renderOrder;else if(t.isLOD)!0===t.autoUpdate&&t.update(n);else if(t.isLight)A.pushLight(t),t.castShadow&&A.pushShadow(t);else if(t.isSprite){var o;t.frustumCulled&&!$.intersectsSprite(t)||(r&&E.setFromMatrixPosition(t.matrixWorld).applyMatrix4(x),a=I.update(t),(o=t.material).visible&&g.push(t,a,o,i,E.z,null))}else if(t.isImmediateRenderObject)r&&E.setFromMatrixPosition(t.matrixWorld).applyMatrix4(x),g.push(t,null,t.material,i,E.z,null);else if((t.isMesh||t.isLine||t.isPoints)&&(t.isSkinnedMesh&&t.skeleton.frame!==_.render.frame&&(t.skeleton.update(),t.skeleton.frame=_.render.frame),!t.frustumCulled||$.intersectsObject(t))){r&&E.setFromMatrixPosition(t.matrixWorld).applyMatrix4(x);var s=I.update(t),l=t.material;if(Array.isArray(l))for(var u=s.groups,c=0,h=u.length;c<h;c++){var d=u[c],p=l[d.materialIndex];p&&p.visible&&g.push(t,s,p,i,E.z,d)}else l.visible&&g.push(t,s,l,i,E.z,null)}var f=t.children;for(var m=0,v=f.length;m<v;m++)e(f[m],n,i,r)}(e,t,0,p.sortObjects),g.finish(),!0===p.sortObjects&&g.sort(Y,K),!0===ee&&P.beginShadows(),i=A.state.shadowsArray,me.render(i,e,t),A.setupLights(),A.setupLightsView(t),!0===ee&&P.endShadows(),!0===this.info.autoReset&&this.info.reset(),void 0!==r&&this.setRenderTarget(r),u.render(g,e,t,n),i=g.opaque,r=g.transparent,0<i.length&&be(i,e,t),0<r.length&&be(r,e,t),!0===e.isScene&&e.onAfterRender(p,e,t),null!==f&&(T.updateRenderTargetMipmap(f),T.updateMultisampleRenderTarget(f)),B.buffers.depth.setTest(!0),B.buffers.depth.setMask(!0),B.buffers.color.setMask(!0),B.setPolygonOffset(!1),a.pop(),A=0<a.length?a[a.length-1]:null,g=null)},this.setFramebuffer=function(e){W!==e&&null===f&&R.bindFramebuffer(36160,e),W=e},this.getActiveCubeFace=function(){return J},this.getActiveMipmapLevel=function(){return q},this.getRenderList=function(){return g},this.setRenderList=function(e){g=e},this.getRenderTarget=function(){return f},this.setRenderTarget=function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=(J=n,q=i,(f=e)&&void 0===M.get(e).__webglFramebuffer&&T.setupRenderTarget(e),W),a=!1;X=e?(t=M.get(e).__webglFramebuffer,e.isWebGLCubeRenderTarget?(r=t[n],a=!0):r=e.isWebGLMultisampleRenderTarget?M.get(e).__webglMultisampledFramebuffer:t,y.copy(e.viewport),o.copy(e.scissor),e.scissorTest):(y.copy(s).multiplyScalar(b).floor(),o.copy(l).multiplyScalar(b).floor(),Z),h!==r&&(R.bindFramebuffer(36160,r),h=r),B.viewport(y),B.scissor(o),B.setScissorTest(X),a&&(t=M.get(e.texture),R.framebufferTexture2D(36160,36064,34069+n,t.__webglTexture,i))},this.readRenderTargetPixels=function(e,t,n,i,r,a,o){if(e&&e.isWebGLRenderTarget){var s=M.get(e).__webglFramebuffer;if(s=e.isWebGLCubeRenderTarget&&void 0!==o?s[o]:s){o=!1;s!==h&&(R.bindFramebuffer(36160,s),o=!0);try{var l=e.texture,u=l.format,c=l.type;u!==St&&k.convert(u)!==R.getParameter(35739)?console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format."):c===mt||k.convert(c)===R.getParameter(35738)||c===bt&&(C.isWebGL2||d.get("OES_texture_float")||d.get("WEBGL_color_buffer_float"))||c===xt&&(C.isWebGL2?d.get("EXT_color_buffer_float"):d.get("EXT_color_buffer_half_float"))?36053===R.checkFramebufferStatus(36160)?0<=t&&t<=e.width-i&&0<=n&&n<=e.height-r&&R.readPixels(t,n,i,r,k.convert(u),k.convert(c),a):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete."):console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.")}finally{o&&R.bindFramebuffer(36160,h)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")},this.copyFramebufferToTexture=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=Math.pow(2,-n),r=Math.floor(t.image.width*i),i=Math.floor(t.image.height*i),a=k.convert(t.format);T.setTexture2D(t,0),R.copyTexImage2D(3553,n,a,e.x,e.y,r,i,0),B.unbindTexture()},this.copyTextureToTexture=function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=t.image.width,a=t.image.height,o=k.convert(n.format),s=k.convert(n.type);T.setTexture2D(n,0),R.pixelStorei(37440,n.flipY),R.pixelStorei(37441,n.premultiplyAlpha),R.pixelStorei(3317,n.unpackAlignment),t.isDataTexture?R.texSubImage2D(3553,i,e.x,e.y,r,a,o,s,t.image.data):t.isCompressedTexture?R.compressedTexSubImage2D(3553,i,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,o,t.mipmaps[0].data):R.texSubImage2D(3553,i,e.x,e.y,o,s,t.image),0===i&&n.generateMipmaps&&R.generateMipmap(3553),B.unbindTexture()},this.initTexture=function(e){T.setTexture2D(e,0),B.unbindTexture()},this.resetState=function(){B.reset(),L.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}function Ss(e){Ts.call(this,e)}Es.prototype=Object.assign(Object.create(ma.prototype),{constructor:Es,isArrayCamera:!0}),Cs.prototype=Object.assign(Object.create(K.prototype),{constructor:Cs,isGroup:!0}),Object.assign(Bs.prototype,{constructor:Bs,getHandSpace:function(){if(null===this._hand&&(this._hand=new Cs,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints=[],this._hand.inputState={pinching:!1},window.XRHand))for(var e=0;e<=window.XRHand.LITTLE_PHALANX_TIP;e++){var t=new Cs;t.matrixAutoUpdate=!1,t.visible=!1,this._hand.joints.push(t),this._hand.add(t)}return this._hand},getTargetRaySpace:function(){return null===this._targetRay&&(this._targetRay=new Cs,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1),this._targetRay},getGripSpace:function(){return null===this._grip&&(this._grip=new Cs,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1),this._grip},dispatchEvent:function(e){return null!==this._targetRay&&this._targetRay.dispatchEvent(e),null!==this._grip&&this._grip.dispatchEvent(e),null!==this._hand&&this._hand.dispatchEvent(e),this},disconnect:function(e){return this.dispatchEvent({type:"disconnected",data:e}),null!==this._targetRay&&(this._targetRay.visible=!1),null!==this._grip&&(this._grip.visible=!1),null!==this._hand&&(this._hand.visible=!1),this},update:function(e,t,n){var i=null,r=null,a=null,o=this._targetRay,s=this._grip,l=this._hand;if(e&&"visible-blurred"!==t.session.visibilityState)if(l&&e.hand)for(var u,c,a=!0,h=0;h<=window.XRHand.LITTLE_PHALANX_TIP;h++)e.hand[h]&&(u=t.getJointPose(e.hand[h],n),c=l.joints[h],null!==u&&(c.matrix.fromArray(u.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),c.jointRadius=u.radius),c.visible=null!==u,c=l.joints[window.XRHand.INDEX_PHALANX_TIP],u=l.joints[window.XRHand.THUMB_PHALANX_TIP],c=c.position.distanceTo(u.position),l.inputState.pinching&&.025<c?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&c<=.015&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this})));else null!==o&&null!==(i=t.getPose(e.targetRaySpace,n))&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale)),null!==s&&e.gripSpace&&null!==(r=t.getPose(e.gripSpace,n))&&(s.matrix.fromArray(r.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale));return null!==o&&(o.visible=null!==i),null!==s&&(s.visible=null!==r),null!==l&&(l.visible=null!==a),this}}),Object.assign(_s.prototype,zn.prototype),Ss.prototype=Object.assign(Object.create(Ts.prototype),{constructor:Ss,isWebGL1Renderer:!0});var Is=function(){function n(e,t){te(this,n),Object.defineProperty(this,"isFogExp2",{value:!0}),this.name="",this.color=new Me(e),this.density=void 0!==t?t:25e-5}return A(n,[{key:"clone",value:function(){return new n(this.color,this.density)}},{key:"toJSON",value:function(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}}]),n}(),Ds=function(){function i(e,t,n){te(this,i),Object.defineProperty(this,"isFog",{value:!0}),this.name="",this.color=new Me(e),this.near=void 0!==t?t:1,this.far=void 0!==n?n:1e3}return A(i,[{key:"clone",value:function(){return new i(this.color,this.near,this.far)}},{key:"toJSON",value:function(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}}]),i}(),Ps=function(){y(n,K);var t=C(n);function n(){var e;return te(this,n),e=t.call(this),Object.defineProperty(G(e),"isScene",{value:!0}),e.type="Scene",e.background=null,e.environment=null,e.fog=null,e.overrideMaterial=null,e.autoUpdate=!0,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:G(e)})),e}return A(n,[{key:"copy",value:function(e,t){return k(_(n.prototype),"copy",this).call(this,e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}},{key:"toJSON",value:function(e){var t=k(_(n.prototype),"toJSON",this).call(this,e);return null!==this.background&&(t.object.background=this.background.toJSON(e)),null!==this.environment&&(t.object.environment=this.environment.toJSON(e)),null!==this.fog&&(t.object.fog=this.fog.toJSON()),t}}]),n}();function ks(e,t){this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=Nn,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Be.generateUUID()}Object.defineProperty(ks.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(ks.prototype,{isInterleavedBuffer:!0,onUploadCallback:function(){},setUsage:function(e){return this.usage=e,this},copy:function(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this},copyAt:function(e,t,n){e*=this.stride,n*=t.stride;for(var i=0,r=this.stride;i<r;i++)this.array[e+i]=t.array[n+i];return this},set:function(e){return this.array.set(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:0),this},clone:function(e){void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Be.generateUUID()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);e=new ks(new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),this.stride);return e.setUsage(this.usage),e},onUpload:function(e){return this.onUploadCallback=e,this},toJSON:function(e){return void 0===e.arrayBuffers&&(e.arrayBuffers={}),void 0===this.array.buffer._uuid&&(this.array.buffer._uuid=Be.generateUUID()),void 0===e.arrayBuffers[this.array.buffer._uuid]&&(e.arrayBuffers[this.array.buffer._uuid]=Array.prototype.slice.call(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}});var Ls,Rs=new Re;function Fs(e,t,n,i){this.name="",this.data=e,this.itemSize=t,this.offset=n,this.normalized=!0===i}function Os(e){yr.call(this),this.type="SpriteMaterial",this.color=new Me(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.setValues(e)}Object.defineProperties(Fs.prototype,{count:{get:function(){return this.data.count}},array:{get:function(){return this.data.array}},needsUpdate:{set:function(e){this.data.needsUpdate=e}}}),Object.assign(Fs.prototype,{isInterleavedBufferAttribute:!0,applyMatrix4:function(e){for(var t=0,n=this.data.count;t<n;t++)Rs.x=this.getX(t),Rs.y=this.getY(t),Rs.z=this.getZ(t),Rs.applyMatrix4(e),this.setXYZ(t,Rs.x,Rs.y,Rs.z);return this},setX:function(e,t){return this.data.array[e*this.data.stride+this.offset]=t,this},setY:function(e,t){return this.data.array[e*this.data.stride+this.offset+1]=t,this},setZ:function(e,t){return this.data.array[e*this.data.stride+this.offset+2]=t,this},setW:function(e,t){return this.data.array[e*this.data.stride+this.offset+3]=t,this},getX:function(e){return this.data.array[e*this.data.stride+this.offset]},getY:function(e){return this.data.array[e*this.data.stride+this.offset+1]},getZ:function(e){return this.data.array[e*this.data.stride+this.offset+2]},getW:function(e){return this.data.array[e*this.data.stride+this.offset+3]},setXY:function(e,t,n){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this},setXYZ:function(e,t,n,i){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this},setXYZW:function(e,t,n,i,r){return e=e*this.data.stride+this.offset,this.data.array[e+0]=t,this.data.array[e+1]=n,this.data.array[e+2]=i,this.data.array[e+3]=r,this},clone:function(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new Fs(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized);console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.");for(var t=[],n=0;n<this.count;n++)for(var i=n*this.data.stride+this.offset,r=0;r<this.itemSize;r++)t.push(this.data.array[i+r]);return new Q(new this.array.constructor(t),this.itemSize,this.normalized)},toJSON:function(e){if(void 0!==e)return void 0===e.interleavedBuffers&&(e.interleavedBuffers={}),void 0===e.interleavedBuffers[this.data.uuid]&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized};console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.");for(var t=[],n=0;n<this.count;n++)for(var i=n*this.data.stride+this.offset,r=0;r<this.itemSize;r++)t.push(this.data.array[i+r]);return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}}),((Os.prototype=Object.create(yr.prototype)).constructor=Os).prototype.isSpriteMaterial=!0,Os.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this};var Ns=new Re,Gs=new Re,Us=new Re,zs=new Le,Hs=new Le,Qs=new _e,Vs=new Re,js=new Re,Ws=new Re,Js=new Le,qs=new Le,Xs=new Le;function Ys(e){var t;K.call(this),this.type="Sprite",void 0===Ls&&(Ls=new j,t=new ks(new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),5),Ls.setIndex([0,1,2,0,2,3]),Ls.setAttribute("position",new Fs(t,3,0,!1)),Ls.setAttribute("uv",new Fs(t,2,3,!1))),this.geometry=Ls,this.material=void 0!==e?e:new Os,this.center=new Le(.5,.5)}function Ks(e,t,n,i,r,a){zs.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(Hs.x=a*zs.x-r*zs.y,Hs.y=r*zs.x+a*zs.y):Hs.copy(zs),e.copy(t),e.x+=Hs.x,e.y+=Hs.y,e.applyMatrix4(Qs)}Ys.prototype=Object.assign(Object.create(K.prototype),{constructor:Ys,isSprite:!0,raycast:function(e,t){null===e.camera&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),Gs.setFromMatrixScale(this.matrixWorld),Qs.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),Us.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&!1===this.material.sizeAttenuation&&Gs.multiplyScalar(-Us.z);var n,i,r=this.material.rotation,r=(0!==r&&(i=Math.cos(r),n=Math.sin(r)),this.center);Ks(Vs.set(-.5,-.5,0),Us,r,Gs,n,i),Ks(js.set(.5,-.5,0),Us,r,Gs,n,i),Ks(Ws.set(.5,.5,0),Us,r,Gs,n,i),Js.set(0,0),qs.set(1,0),Xs.set(1,1),null===e.ray.intersectTriangle(Vs,js,Ws,!1,Ns)&&(Ks(js.set(-.5,.5,0),Us,r,Gs,n,i),qs.set(0,1),null===e.ray.intersectTriangle(Vs,Ws,js,!1,Ns))||(r=e.ray.origin.distanceTo(Ns))<e.near||r>e.far||t.push({distance:r,point:Ns.clone(),uv:cr.getUV(Ns,Vs,js,Ws,Js,qs,Xs,new Le),face:null,object:this})},copy:function(e){return K.prototype.copy.call(this,e),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}});var Zs=new Re,$s=new Re;function el(){K.call(this),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}}),this.autoUpdate=!0}el.prototype=Object.assign(Object.create(K.prototype),{constructor:el,isLOD:!0,copy:function(e){K.prototype.copy.call(this,e,!1);for(var t=e.levels,n=0,i=t.length;n<i;n++){var r=t[n];this.addLevel(r.object.clone(),r.distance)}return this.autoUpdate=e.autoUpdate,this},addLevel:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,t=Math.abs(t),n=this.levels,i=0;i<n.length&&!(t<n[i].distance);i++);return n.splice(i,0,{distance:t,object:e}),this.add(e),this},getCurrentLevel:function(){return this._currentLevel},getObjectForDistance:function(e){var t=this.levels;if(0<t.length){for(var n=1,i=t.length;n<i&&!(e<t[n].distance);n++);return t[n-1].object}return null},raycast:function(e,t){var n;0<this.levels.length&&(Zs.setFromMatrixPosition(this.matrixWorld),n=e.ray.origin.distanceTo(Zs),this.getObjectForDistance(n).raycast(e,t))},update:function(e){var t=this.levels;if(1<t.length){Zs.setFromMatrixPosition(e.matrixWorld),$s.setFromMatrixPosition(this.matrixWorld);var n,i,r=Zs.distanceTo($s)/e.zoom;for(t[0].object.visible=!0,n=1,i=t.length;n<i&&r>=t[n].distance;n++)t[n-1].object.visible=!1,t[n].object.visible=!0;for(this._currentLevel=n-1;n<i;n++)t[n].object.visible=!1}},toJSON:function(e){for(var t=K.prototype.toJSON.call(this,e),n=(!1===this.autoUpdate&&(t.object.autoUpdate=!1),t.object.levels=[],this.levels),i=0,r=n.length;i<r;i++){var a=n[i];t.object.levels.push({object:a.object.uuid,distance:a.distance})}return t}});var tl=new Re,nl=new Kn,il=new Kn,rl=new Re,al=new _e;function ol(e,t){e&&e.isGeometry&&console.error("THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead."),Z.call(this,e,t),this.type="SkinnedMesh",this.bindMode="attached",this.bindMatrix=new _e,this.bindMatrixInverse=new _e}function sl(){K.call(this),this.type="Bone"}ol.prototype=Object.assign(Object.create(Z.prototype),{constructor:ol,isSkinnedMesh:!0,copy:function(e){return Z.prototype.copy.call(this,e),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,this},bind:function(e,t){this.skeleton=e,void 0===t&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()},pose:function(){this.skeleton.pose()},normalizeSkinWeights:function(){for(var e=new Kn,t=this.geometry.attributes.skinWeight,n=0,i=t.count;n<i;n++){e.x=t.getX(n),e.y=t.getY(n),e.z=t.getZ(n),e.w=t.getW(n);var r=1/e.manhattanLength();r!=1/0?e.multiplyScalar(r):e.set(1,0,0,0),t.setXYZW(n,e.x,e.y,e.z,e.w)}},updateMatrixWorld:function(e){Z.prototype.updateMatrixWorld.call(this,e),"attached"===this.bindMode?this.bindMatrixInverse.copy(this.matrixWorld).invert():"detached"===this.bindMode?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)},boneTransform:function(e,t){var n=this.skeleton,i=this.geometry;nl.fromBufferAttribute(i.attributes.skinIndex,e),il.fromBufferAttribute(i.attributes.skinWeight,e),tl.fromBufferAttribute(i.attributes.position,e).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(var r=0;r<4;r++){var a,o=il.getComponent(r);0!==o&&(a=nl.getComponent(r),al.multiplyMatrices(n.bones[a].matrixWorld,n.boneInverses[a]),t.addScaledVector(rl.copy(tl).applyMatrix4(al),o))}return t.applyMatrix4(this.bindMatrixInverse)}}),sl.prototype=Object.assign(Object.create(K.prototype),{constructor:sl,isBone:!0});var ll=new _e,ul=new _e;function cl(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[];this.uuid=Be.generateUUID(),this.bones=e.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.boneTextureSize=0,this.frame=-1,this.init()}Object.assign(cl.prototype,{init:function(){var e=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(16*e.length),0===t.length)this.calculateInverses();else if(e.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(var n=0,i=this.bones.length;n<i;n++)this.boneInverses.push(new _e)}},calculateInverses:function(){for(var e=this.boneInverses.length=0,t=this.bones.length;e<t;e++){var n=new _e;this.bones[e]&&n.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(n)}},pose:function(){for(var e=0,t=this.bones.length;e<t;e++){var n=this.bones[e];n&&n.matrixWorld.copy(this.boneInverses[e]).invert()}for(var i=0,r=this.bones.length;i<r;i++){var a=this.bones[i];a&&(a.parent&&a.parent.isBone?(a.matrix.copy(a.parent.matrixWorld).invert(),a.matrix.multiply(a.matrixWorld)):a.matrix.copy(a.matrixWorld),a.matrix.decompose(a.position,a.quaternion,a.scale))}},update:function(){for(var e=this.bones,t=this.boneInverses,n=this.boneMatrices,i=this.boneTexture,r=0,a=e.length;r<a;r++){var o=e[r]?e[r].matrixWorld:ul;ll.multiplyMatrices(o,t[r]),ll.toArray(n,16*r)}null!==i&&(i.needsUpdate=!0)},clone:function(){return new cl(this.bones,this.boneInverses)},getBoneByName:function(e){for(var t=0,n=this.bones.length;t<n;t++){var i=this.bones[t];if(i.name===e)return i}},dispose:function(){null!==this.boneTexture&&(this.boneTexture.dispose(),this.boneTexture=null)},fromJSON:function(e,t){this.uuid=e.uuid;for(var n=0,i=e.bones.length;n<i;n++){var r=e.bones[n],a=t[r];void 0===a&&(console.warn("THREE.Skeleton: No bone found with UUID:",r),a=new sl),this.bones.push(a),this.boneInverses.push((new _e).fromArray(e.boneInverses[n]))}return this.init(),this},toJSON:function(){for(var e={metadata:{version:4.5,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]},t=(e.uuid=this.uuid,this.bones),n=this.boneInverses,i=0,r=t.length;i<r;i++){var a=t[i],a=(e.bones.push(a.uuid),n[i]);e.boneInverses.push(a.toArray())}return e}});var hl=new _e,dl=new _e,pl=[],fl=new Z;function ml(e,t,n){Z.call(this,e,t),this.instanceMatrix=new Q(new Float32Array(16*n),16),this.instanceColor=null,this.count=n,this.frustumCulled=!1}function vl(e){yr.call(this),this.type="LineBasicMaterial",this.color=new Me(16777215),this.linewidth=1,this.linecap="round",this.linejoin="round",this.morphTargets=!1,this.setValues(e)}ml.prototype=Object.assign(Object.create(Z.prototype),{constructor:ml,isInstancedMesh:!0,copy:function(e){return Z.prototype.copy.call(this,e),this.instanceMatrix.copy(e.instanceMatrix),this.count=e.count,this},getColorAt:function(e,t){t.fromArray(this.instanceColor.array,3*e)},getMatrixAt:function(e,t){t.fromArray(this.instanceMatrix.array,16*e)},raycast:function(e,t){var n=this.matrixWorld,i=this.count;if(fl.geometry=this.geometry,fl.material=this.material,void 0!==fl.material)for(var r=0;r<i;r++){this.getMatrixAt(r,hl),dl.multiplyMatrices(n,hl),fl.matrixWorld=dl,fl.raycast(e,pl);for(var a=0,o=pl.length;a<o;a++){var s=pl[a];s.instanceId=r,s.object=this,t.push(s)}pl.length=0}},setColorAt:function(e,t){null===this.instanceColor&&(this.instanceColor=new Q(new Float32Array(3*this.count),3)),t.toArray(this.instanceColor.array,3*e)},setMatrixAt:function(e,t){t.toArray(this.instanceMatrix.array,16*e)},updateMorphTargets:function(){},dispose:function(){this.dispatchEvent({type:"dispose"})}}),((vl.prototype=Object.create(yr.prototype)).constructor=vl).prototype.isLineBasicMaterial=!0,vl.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.morphTargets=e.morphTargets,this};var gl=new Re,Al=new Re,yl=new _e,wl=new Bi,bl=new gi;function xl(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new j,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new vl;K.call(this),this.type="Line",this.geometry=e,this.material=t,this.updateMorphTargets()}xl.prototype=Object.assign(Object.create(K.prototype),{constructor:xl,isLine:!0,copy:function(e){return K.prototype.copy.call(this,e),this.material=e.material,this.geometry=e.geometry,this},computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[0],i=1,r=t.count;i<r;i++)gl.fromBufferAttribute(t,i-1),Al.fromBufferAttribute(t,i),n[i]=n[i-1],n[i]+=gl.distanceTo(Al);e.setAttribute("lineDistance",new ne(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(e.isGeometry){var a=e.vertices,o=e.lineDistances;o[0]=0;for(var s=1,l=a.length;s<l;s++)o[s]=o[s-1],o[s]+=a[s-1].distanceTo(a[s])}return this},raycast:function(e,t){var n=this.geometry,i=this.matrixWorld,r=e.params.Line.threshold;if(null===n.boundingSphere&&n.computeBoundingSphere(),bl.copy(n.boundingSphere),bl.applyMatrix4(i),bl.radius+=r,!1!==e.ray.intersectsSphere(bl)){yl.copy(i).invert(),wl.copy(e.ray).applyMatrix4(yl);var i=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=i*i,o=new Re,s=new Re,l=new Re,u=new Re,c=this.isLineSegments?2:1;if(n.isBufferGeometry){var r=n.index,h=n.attributes.position;if(null!==r)for(var d=r.array,p=0,f=d.length-1;p<f;p+=c){var m=d[p],v=d[p+1];o.fromBufferAttribute(h,m),s.fromBufferAttribute(h,v),a<wl.distanceSqToSegment(o,s,u,l)||(u.applyMatrix4(this.matrixWorld),(m=e.ray.origin.distanceTo(u))<e.near)||m>e.far||t.push({distance:m,point:l.clone().applyMatrix4(this.matrixWorld),index:p,face:null,faceIndex:null,object:this})}else for(var g,A=0,y=h.count-1;A<y;A+=c)o.fromBufferAttribute(h,A),s.fromBufferAttribute(h,A+1),a<wl.distanceSqToSegment(o,s,u,l)||(u.applyMatrix4(this.matrixWorld),(g=e.ray.origin.distanceTo(u))<e.near)||g>e.far||t.push({distance:g,point:l.clone().applyMatrix4(this.matrixWorld),index:A,face:null,faceIndex:null,object:this})}else if(n.isGeometry)for(var w,b=n.vertices,x=b.length,E=0;E<x-1;E+=c)a<wl.distanceSqToSegment(b[E],b[E+1],u,l)||(u.applyMatrix4(this.matrixWorld),(w=e.ray.origin.distanceTo(u))<e.near)||w>e.far||t.push({distance:w,point:l.clone().applyMatrix4(this.matrixWorld),index:E,face:null,faceIndex:null,object:this})}},updateMorphTargets:function(){var e=this.geometry;if(e.isBufferGeometry){var t=e.morphAttributes,n=Object.keys(t);if(0<n.length){var i=t[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r<a;r++){var o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}else{t=e.morphTargets;void 0!==t&&0<t.length&&console.error("THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}});var El=new Re,Cl=new Re;function Bl(e,t){xl.call(this,e,t),this.type="LineSegments"}function _l(e,t){xl.call(this,e,t),this.type="LineLoop"}function Ml(e){yr.call(this),this.type="PointsMaterial",this.color=new Me(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.morphTargets=!1,this.setValues(e)}Bl.prototype=Object.assign(Object.create(xl.prototype),{constructor:Bl,isLineSegments:!0,computeLineDistances:function(){var e=this.geometry;if(e.isBufferGeometry)if(null===e.index){for(var t=e.attributes.position,n=[],i=0,r=t.count;i<r;i+=2)El.fromBufferAttribute(t,i),Cl.fromBufferAttribute(t,i+1),n[i]=0===i?0:n[i-1],n[i+1]=n[i]+El.distanceTo(Cl);e.setAttribute("lineDistance",new ne(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");else if(e.isGeometry)for(var a=e.vertices,o=e.lineDistances,s=0,l=a.length;s<l;s+=2)El.copy(a[s]),Cl.copy(a[s+1]),o[s]=0===s?0:o[s-1],o[s+1]=o[s]+El.distanceTo(Cl);return this}}),_l.prototype=Object.assign(Object.create(xl.prototype),{constructor:_l,isLineLoop:!0}),((Ml.prototype=Object.create(yr.prototype)).constructor=Ml).prototype.isPointsMaterial=!0,Ml.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.morphTargets=e.morphTargets,this};var Tl=new _e,Sl=new Bi,Il=new gi,Dl=new Re;function Pl(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new j,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Ml;K.call(this),this.type="Points",this.geometry=e,this.material=t,this.updateMorphTargets()}function kl(e,t,n,i,r,a,o){var s=Sl.distanceSqToPoint(e);s<n&&(n=new Re,Sl.closestPointToPoint(e,n),n.applyMatrix4(i),(e=r.ray.origin.distanceTo(n))<r.near||e>r.far||a.push({distance:e,distanceToRay:Math.sqrt(s),point:n,index:t,face:null,object:o}))}function Ll(t,e,n,i,r,a,o,s,l){Xn.call(this,t,e,n,i,r,a,o,s,l),this.format=void 0!==o?o:Tt,this.minFilter=void 0!==a?a:U,this.magFilter=void 0!==r?r:U,this.generateMipmaps=!1;var u=this;"requestVideoFrameCallback"in t&&t.requestVideoFrameCallback(function e(){u.needsUpdate=!0,t.requestVideoFrameCallback(e)})}function Rl(e,t,n,i,r,a,o,s,l,u,c,h){Xn.call(this,null,a,o,s,l,u,i,r,c,h),this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}function Fl(e,t,n,i,r,a,o,s,l){Xn.call(this,e,t,n,i,r,a,o,s,l),this.needsUpdate=!0}function Ol(e,t,n,i,r,a,o,s,l,u){if((u=void 0!==u?u:kt)!==kt&&u!==Lt)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");Xn.call(this,null,i,r,a,o,s,u,n=void 0===(n=void 0===n&&u===kt?At:n)&&u===Lt?_t:n,l),this.image={width:e,height:t},this.magFilter=void 0!==o?o:ut,this.minFilter=void 0!==s?s:ut,this.flipY=!1,this.generateMipmaps=!1}Pl.prototype=Object.assign(Object.create(K.prototype),{constructor:Pl,isPoints:!0,copy:function(e){return K.prototype.copy.call(this,e),this.material=e.material,this.geometry=e.geometry,this},raycast:function(e,t){var n=this.geometry,i=this.matrixWorld,r=e.params.Points.threshold;if(null===n.boundingSphere&&n.computeBoundingSphere(),Il.copy(n.boundingSphere),Il.applyMatrix4(i),Il.radius+=r,!1!==e.ray.intersectsSphere(Il)){Tl.copy(i).invert(),Sl.copy(e.ray).applyMatrix4(Tl);var r=r/((this.scale.x+this.scale.y+this.scale.z)/3),a=r*r;if(n.isBufferGeometry){var r=n.index,o=n.attributes.position;if(null!==r)for(var s=r.array,l=0,u=s.length;l<u;l++){var c=s[l];Dl.fromBufferAttribute(o,c),kl(Dl,c,a,i,e,t,this)}else for(var h=0,d=o.count;h<d;h++)Dl.fromBufferAttribute(o,h),kl(Dl,h,a,i,e,t,this)}else for(var p=n.vertices,f=0,m=p.length;f<m;f++)kl(p[f],f,a,i,e,t,this)}},updateMorphTargets:function(){var e=this.geometry;if(e.isBufferGeometry){var t=e.morphAttributes,n=Object.keys(t);if(0<n.length){var i=t[n[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(var r=0,a=i.length;r<a;r++){var o=i[r].name||String(r);this.morphTargetInfluences.push(0),this.morphTargetDictionary[o]=r}}}}else{t=e.morphTargets;void 0!==t&&0<t.length&&console.error("THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.")}}}),Ll.prototype=Object.assign(Object.create(Xn.prototype),{constructor:Ll,clone:function(){return new this.constructor(this.image).copy(this)},isVideoTexture:!0,update:function(){var e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}),((Rl.prototype=Object.create(Xn.prototype)).constructor=Rl).prototype.isCompressedTexture=!0,((Fl.prototype=Object.create(Xn.prototype)).constructor=Fl).prototype.isCanvasTexture=!0,((Ol.prototype=Object.create(Xn.prototype)).constructor=Ol).prototype.isDepthTexture=!0;var Nl=0,Gl=new _e,Ul=new K,zl=new Re;function Hl(){Object.defineProperty(this,"id",{value:Nl+=2}),this.uuid=Be.generateUUID(),this.name="",this.type="Geometry",this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.elementsNeedUpdate=!1,this.verticesNeedUpdate=!1,this.uvsNeedUpdate=!1,this.normalsNeedUpdate=!1,this.colorsNeedUpdate=!1,this.lineDistancesNeedUpdate=!1,this.groupsNeedUpdate=!1}Hl.prototype=Object.assign(Object.create(zn.prototype),{constructor:Hl,isGeometry:!0,applyMatrix4:function(e){for(var t=(new Wn).getNormalMatrix(e),n=0,i=this.vertices.length;n<i;n++)this.vertices[n].applyMatrix4(e);for(var r=0,a=this.faces.length;r<a;r++){var o=this.faces[r];o.normal.applyMatrix3(t).normalize();for(var s=0,l=o.vertexNormals.length;s<l;s++)o.vertexNormals[s].applyMatrix3(t).normalize()}return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this.verticesNeedUpdate=!0,this.normalsNeedUpdate=!0,this},rotateX:function(e){return Gl.makeRotationX(e),this.applyMatrix4(Gl),this},rotateY:function(e){return Gl.makeRotationY(e),this.applyMatrix4(Gl),this},rotateZ:function(e){return Gl.makeRotationZ(e),this.applyMatrix4(Gl),this},translate:function(e,t,n){return Gl.makeTranslation(e,t,n),this.applyMatrix4(Gl),this},scale:function(e,t,n){return Gl.makeScale(e,t,n),this.applyMatrix4(Gl),this},lookAt:function(e){return Ul.lookAt(e),Ul.updateMatrix(),this.applyMatrix4(Ul.matrix),this},fromBufferGeometry:function(e){var o=this,t=null!==e.index?e.index:void 0,n=e.attributes;if(void 0===n.position)console.error("THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.");else{var i=n.position,s=n.normal,l=n.color,u=n.uv,c=n.uv2;void 0!==c&&(this.faceVertexUvs[1]=[]);for(var r=0;r<i.count;r++)o.vertices.push((new Re).fromBufferAttribute(i,r)),void 0!==l&&o.colors.push((new Me).fromBufferAttribute(l,r));var a=e.groups;if(0<a.length)for(var h=0;h<a.length;h++)for(var d=a[h],p=d.start,f=p,m=p+d.count;f<m;f+=3)void 0!==t?A(t.getX(f),t.getX(f+1),t.getX(f+2),d.materialIndex):A(f,f+1,f+2,d.materialIndex);else if(void 0!==t)for(var v=0;v<t.count;v+=3)A(t.getX(v),t.getX(v+1),t.getX(v+2));else for(var g=0;g<i.count;g+=3)A(g,g+1,g+2);this.computeFaceNormals(),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone()),null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone())}return this;function A(e,t,n,i){var r=void 0===l?[]:[o.colors[e].clone(),o.colors[t].clone(),o.colors[n].clone()],a=void 0===s?[]:[(new Re).fromBufferAttribute(s,e),(new Re).fromBufferAttribute(s,t),(new Re).fromBufferAttribute(s,n)],a=new gr(e,t,n,a,r,i);o.faces.push(a),void 0!==u&&o.faceVertexUvs[0].push([(new Le).fromBufferAttribute(u,e),(new Le).fromBufferAttribute(u,t),(new Le).fromBufferAttribute(u,n)]),void 0!==c&&o.faceVertexUvs[1].push([(new Le).fromBufferAttribute(c,e),(new Le).fromBufferAttribute(c,t),(new Le).fromBufferAttribute(c,n)])}},center:function(){return this.computeBoundingBox(),this.boundingBox.getCenter(zl).negate(),this.translate(zl.x,zl.y,zl.z),this},normalize:function(){this.computeBoundingSphere();var e=this.boundingSphere.center,t=this.boundingSphere.radius,t=0===t?1:1/t,n=new _e;return n.set(t,0,0,-t*e.x,0,t,0,-t*e.y,0,0,t,-t*e.z,0,0,0,1),this.applyMatrix4(n),this},computeFaceNormals:function(){for(var e=new Re,t=new Re,n=0,i=this.faces.length;n<i;n++){var r=this.faces[n],a=this.vertices[r.a],o=this.vertices[r.b],s=this.vertices[r.c];e.subVectors(s,o),t.subVectors(a,o),e.cross(t),e.normalize(),r.normal.copy(e)}},computeVertexNormals:function(){for(var e=!(0<arguments.length&&void 0!==arguments[0])||arguments[0],t=new Array(this.vertices.length),n=0,i=this.vertices.length;n<i;n++)t[n]=new Re;if(e)for(var r=new Re,a=new Re,o=0,s=this.faces.length;o<s;o++){var l=this.faces[o],u=this.vertices[l.a],c=this.vertices[l.b],h=this.vertices[l.c];r.subVectors(h,c),a.subVectors(u,c),r.cross(a),t[l.a].add(r),t[l.b].add(r),t[l.c].add(r)}else{this.computeFaceNormals();for(var d=0,p=this.faces.length;d<p;d++){var f=this.faces[d];t[f.a].add(f.normal),t[f.b].add(f.normal),t[f.c].add(f.normal)}}for(var m=0,v=this.vertices.length;m<v;m++)t[m].normalize();for(var g=0,A=this.faces.length;g<A;g++){var y=this.faces[g],w=y.vertexNormals;3===w.length?(w[0].copy(t[y.a]),w[1].copy(t[y.b]),w[2].copy(t[y.c])):(w[0]=t[y.a].clone(),w[1]=t[y.b].clone(),w[2]=t[y.c].clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){this.computeFaceNormals();for(var e=0,t=this.faces.length;e<t;e++){var n=this.faces[e],i=n.vertexNormals;3===i.length?(i[0].copy(n.normal),i[1].copy(n.normal),i[2].copy(n.normal)):(i[0]=n.normal.clone(),i[1]=n.normal.clone(),i[2]=n.normal.clone())}0<this.faces.length&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){for(var e=0,t=this.faces.length;e<t;e++){var n=this.faces[e];n.__originalFaceNormal?n.__originalFaceNormal.copy(n.normal):n.__originalFaceNormal=n.normal.clone(),n.__originalVertexNormals||(n.__originalVertexNormals=[]);for(var i=0,r=n.vertexNormals.length;i<r;i++)n.__originalVertexNormals[i]?n.__originalVertexNormals[i].copy(n.vertexNormals[i]):n.__originalVertexNormals[i]=n.vertexNormals[i].clone()}var a=new Hl;a.faces=this.faces;for(var o=0,s=this.morphTargets.length;o<s;o++){if(!this.morphNormals[o]){this.morphNormals[o]={},this.morphNormals[o].faceNormals=[],this.morphNormals[o].vertexNormals=[];for(var l=this.morphNormals[o].faceNormals,u=this.morphNormals[o].vertexNormals,c=0,h=this.faces.length;c<h;c++){var d=new Re,p={a:new Re,b:new Re,c:new Re};l.push(d),u.push(p)}}var f=this.morphNormals[o];a.vertices=this.morphTargets[o].vertices,a.computeFaceNormals(),a.computeVertexNormals();for(var m=0,v=this.faces.length;m<v;m++){var g=this.faces[m],A=f.faceNormals[m],y=f.vertexNormals[m];A.copy(g.normal),y.a.copy(g.vertexNormals[0]),y.b.copy(g.vertexNormals[1]),y.c.copy(g.vertexNormals[2])}}for(var w=0,b=this.faces.length;w<b;w++){var x=this.faces[w];x.normal=x.__originalFaceNormal,x.vertexNormals=x.__originalVertexNormals}},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Y),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new gi),this.boundingSphere.setFromPoints(this.vertices)},merge:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;if(e&&e.isGeometry){var i,r=this.vertices.length,a=this.vertices,o=e.vertices,s=this.faces,l=e.faces,u=this.colors,c=e.colors;void 0!==t&&(i=(new Wn).getNormalMatrix(t));for(var h=0,d=o.length;h<d;h++){var p=o[h].clone();void 0!==t&&p.applyMatrix4(t),a.push(p)}for(var f=0,m=c.length;f<m;f++)u.push(c[f].clone());for(var v=0,g=l.length;v<g;v++){var A=l[v],y=void 0,w=void 0,b=A.vertexNormals,x=A.vertexColors,E=new gr(A.a+r,A.b+r,A.c+r);E.normal.copy(A.normal),void 0!==i&&E.normal.applyMatrix3(i).normalize();for(var C=0,B=b.length;C<B;C++)y=b[C].clone(),void 0!==i&&y.applyMatrix3(i).normalize(),E.vertexNormals.push(y);E.color.copy(A.color);for(var _=0,M=x.length;_<M;_++)w=x[_],E.vertexColors.push(w.clone());E.materialIndex=A.materialIndex+n,s.push(E)}for(var T=0,S=e.faceVertexUvs.length;T<S;T++){var I=e.faceVertexUvs[T];void 0===this.faceVertexUvs[T]&&(this.faceVertexUvs[T]=[]);for(var D=0,R=I.length;D<R;D++){for(var P=I[D],k=[],L=0,F=P.length;L<F;L++)k.push(P[L].clone());this.faceVertexUvs[T].push(k)}}}else console.error("THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.",e)},mergeMesh:function(e){e&&e.isMesh?(e.matrixAutoUpdate&&e.updateMatrix(),this.merge(e.geometry,e.matrix)):console.error("THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.",e)},mergeVertices:function(){for(var e={},t=[],n=[],i=Math.pow(10,0<arguments.length&&void 0!==arguments[0]?arguments[0]:4),r=0,a=this.vertices.length;r<a;r++){var o=this.vertices[r],o=Math.round(o.x*i)+"_"+Math.round(o.y*i)+"_"+Math.round(o.z*i);void 0===e[o]?(e[o]=r,t.push(this.vertices[r]),n[r]=t.length-1):n[r]=n[e[o]]}for(var s=[],l=0,u=this.faces.length;l<u;l++)for(var c=this.faces[l],h=(c.a=n[c.a],c.b=n[c.b],c.c=n[c.c],[c.a,c.b,c.c]),d=0;d<3;d++)if(h[d]===h[(d+1)%3]){s.push(l);break}for(var p=s.length-1;0<=p;p--){var f=s[p];this.faces.splice(f,1);for(var m=0,v=this.faceVertexUvs.length;m<v;m++)this.faceVertexUvs[m].splice(f,1)}var g=this.vertices.length-t.length;return this.vertices=t,g},setFromPoints:function(e){this.vertices=[];for(var t=0,n=e.length;t<n;t++){var i=e[t];this.vertices.push(new Re(i.x,i.y,i.z||0))}return this},sortFacesByMaterialIndex:function(){for(var e=this.faces,t=e.length,n=0;n<t;n++)e[n]._id=n;e.sort(function(e,t){return e.materialIndex-t.materialIndex});var i,r,a=this.faceVertexUvs[0],o=this.faceVertexUvs[1];a&&a.length===t&&(i=[]),o&&o.length===t&&(r=[]);for(var s=0;s<t;s++){var l=e[s]._id;i&&i.push(a[l]),r&&r.push(o[l])}i&&(this.faceVertexUvs[0]=i),r&&(this.faceVertexUvs[1]=r)},toJSON:function(){var e={metadata:{version:4.5,type:"Geometry",generator:"Geometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,""!==this.name&&(e.name=this.name),void 0!==this.parameters){var t,n=this.parameters;for(t in n)void 0!==n[t]&&(e[t]=n[t])}else{for(var i=[],r=0;r<this.vertices.length;r++){var a=this.vertices[r];i.push(a.x,a.y,a.z)}for(var o=[],s=[],l={},u=[],c={},h=[],d={},p=0;p<this.faces.length;p++){var f,m=this.faces[p],v=void 0!==this.faceVertexUvs[0][p],g=0<m.normal.length(),A=0<m.vertexNormals.length,y=1!==m.color.r||1!==m.color.g||1!==m.color.b,w=0<m.vertexColors.length;f=b(2,3,v),f=b(f,4,g),f=b(f,5,A),f=b(f,6,y),f=b(f,7,w),o.push(f),o.push(m.a,m.b,m.c),o.push(m.materialIndex),v&&(f=this.faceVertexUvs[0][p],o.push(C(f[0]),C(f[1]),C(f[2]))),g&&o.push(x(m.normal)),A&&(v=m.vertexNormals,o.push(x(v[0]),x(v[1]),x(v[2]))),y&&o.push(E(m.color)),w&&(f=m.vertexColors,o.push(E(f[0]),E(f[1]),E(f[2])))}e.data={},e.data.vertices=i,e.data.normals=s,0<u.length&&(e.data.colors=u),0<h.length&&(e.data.uvs=[h]),e.data.faces=o}return e;function b(e,t,n){return n?e|1<<t:e&~(1<<t)}function x(e){var t=e.x.toString()+e.y.toString()+e.z.toString();return void 0===l[t]&&(l[t]=s.length/3,s.push(e.x,e.y,e.z)),l[t]}function E(e){var t=e.r.toString()+e.g.toString()+e.b.toString();return void 0===c[t]&&(c[t]=u.length,u.push(e.getHex())),c[t]}function C(e){var t=e.x.toString()+e.y.toString();return void 0===d[t]&&(d[t]=h.length/2,h.push(e.x,e.y)),d[t]}},clone:function(){return(new Hl).copy(this)},copy:function(e){this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=e.name;for(var t=e.vertices,n=0,i=t.length;n<i;n++)this.vertices.push(t[n].clone());for(var r=e.colors,a=0,o=r.length;a<o;a++)this.colors.push(r[a].clone());for(var s=e.faces,l=0,u=s.length;l<u;l++)this.faces.push(s[l].clone());for(var c=0,h=e.faceVertexUvs.length;c<h;c++){var d=e.faceVertexUvs[c];void 0===this.faceVertexUvs[c]&&(this.faceVertexUvs[c]=[]);for(var p=0,F=d.length;p<F;p++){for(var f=d[p],m=[],v=0,O=f.length;v<O;v++){var N=f[v];m.push(N.clone())}this.faceVertexUvs[c].push(m)}}for(var g=e.morphTargets,A=0,G=g.length;A<G;A++){var y={};if(y.name=g[A].name,void 0!==g[A].vertices){y.vertices=[];for(var w=0,U=g[A].vertices.length;w<U;w++)y.vertices.push(g[A].vertices[w].clone())}if(void 0!==g[A].normals){y.normals=[];for(var b=0,z=g[A].normals.length;b<z;b++)y.normals.push(g[A].normals[b].clone())}this.morphTargets.push(y)}for(var x=e.morphNormals,E=0,H=x.length;E<H;E++){var C={};if(void 0!==x[E].vertexNormals){C.vertexNormals=[];for(var B=0,Q=x[E].vertexNormals.length;B<Q;B++){var _=x[E].vertexNormals[B],M={};M.a=_.a.clone(),M.b=_.b.clone(),M.c=_.c.clone(),C.vertexNormals.push(M)}}if(void 0!==x[E].faceNormals){C.faceNormals=[];for(var T=0,V=x[E].faceNormals.length;T<V;T++)C.faceNormals.push(x[E].faceNormals[T].clone())}this.morphNormals.push(C)}for(var S=e.skinWeights,I=0,j=S.length;I<j;I++)this.skinWeights.push(S[I].clone());for(var D=e.skinIndices,P=0,W=D.length;P<W;P++)this.skinIndices.push(D[P].clone());for(var k=e.lineDistances,L=0,J=k.length;L<J;L++)this.lineDistances.push(k[L]);var R=e.boundingBox,R=(null!==R&&(this.boundingBox=R.clone()),e.boundingSphere);return null!==R&&(this.boundingSphere=R.clone()),this.elementsNeedUpdate=e.elementsNeedUpdate,this.verticesNeedUpdate=e.verticesNeedUpdate,this.uvsNeedUpdate=e.uvsNeedUpdate,this.normalsNeedUpdate=e.normalsNeedUpdate,this.colorsNeedUpdate=e.colorsNeedUpdate,this.lineDistancesNeedUpdate=e.lineDistancesNeedUpdate,this.groupsNeedUpdate=e.groupsNeedUpdate,this},dispose:function(){this.dispatchEvent({type:"dispose"})}});var Ql=function(){y(l,Hl);var s=C(l);function l(e,t,n,i,r,a){var o;return te(this,l),(o=s.call(this)).type="BoxGeometry",o.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a},o.fromBufferGeometry(new sa(e,t,n,i,r,a)),o.mergeVertices(),o}return A(l)}(),Vl=function(){y(v,j);var m=C(v);function v(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:8,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2*Math.PI,a=(te(this,v),(e=m.call(this)).type="CircleBufferGeometry",e.parameters={radius:t,segments:n,thetaStart:i,thetaLength:r},n=Math.max(3,n),[]),o=[],s=[],l=[],u=new Re,c=new Le;o.push(0,0,0),s.push(0,0,1),l.push(.5,.5);for(var h=0,d=3;h<=n;h++,d+=3){var p=i+h/n*r;u.x=t*Math.cos(p),u.y=t*Math.sin(p),o.push(u.x,u.y,u.z),s.push(0,0,1),c.x=(o[d]/t+1)/2,c.y=(o[d+1]/t+1)/2,l.push(c.x,c.y)}for(var f=1;f<=n;f++)a.push(f,f+1,0);return e.setIndex(a),e.setAttribute("position",new ne(o,3)),e.setAttribute("normal",new ne(s,3)),e.setAttribute("uv",new ne(l,2)),e}return A(v)}(),jl=function(){y(o,Hl);var a=C(o);function o(e,t,n,i){var r;return te(this,o),(r=a.call(this)).type="CircleGeometry",r.parameters={radius:e,segments:t,thetaStart:n,thetaLength:i},r.fromBufferGeometry(new Vl(e,t,n,i)),r.mergeVertices(),r}return A(o)}(),Wl=function(){y(N,j);var O=C(N);function N(){for(var e,m=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,v=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,t=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,g=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8,n=4<arguments.length&&void 0!==arguments[4]?arguments[4]:1,i=5<arguments.length&&void 0!==arguments[5]&&arguments[5],A=6<arguments.length&&void 0!==arguments[6]?arguments[6]:0,y=7<arguments.length&&void 0!==arguments[7]?arguments[7]:2*Math.PI,w=(te(this,N),(e=O.call(this)).type="CylinderBufferGeometry",e.parameters={radiusTop:m,radiusBottom:v,height:t,radialSegments:g,heightSegments:n,openEnded:i,thetaStart:A,thetaLength:y},G(e)),g=Math.floor(g),n=Math.floor(n),b=[],x=[],E=[],C=[],B=0,r=[],_=t/2,M=0,a=new Re,o=new Re,s=0,l=(v-m)/t,u=0;u<=n;u++){for(var c=[],h=u/n,d=h*(v-m)+m,p=0;p<=g;p++){var f=p/g,T=f*y+A,S=Math.sin(T),T=Math.cos(T);o.x=d*S,o.y=-h*t+_,o.z=d*T,x.push(o.x,o.y,o.z),a.set(S,l,T).normalize(),E.push(a.x,a.y,a.z),C.push(f,1-h),c.push(B++)}r.push(c)}for(var I=0;I<g;I++)for(var D=0;D<n;D++){var R=r[D][I],P=r[D+1][I],F=r[D+1][I+1],k=r[D][I+1];b.push(R,P,k),b.push(P,F,k),s+=6}function L(e){for(var t=B,n=new Le,i=new Re,r=0,a=!0===e?m:v,o=!0===e?1:-1,s=1;s<=g;s++)x.push(0,_*o,0),E.push(0,o,0),C.push(.5,.5),B++;for(var l=B,u=0;u<=g;u++){var c=u/g*y+A,h=Math.cos(c),c=Math.sin(c);i.x=a*c,i.y=_*o,i.z=a*h,x.push(i.x,i.y,i.z),E.push(0,o,0),n.x=.5*h+.5,n.y=.5*c*o+.5,C.push(n.x,n.y),B++}for(var d=0;d<g;d++){var p=t+d,f=l+d;!0===e?b.push(f,f+1,p):b.push(f+1,f,p),r+=3}w.addGroup(M,r,!0===e?1:2),M+=r}return w.addGroup(M,s,0),M+=s,!1===i&&(0<m&&L(!0),0<v)&&L(!1),e.setIndex(b),e.setAttribute("position",new ne(x,3)),e.setAttribute("normal",new ne(E,3)),e.setAttribute("uv",new ne(C,2)),e}return A(N)}(),Jl=function(){y(c,Hl);var u=C(c);function c(e,t,n,i,r,a,o,s){var l;return te(this,c),(l=u.call(this)).type="CylinderGeometry",l.parameters={radiusTop:e,radiusBottom:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:s},l.fromBufferGeometry(new Wl(e,t,n,i,r,a,o,s)),l.mergeVertices(),l}return A(c)}(),ql=function(){y(u,Jl);var l=C(u);function u(e,t,n,i,r,a,o){var s;return te(this,u),(s=l.call(this,0,e,t,n,i,r,a,o)).type="ConeGeometry",s.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:o},s}return A(u)}(),Xl=function(){y(u,Wl);var l=C(u);function u(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=4<arguments.length&&void 0!==arguments[4]&&arguments[4],o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0,s=6<arguments.length&&void 0!==arguments[6]?arguments[6]:2*Math.PI;return te(this,u),(e=l.call(this,0,t,n,i,r,a,o,s)).type="ConeBufferGeometry",e.parameters={radius:t,height:n,radialSegments:i,heightSegments:r,openEnded:a,thetaStart:o,thetaLength:s},e}return A(u)}(),Yl=function(){y(ee,j);var $=C(ee);function ee(n,e){for(var t,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=(te(this,ee),(t=$.call(this)).type="PolyhedronBufferGeometry",t.parameters={vertices:n,indices:e,radius:i,detail:r},[]),o=[],R=r,F=new Re,O=new Re,N=new Re,s=0;s<e.length;s+=3){k(e[s+0],F),k(e[s+1],O),k(e[s+2],N),g=v=m=f=p=H=d=h=c=u=z=l=U=G=void 0;for(var G=F,U=O,l=N,z=R,u=z+1,c=[],h=0;h<=u;h++){c[h]=[];for(var d=G.clone().lerp(l,h/u),H=U.clone().lerp(l,h/u),p=u-h,f=0;f<=p;f++)c[h][f]=0===f&&h===u?d:d.clone().lerp(H,f/p)}for(var m=0;m<u;m++)for(var v=0;v<2*(u-m)-1;v++){var g=Math.floor(v/2);v%2==0?(P(c[m][g+1]),P(c[m+1][g]),P(c[m][g])):(P(c[m][g+1]),P(c[m+1][g+1]),P(c[m+1][g]))}}for(var Q=i,A=new Re,y=0;y<a.length;y+=3)A.x=a[y+0],A.y=a[y+1],A.z=a[y+2],A.normalize().multiplyScalar(Q),a[y+0]=A.x,a[y+1]=A.y,a[y+2]=A.z;for(var w=new Re,b=0;b<a.length;b+=3){w.x=a[b+0],w.y=a[b+1],w.z=a[b+2];var V=Z(w)/2/Math.PI+.5,j=function(e){return Math.atan2(-e.y,Math.sqrt(e.x*e.x+e.z*e.z))}(w)/Math.PI+.5;o.push(V,1-j)}for(var x=new Re,E=new Re,C=new Re,W=new Re,J=new Le,q=new Le,X=new Le,B=0,_=0;B<a.length;B+=9,_+=6){x.set(a[B+0],a[B+1],a[B+2]),E.set(a[B+3],a[B+4],a[B+5]),C.set(a[B+6],a[B+7],a[B+8]),J.set(o[_+0],o[_+1]),q.set(o[_+2],o[_+3]),X.set(o[_+4],o[_+5]),W.copy(x).add(E).add(C).divideScalar(3);var M=Z(W);L(J,_+0,x,M),L(q,_+2,E,M),L(X,_+4,C,M)}for(var T=0;T<o.length;T+=6){var S=o[T+0],I=o[T+2],D=o[T+4],Y=Math.max(S,I,D),K=Math.min(S,I,D);.9<Y&&K<.1&&(S<.2&&(o[T+0]+=1),I<.2&&(o[T+2]+=1),D<.2)&&(o[T+4]+=1)}function P(e){a.push(e.x,e.y,e.z)}function k(e,t){e*=3;t.x=n[0+e],t.y=n[1+e],t.z=n[2+e]}function L(e,t,n,i){i<0&&1===e.x&&(o[t]=e.x-1),0===n.x&&0===n.z&&(o[t]=i/2/Math.PI+.5)}function Z(e){return Math.atan2(e.z,-e.x)}return t.setAttribute("position",new ne(a,3)),t.setAttribute("normal",new ne(a.slice(),3)),t.setAttribute("uv",new ne(o,2)),0===r?t.computeVertexNormals():t.normalizeNormals(),t}return A(ee)}(),Kl=function(){y(a,Yl);var r=C(a);function a(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(te(this,a),(1+Math.sqrt(5))/2),i=1/n,n=r.call(this,[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t);return n.type="DodecahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return A(a)}(),Zl=function(){y(r,Hl);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).type="DodecahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Kl(e,t)),n.mergeVertices(),n}return A(r)}(),$l=new Re,eu=new Re,tu=new Re,nu=new cr,iu=function(){y(T,j);var M=C(T);function T(e,t){te(this,T),(n=M.call(this)).type="EdgesGeometry",n.parameters={thresholdAngle:t},t=void 0!==t?t:1,e.isGeometry&&(e=(new j).fromGeometry(e));for(var n,i,r,a,o=Math.pow(10,4),s=Math.cos(Be.DEG2RAD*t),l=e.getIndex(),u=e.getAttribute("position"),c=(l||u).count,h=[0,0,0],d=["a","b","c"],p=new Array(3),f={},m=[],v=0;v<c;v+=3){l?(h[0]=l.getX(v),h[1]=l.getX(v+1),h[2]=l.getX(v+2)):(h[0]=v,h[1]=v+1,h[2]=v+2);var g=nu.a,A=nu.b,y=nu.c;if(g.fromBufferAttribute(u,h[0]),A.fromBufferAttribute(u,h[1]),y.fromBufferAttribute(u,h[2]),nu.getNormal(tu),p[0]="".concat(Math.round(g.x*o),",").concat(Math.round(g.y*o),",").concat(Math.round(g.z*o)),p[1]="".concat(Math.round(A.x*o),",").concat(Math.round(A.y*o),",").concat(Math.round(A.z*o)),p[2]="".concat(Math.round(y.x*o),",").concat(Math.round(y.y*o),",").concat(Math.round(y.z*o)),p[0]!==p[1]&&p[1]!==p[2]&&p[2]!==p[0])for(var w=0;w<3;w++){var b=(w+1)%3,x=p[w],E=p[b],C=nu[d[w]],B=nu[d[b]],_="".concat(x,"_").concat(E),E="".concat(E,"_").concat(x);E in f&&f[E]?(tu.dot(f[E].normal)<=s&&(m.push(C.x,C.y,C.z),m.push(B.x,B.y,B.z)),f[E]=null):_ in f||(f[_]={index0:h[w],index1:h[b],normal:tu.clone()})}}for(i in f)f[i]&&(r=(a=f[i]).index0,a=a.index1,$l.fromBufferAttribute(u,r),eu.fromBufferAttribute(u,a),m.push($l.x,$l.y,$l.z),m.push(eu.x,eu.y,eu.z));return n.setAttribute("position",new ne(m,3)),n}return A(T)}(),ru=function(e,t,n){n=n||2;var i,r,a,o,s,l=t&&t.length,u=l?t[0]*n:e.length,c=au(e,0,u,n,!0),h=[];if(c&&c.next!==c.prev){if(l&&(c=function(e,t,n,i){var r,a,o,s,l=[];for(r=0,a=t.length;r<a;r++)s=t[r]*i,o=r<a-1?t[r+1]*i:e.length,(s=au(e,s,o,i,!1))===s.next&&(s.steiner=!0),l.push(function(e){var t=e,n=e;for(;(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next,t!==e;);return n}(s));for(l.sort(lu),r=0;r<l.length;r++)!function(e,t){(t=function(e,t){var n,i=t,r=e.x,a=e.y,o=-1/0;do{if(a<=i.y&&a>=i.next.y&&i.next.y!==i.y){var s=i.x+(a-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(s<=r&&o<s){if((o=s)===r){if(a===i.y)return i;if(a===i.next.y)return i.next}n=i.x<i.next.x?i:i.next}}}while(i=i.next,i!==t);if(!n)return null;if(r!==o){var l,u=n,c=n.x,h=n.y,d=1/0;for(i=n;r>=i.x&&i.x>=c&&r!==i.x&&cu(a<h?r:o,a,c,h,a<h?o:r,a,i.x,i.y)&&(l=Math.abs(a-i.y)/(r-i.x),vu(i,e))&&(l<d||l===d&&(i.x>n.x||i.x===n.x&&function(e,t){return hu(e.prev,e,t.prev)<0&&hu(t.next,e,e.next)<0}(n,i)))&&(n=i,d=l),(i=i.next)!==u;);}return n}(e,t))&&(e=gu(t,e),ou(t,t.next),ou(e,e.next))}(l[r],n),n=ou(n,n.next);return n}(e,t,c,n)),e.length>80*n){for(var d=i=e[0],p=r=e[1],f=n;f<u;f+=n)(a=e[f])<d&&(d=a),(o=e[f+1])<p&&(p=o),i<a&&(i=a),r<o&&(r=o);s=0!==(s=Math.max(i-d,r-p))?1/s:0}su(c,h,n,d,p,s)}return h};function au(e,t,n,i,r){var a,o;if(r===0<function(e,t,n,i){for(var r=0,a=t,o=n-i;a<n;a+=i)r+=(e[o]-e[a])*(e[a+1]+e[o+1]),o=a;return r}(e,t,n,i))for(a=t;a<n;a+=i)o=Au(a,e[a],e[a+1],o);else for(a=n-i;t<=a;a-=i)o=Au(a,e[a],e[a+1],o);return o&&du(o,o.next)&&(yu(o),o=o.next),o}function ou(e,t){if(!e)return e;t=t||e;var n,i=e;do{if(n=!1,i.steiner||!du(i,i.next)&&0!==hu(i.prev,i,i.next))i=i.next;else{if(yu(i),(i=t=i.prev)===i.next)break;n=!0}}while(n||i!==t);return t}function su(e,t,n,i,r,a,o){if(e){if(!o&&a){for(var s=e,l=i,u=r,c=a,h=s;null===h.z&&(h.z=uu(h.x,h.y,l,u,c)),h.prevZ=h.prev,h.nextZ=h.next,(h=h.next)!==s;);h.prevZ.nextZ=null,h.prevZ=null;var d,p,f,m,v,g,A,y,w=h,b=1;do{for(p=w,v=w=null,g=0;p;){for(g++,f=p,d=A=0;d<b&&(A++,f=f.nextZ);d++);for(y=b;0<A||0<y&&f;)0!==A&&(0===y||!f||p.z<=f.z)?(p=(m=p).nextZ,A--):(f=(m=f).nextZ,y--),v?v.nextZ=m:w=m,m.prevZ=v,v=m;p=f}}while(v.nextZ=null,b*=2,1<g)}for(var x,E,C=e;e.prev!==e.next;)if(x=e.prev,E=e.next,a?function(e,t,n,i){var r=e.prev,a=e,o=e.next;if(0<=hu(r,a,o))return;var s=(r.x<a.x?r.x<o.x?r:o:a.x<o.x?a:o).x,l=(r.y<a.y?r.y<o.y?r:o:a.y<o.y?a:o).y,u=(r.x>a.x?r.x>o.x?r:o:a.x>o.x?a:o).x,c=(r.y>a.y?r.y>o.y?r:o:a.y>o.y?a:o).y,h=uu(s,l,t,n,i),d=uu(u,c,t,n,i),p=e.prevZ,f=e.nextZ;for(;p&&p.z>=h&&f&&f.z<=d;){if(p!==e.prev&&p!==e.next&&cu(r.x,r.y,a.x,a.y,o.x,o.y,p.x,p.y)&&0<=hu(p.prev,p,p.next))return;if(p=p.prevZ,f!==e.prev&&f!==e.next&&cu(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&0<=hu(f.prev,f,f.next))return;f=f.nextZ}for(;p&&p.z>=h;){if(p!==e.prev&&p!==e.next&&cu(r.x,r.y,a.x,a.y,o.x,o.y,p.x,p.y)&&0<=hu(p.prev,p,p.next))return;p=p.prevZ}for(;f&&f.z<=d;){if(f!==e.prev&&f!==e.next&&cu(r.x,r.y,a.x,a.y,o.x,o.y,f.x,f.y)&&0<=hu(f.prev,f,f.next))return;f=f.nextZ}return 1}(e,i,r,a):function(e){var t=e.prev,n=e,i=e.next;if(0<=hu(t,n,i))return;var r=e.next.next;for(;r!==e.prev;){if(cu(t.x,t.y,n.x,n.y,i.x,i.y,r.x,r.y)&&0<=hu(r.prev,r,r.next))return;r=r.next}return 1}(e))t.push(x.i/n),t.push(e.i/n),t.push(E.i/n),yu(e),e=E.next,C=E.next;else if((e=E)===C){o?1===o?su(e=function(e,t,n){var i=e;do{var r=i.prev,a=i.next.next}while(!du(r,a)&&pu(r,i,i.next,a)&&vu(r,a)&&vu(a,r)&&(t.push(r.i/n),t.push(i.i/n),t.push(a.i/n),yu(i),yu(i.next),i=e=a),i=i.next,i!==e);return ou(i)}(ou(e),t,n),t,n,i,r,a,2):2===o&&function(e,t,n,i,r,a){var o=e;do{for(var s,l=o.next.next;l!==o.prev;){if(o.i!==l.i&&function(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&pu(n,n.next,e,t))return 1}while(n=n.next,n!==e);return}(e,t)&&(vu(e,t)&&vu(t,e)&&function(e,t){var n=e,i=!1,r=(e.x+t.x)/2,a=(e.y+t.y)/2;for(;n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next,n!==e;);return i}(e,t)&&(hu(e.prev,e,t.prev)||hu(e,t.prev,t))||du(e,t)&&0<hu(e.prev,e,e.next)&&0<hu(t.prev,t,t.next))}(o,l))return s=gu(o,l),o=ou(o,o.next),s=ou(s,s.next),su(o,t,n,i,r,a),su(s,t,n,i,r,a);l=l.next}}while(o=o.next,o!==e)}(e,t,n,i,r,a):su(ou(e),t,n,i,r,a,1);break}}}function lu(e,t){return e.x-t.x}function uu(e,t,n,i,r){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=32767*(e-n)*r)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-i)*r)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function cu(e,t,n,i,r,a,o,s){return 0<=(r-o)*(t-s)-(e-o)*(a-s)&&0<=(e-o)*(i-s)-(n-o)*(t-s)&&0<=(n-o)*(a-s)-(r-o)*(i-s)}function hu(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function du(e,t){return e.x===t.x&&e.y===t.y}function pu(e,t,n,i){var r=mu(hu(e,t,n)),a=mu(hu(e,t,i)),o=mu(hu(n,i,e)),s=mu(hu(n,i,t));return r!==a&&o!==s||0===r&&fu(e,n,t)||0===a&&fu(e,i,t)||0===o&&fu(n,e,i)||!(0!==s||!fu(n,t,i))}function fu(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function mu(e){return 0<e?1:e<0?-1:0}function vu(e,t){return hu(e.prev,e,e.next)<0?0<=hu(e,t,e.next)&&0<=hu(e,e.prev,t):hu(e,t,e.prev)<0||hu(e,e.next,t)<0}function gu(e,t){var n=new wu(e.i,e.x,e.y),i=new wu(t.i,t.x,t.y),r=e.next,a=t.prev;return(e.next=t).prev=e,(n.next=r).prev=n,(i.next=n).prev=i,(a.next=i).prev=a,i}function Au(e,t,n,i){e=new wu(e,t,n);return i?(e.next=i.next,(e.prev=i).next.prev=e,i.next=e):(e.prev=e).next=e,e}function yu(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function wu(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}var bu={area:function(e){for(var t=e.length,n=0,i=t-1,r=0;r<t;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return.5*n},isClockWise:function(e){return bu.area(e)<0},triangulateShape:function(e,t){var n=[],i=[],r=[],a=(xu(e),Eu(n,e),e.length);t.forEach(xu);for(var o=0;o<t.length;o++)i.push(a),a+=t[o].length,Eu(n,t[o]);for(var s=ru(n,i),l=0;l<s.length;l+=3)r.push(s.slice(l,l+3));return r}};function xu(e){var t=e.length;2<t&&e[t-1].equals(e[0])&&e.pop()}function Eu(e,t){for(var n=0;n<t.length;n++)e.push(t[n].x),e.push(t[n].y)}var Cu=function(){y(a,j);var r=C(a);function a(e,Ie){te(this,a),(t=r.call(this)).type="ExtrudeBufferGeometry",t.parameters={shapes:e,options:Ie},e=Array.isArray(e)?e:[e];for(var t,De=G(t),Pe=[],ke=[],n=0,i=e.length;n<i;n++)!function(F){var i=[],O=void 0!==Ie.curveSegments?Ie.curveSegments:12,p=void 0!==Ie.steps?Ie.steps:1,e=void 0!==Ie.depth?Ie.depth:100,c=void 0===Ie.bevelEnabled||Ie.bevelEnabled,t=void 0!==Ie.bevelThickness?Ie.bevelThickness:6,n=void 0!==Ie.bevelSize?Ie.bevelSize:t-2,r=void 0!==Ie.bevelOffset?Ie.bevelOffset:0,f=void 0!==Ie.bevelSegments?Ie.bevelSegments:3,a=Ie.extrudePath,N=void 0!==Ie.UVGenerator?Ie.UVGenerator:Bu;void 0!==Ie.amount&&(console.warn("THREE.ExtrudeBufferGeometry: amount has been renamed to depth."),e=Ie.amount);var o,s,l,u,h,d=!1;a&&(o=a.getSpacedPoints(p),c=!(d=!0),s=a.computeFrenetFrames(p,!1),l=new Re,u=new Re,h=new Re);c||(r=n=t=f=0);var a=F.extractPoints(O),m=a.shape,v=a.holes;if(!bu.isClockWise(m)){m=m.reverse();for(var g=0,G=v.length;g<G;g++){var U=v[g];bu.isClockWise(U)&&(v[g]=U.reverse())}}for(var A=bu.triangulateShape(m,v),y=m,z=0,H=v.length;z<H;z++){var Q=v[z];m=m.concat(Q)}function w(e,t,n){return t||console.error("THREE.ExtrudeGeometry: vec does not exist"),t.clone().multiplyScalar(n).add(e)}var b=m.length,x=A.length;function V(e,t,n){var i=e.x-t.x,r=e.y-t.y,a=n.x-e.x,o=n.y-e.y,s=i*i+r*r;if(Math.abs(i*o-r*a)>Number.EPSILON){var l=Math.sqrt(s),u=Math.sqrt(a*a+o*o),c=t.x-r/l,t=t.y+i/l,l=((n.x-o/u-c)*o-(n.y+a/u-t)*a)/(i*o-r*a),n=(u=c+i*l-e.x)*u+(c=t+r*l-e.y)*c;if(n<=2)return new Le(u,c);l=Math.sqrt(n/2)}else{t=!1;i>Number.EPSILON?a>Number.EPSILON&&(t=!0):i<-Number.EPSILON?a<-Number.EPSILON&&(t=!0):Math.sign(r)===Math.sign(o)&&(t=!0),l=t?(u=-r,c=i,Math.sqrt(s)):(u=i,c=r,Math.sqrt(s/2))}return new Le(u/l,c/l)}for(var E=[],C=0,B=y.length,_=B-1,M=C+1;C<B;C++,_++,M++)_===B&&(_=0),M===B&&(M=0),E[C]=V(y[C],y[_],y[M]);for(var T,j=[],W=E.concat(),J=0,q=v.length;J<q;J++){var X=v[J];T=[];for(var S=0,Y=X.length,K=Y-1,Z=S+1;S<Y;S++,K++,Z++)K===Y&&(K=0),Z===Y&&(Z=0),T[S]=V(X[S],X[K],X[Z]);j.push(T),W=W.concat(T)}for(var $=0;$<f;$++){for(var ee=$/f,te=t*Math.cos(ee*Math.PI/2),ne=n*Math.sin(ee*Math.PI/2)+r,ie=0,re=y.length;ie<re;ie++){var ae=w(y[ie],E[ie],ne);k(ae.x,ae.y,-te)}for(var oe=0,se=v.length;oe<se;oe++){var le=v[oe];T=j[oe];for(var ue=0,ce=le.length;ue<ce;ue++){var he=w(le[ue],T[ue],ne);k(he.x,he.y,-te)}}}for(var de=n+r,I=0;I<b;I++){var pe=c?w(m[I],W[I],de):m[I];d?(u.copy(s.normals[0]).multiplyScalar(pe.x),l.copy(s.binormals[0]).multiplyScalar(pe.y),h.copy(o[0]).add(u).add(l),k(h.x,h.y,h.z)):k(pe.x,pe.y,0)}for(var D=1;D<=p;D++)for(var P=0;P<b;P++){var fe=c?w(m[P],W[P],de):m[P];d?(u.copy(s.normals[D]).multiplyScalar(fe.x),l.copy(s.binormals[D]).multiplyScalar(fe.y),h.copy(o[D]).add(u).add(l),k(h.x,h.y,h.z)):k(fe.x,fe.y,e/p*D)}for(var me=f-1;0<=me;me--){for(var ve=me/f,ge=t*Math.cos(ve*Math.PI/2),Ae=n*Math.sin(ve*Math.PI/2)+r,ye=0,we=y.length;ye<we;ye++){var be=w(y[ye],E[ye],Ae);k(be.x,be.y,e+ge)}for(var xe=0,Ee=v.length;xe<Ee;xe++){var Ce=v[xe];T=j[xe];for(var Be=0,_e=Ce.length;Be<_e;Be++){var Me=w(Ce[Be],T[Be],Ae);d?k(Me.x,Me.y+o[p-1].y,o[p-1].x+ge):k(Me.x,Me.y,e+ge)}}}function Te(e,t){for(var n=e.length;0<=--n;){var i=n,r=n-1;r<0&&(r=e.length-1);for(var a=0,o=p+2*f;a<o;a++){var s=b*a,l=b*(a+1),u=(d=h=c=u=void 0,t+i+s),c=t+r+s,h=t+r+l,d=t+i+l;L(u),L(c),L(d),L(c),L(h),L(d),u=Pe.length/3,R((c=N.generateSideWallUV(De,Pe,u-6,u-3,u-2,u-1))[0]),R(c[1]),R(c[3]),R(c[1]),R(c[2]),R(c[3])}}}function k(e,t,n){i.push(e),i.push(t),i.push(n)}function Se(e,t,n){L(e),L(t),L(n);e=Pe.length/3,t=N.generateTopUV(De,Pe,e-3,e-2,e-1);R(t[0]),R(t[1]),R(t[2])}function L(e){Pe.push(i[3*e+0]),Pe.push(i[3*e+1]),Pe.push(i[3*e+2])}function R(e){ke.push(e.x),ke.push(e.y)}(function(){var e=Pe.length/3;if(c){for(var t=0*b,n=0;n<x;n++){var i=A[n];Se(i[2]+t,i[1]+t,i[0]+t)}for(var t=b*(p+2*f),r=0;r<x;r++){var a=A[r];Se(a[0]+t,a[1]+t,a[2]+t)}}else{for(var o=0;o<x;o++){var s=A[o];Se(s[2],s[1],s[0])}for(var l=0;l<x;l++){var u=A[l];Se(u[0]+b*p,u[1]+b*p,u[2]+b*p)}}De.addGroup(e,Pe.length/3-e,0)})(),function(){var e=Pe.length/3,t=0;Te(y,t),t+=y.length;for(var n=0,i=v.length;n<i;n++){var r=v[n];Te(r,t),t+=r.length}De.addGroup(e,Pe.length/3-e,1)}()}(e[n]);return t.setAttribute("position",new ne(Pe,3)),t.setAttribute("uv",new ne(ke,2)),t.computeVertexNormals(),t}return A(a,[{key:"toJSON",value:function(){var e=j.prototype.toJSON.call(this),t=this.parameters.shapes,n=this.parameters.options,i=t,t=n,r=e;if(r.shapes=[],Array.isArray(i))for(var a=0,o=i.length;a<o;a++){var s=i[a];r.shapes.push(s.uuid)}else r.shapes.push(i.uuid);return void 0!==t.extrudePath&&(r.options.extrudePath=t.extrudePath.toJSON()),r}}]),a}(),Bu={generateTopUV:function(e,t,n,i,r){var a=t[3*n],n=t[3*n+1],o=t[3*i],i=t[3*i+1],s=t[3*r],t=t[3*r+1];return[new Le(a,n),new Le(o,i),new Le(s,t)]},generateSideWallUV:function(e,t,n,i,r,a){var o=t[3*n],s=t[3*n+1],n=t[3*n+2],l=t[3*i],u=t[3*i+1],i=t[3*i+2],c=t[3*r],h=t[3*r+1],r=t[3*r+2],d=t[3*a],p=t[3*a+1],t=t[3*a+2];return Math.abs(s-u)<.01?[new Le(o,1-n),new Le(l,1-i),new Le(c,1-r),new Le(d,1-t)]:[new Le(s,1-n),new Le(u,1-i),new Le(h,1-r),new Le(p,1-t)]}};var _u=function(){y(l,Hl);var i=C(l);function l(e,t){var n;return te(this,l),(n=i.call(this)).type="ExtrudeGeometry",n.parameters={shapes:e,options:t},n.fromBufferGeometry(new Cu(e,t)),n.mergeVertices(),n}return A(l,[{key:"toJSON",value:function(){var e=k(_(l.prototype),"toJSON",this).call(this),t=this.parameters.shapes,n=this.parameters.options,i=t,t=n,r=e;if(r.shapes=[],Array.isArray(i))for(var a=0,o=i.length;a<o;a++){var s=i[a];r.shapes.push(s.uuid)}else r.shapes.push(i.uuid);return void 0!==t.extrudePath&&(r.options.extrudePath=t.extrudePath.toJSON()),r}}]),l}();var Mu=function(){y(r,Yl);var i=C(r);function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(te(this,r),(1+Math.sqrt(5))/2),n=i.call(this,[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],e,t);return n.type="IcosahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return A(r)}(),Tu=function(){y(r,Hl);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).type="IcosahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Mu(e,t)),n.mergeVertices(),n}return A(r)}(),Su=function(){y(I,j);var S=C(I);function I(e){for(var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:12,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2*Math.PI,a=(te(this,I),(t=S.call(this)).type="LatheBufferGeometry",t.parameters={points:e,segments:n,phiStart:i,phiLength:r},n=Math.floor(n),r=Be.clamp(r,0,2*Math.PI),[]),o=[],s=[],l=1/n,u=new Re,c=new Le,h=0;h<=n;h++)for(var d=i+h*l*r,p=Math.sin(d),f=Math.cos(d),m=0;m<=e.length-1;m++)u.x=e[m].x*p,u.y=e[m].y,u.z=e[m].x*f,o.push(u.x,u.y,u.z),c.x=h/n,c.y=m/(e.length-1),s.push(c.x,c.y);for(var v=0;v<n;v++)for(var g=0;g<e.length-1;g++){var A=g+v*e.length,y=A+e.length,w=A+e.length+1,b=A+1;a.push(A,y,b),a.push(y,w,b)}if(t.setIndex(a),t.setAttribute("position",new ne(o,3)),t.setAttribute("uv",new ne(s,2)),t.computeVertexNormals(),r===2*Math.PI)for(var x=t.attributes.normal.array,E=new Re,C=new Re,B=new Re,_=n*e.length*3,M=0,T=0;M<e.length;M++,T+=3)E.x=x[T+0],E.y=x[T+1],E.z=x[T+2],C.x=x[_+T+0],C.y=x[_+T+1],C.z=x[_+T+2],B.addVectors(E,C).normalize(),x[T+0]=x[_+T+0]=B.x,x[T+1]=x[_+T+1]=B.y,x[T+2]=x[_+T+2]=B.z;return t}return A(I)}(),Iu=function(){y(o,Hl);var a=C(o);function o(e,t,n,i){var r;return te(this,o),(r=a.call(this)).type="LatheGeometry",r.parameters={points:e,segments:t,phiStart:n,phiLength:i},r.fromBufferGeometry(new Su(e,t,n,i)),r.mergeVertices(),r}return A(o)}(),Du=function(){y(r,Yl);var i=C(r);function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(te(this,r),i.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],e,t));return n.type="OctahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return A(r)}(),Pu=function(){y(r,Hl);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).type="OctahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Du(e,t)),n.mergeVertices(),n}return A(r)}();function ku(e,t,n){j.call(this),this.type="ParametricBufferGeometry",this.parameters={func:e,slices:t,stacks:n};for(var i=[],r=[],a=[],o=[],s=new Re,l=new Re,u=new Re,c=new Re,h=new Re,d=(e.length<3&&console.error("THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter."),t+1),p=0;p<=n;p++)for(var f=p/n,m=0;m<=t;m++){var v=m/t;e(v,f,l),r.push(l.x,l.y,l.z),0<=v-1e-5?(e(v-1e-5,f,u),c.subVectors(l,u)):(e(1e-5+v,f,u),c.subVectors(u,l)),0<=f-1e-5?(e(v,f-1e-5,u),h.subVectors(l,u)):(e(v,1e-5+f,u),h.subVectors(u,l)),s.crossVectors(c,h).normalize(),a.push(s.x,s.y,s.z),o.push(v,f)}for(var g=0;g<n;g++)for(var A=0;A<t;A++){var y=g*d+A+1,w=(g+1)*d+A+1,b=(g+1)*d+A;i.push(g*d+A,y,b),i.push(y,w,b)}this.setIndex(i),this.setAttribute("position",new ne(r,3)),this.setAttribute("normal",new ne(a,3)),this.setAttribute("uv",new ne(o,2))}function Lu(e,t,n){Hl.call(this),this.type="ParametricGeometry",this.parameters={func:e,slices:t,stacks:n},this.fromBufferGeometry(new ku(e,t,n)),this.mergeVertices()}(ku.prototype=Object.create(j.prototype)).constructor=ku,(Lu.prototype=Object.create(Hl.prototype)).constructor=Lu;var Ru=function(){y(o,Hl);var a=C(o);function o(e,t,n,i){var r;return te(this,o),(r=a.call(this)).type="PlaneGeometry",r.parameters={width:e,height:t,widthSegments:n,heightSegments:i},r.fromBufferGeometry(new Ba(e,t,n,i)),r.mergeVertices(),r}return A(o)}(),Fu=function(){y(o,Hl);var a=C(o);function o(e,t,n,i){var r;return te(this,o),(r=a.call(this)).type="PolyhedronGeometry",r.parameters={vertices:e,indices:t,radius:n,detail:i},r.fromBufferGeometry(new Yl(e,t,n,i)),r.mergeVertices(),r}return A(o)}(),Ou=function(){y(_,j);var B=C(_);function _(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:.5,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:2*Math.PI,s=(te(this,_),(e=B.call(this)).type="RingBufferGeometry",e.parameters={innerRadius:t,outerRadius:n,thetaSegments:i,phiSegments:r,thetaStart:a,thetaLength:o},i=Math.max(3,i),[]),l=[],u=[],c=[],h=t,d=(n-t)/(r=Math.max(1,r)),p=new Re,f=new Le,m=0;m<=r;m++){for(var v=0;v<=i;v++){var g=a+v/i*o;p.x=h*Math.cos(g),p.y=h*Math.sin(g),l.push(p.x,p.y,p.z),u.push(0,0,1),f.x=(p.x/n+1)/2,f.y=(p.y/n+1)/2,c.push(f.x,f.y)}h+=d}for(var A=0;A<r;A++)for(var y=A*(i+1),w=0;w<i;w++){var b=w+y,x=b+i+1,E=b+i+2,C=b+1;s.push(b,x,C),s.push(x,E,C)}return e.setIndex(s),e.setAttribute("position",new ne(l,3)),e.setAttribute("normal",new ne(u,3)),e.setAttribute("uv",new ne(c,2)),e}return A(_)}(),Nu=function(){y(l,Hl);var s=C(l);function l(e,t,n,i,r,a){var o;return te(this,l),(o=s.call(this)).type="RingGeometry",o.parameters={innerRadius:e,outerRadius:t,thetaSegments:n,phiSegments:i,thetaStart:r,thetaLength:a},o.fromBufferGeometry(new Ou(e,t,n,i,r,a)),o.mergeVertices(),o}return A(l)}(),Gu=function(){y(o,j);var a=C(o);function o(e){var t,y=1<arguments.length&&void 0!==arguments[1]?arguments[1]:12,w=(te(this,o),(t=a.call(this)).type="ShapeBufferGeometry",t.parameters={shapes:e,curveSegments:y},[]),b=[],x=[],E=[],n=0,C=0;if(!1===Array.isArray(e))r(e);else for(var i=0;i<e.length;i++)r(e[i]),t.addGroup(n,C,i),n+=C,C=0;function r(e){var t=b.length/3,e=e.extractPoints(y),n=e.shape,i=e.holes;!1===bu.isClockWise(n)&&(n=n.reverse());for(var r=0,a=i.length;r<a;r++){var o=i[r];!0===bu.isClockWise(o)&&(i[r]=o.reverse())}for(var s=bu.triangulateShape(n,i),l=0,u=i.length;l<u;l++)var c=i[l],n=n.concat(c);for(var h=0,d=n.length;h<d;h++){var p=n[h];b.push(p.x,p.y,0),x.push(0,0,1),E.push(p.x,p.y)}for(var f=0,m=s.length;f<m;f++){var v=s[f],g=v[0]+t,A=v[1]+t,v=v[2]+t;w.push(g,A,v),C+=3}}return t.setIndex(w),t.setAttribute("position",new ne(b,3)),t.setAttribute("normal",new ne(x,3)),t.setAttribute("uv",new ne(E,2)),t}return A(o,[{key:"toJSON",value:function(){var e=j.prototype.toJSON.call(this),t=this.parameters.shapes,n=e;if(n.shapes=[],Array.isArray(t))for(var i=0,r=t.length;i<r;i++){var a=t[i];n.shapes.push(a.uuid)}else n.shapes.push(t.uuid);return n}}]),o}();var Uu=function(){y(r,Hl);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).type="ShapeGeometry","object"===v(t)&&(console.warn("THREE.ShapeGeometry: Options parameter has been removed."),t=t.curveSegments),n.parameters={shapes:e,curveSegments:t},n.fromBufferGeometry(new Gu(e,t)),n.mergeVertices(),n}return A(r,[{key:"toJSON",value:function(){var e=Hl.prototype.toJSON.call(this),t=this.parameters.shapes,n=e;if(n.shapes=[],Array.isArray(t))for(var i=0,r=t.length;i<r;i++){var a=t[i];n.shapes.push(a.uuid)}else n.shapes.push(t.uuid);return n}}]),r}();var zu=function(){y(I,j);var S=C(I);function I(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:8,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:6,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2*Math.PI,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0,s=6<arguments.length&&void 0!==arguments[6]?arguments[6]:Math.PI,l=(te(this,I),(e=S.call(this)).type="SphereBufferGeometry",e.parameters={radius:t,widthSegments:n,heightSegments:i,phiStart:r,phiLength:a,thetaStart:o,thetaLength:s},n=Math.max(3,Math.floor(n)),i=Math.max(2,Math.floor(i)),Math.min(o+s,Math.PI)),u=0,c=[],h=new Re,d=new Re,p=[],f=[],m=[],v=[],g=0;g<=i;g++){var A=[],y=g/i,w=0;0==g&&0==o?w=.5/n:g==i&&l==Math.PI&&(w=-.5/n);for(var b=0;b<=n;b++){var x=b/n;h.x=-t*Math.cos(r+x*a)*Math.sin(o+y*s),h.y=t*Math.cos(o+y*s),h.z=t*Math.sin(r+x*a)*Math.sin(o+y*s),f.push(h.x,h.y,h.z),d.copy(h).normalize(),m.push(d.x,d.y,d.z),v.push(x+w,1-y),A.push(u++)}c.push(A)}for(var E=0;E<i;E++)for(var C=0;C<n;C++){var B=c[E][C+1],_=c[E][C],M=c[E+1][C],T=c[E+1][C+1];(0!==E||0<o)&&p.push(B,_,T),(E!==i-1||l<Math.PI)&&p.push(_,M,T)}return e.setIndex(p),e.setAttribute("position",new ne(f,3)),e.setAttribute("normal",new ne(m,3)),e.setAttribute("uv",new ne(v,2)),e}return A(I)}(),Hu=function(){y(u,Hl);var l=C(u);function u(e,t,n,i,r,a,o){var s;return te(this,u),(s=l.call(this)).type="SphereGeometry",s.parameters={radius:e,widthSegments:t,heightSegments:n,phiStart:i,phiLength:r,thetaStart:a,thetaLength:o},s.fromBufferGeometry(new zu(e,t,n,i,r,a,o)),s.mergeVertices(),s}return A(u)}(),Qu=function(){y(r,Yl);var i=C(r);function r(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=(te(this,r),i.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],e,t));return n.type="TetrahedronBufferGeometry",n.parameters={radius:e,detail:t},n}return A(r)}(),Vu=function(){y(r,Hl);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).type="TetrahedronGeometry",n.parameters={radius:e,detail:t},n.fromBufferGeometry(new Qu(e,t)),n.mergeVertices(),n}return A(r)}(),ju=function(){y(a,Cu);var r=C(a);function a(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=(te(this,a),n.font);return i&&i.isFont?(i=i.generateShapes(e,n.size),n.depth=void 0!==n.height?n.height:50,void 0===n.bevelThickness&&(n.bevelThickness=10),void 0===n.bevelSize&&(n.bevelSize=8),void 0===n.bevelEnabled&&(n.bevelEnabled=!1),(t=r.call(this,i,n)).type="TextBufferGeometry",t):(console.error("THREE.TextGeometry: font parameter is not an instance of THREE.Font."),I(t,new j))}return A(a)}(),Wu=function(){y(r,Hl);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).type="TextGeometry",n.parameters={text:e,parameters:t},n.fromBufferGeometry(new ju(e,t)),n.mergeVertices(),n}return A(r)}(),Ju=function(){y(E,j);var x=C(E);function E(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:.4,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:6,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2*Math.PI,o=(te(this,E),(e=x.call(this)).type="TorusBufferGeometry",e.parameters={radius:t,tube:n,radialSegments:i,tubularSegments:r,arc:a},i=Math.floor(i),r=Math.floor(r),[]),s=[],l=[],u=[],c=new Re,h=new Re,d=new Re,p=0;p<=i;p++)for(var f=0;f<=r;f++){var m=f/r*a,v=p/i*Math.PI*2;h.x=(t+n*Math.cos(v))*Math.cos(m),h.y=(t+n*Math.cos(v))*Math.sin(m),h.z=n*Math.sin(v),s.push(h.x,h.y,h.z),c.x=t*Math.cos(m),c.y=t*Math.sin(m),d.subVectors(h,c).normalize(),l.push(d.x,d.y,d.z),u.push(f/r),u.push(p/i)}for(var g=1;g<=i;g++)for(var A=1;A<=r;A++){var y=(r+1)*(g-1)+A-1,w=(r+1)*(g-1)+A,b=(r+1)*g+A;o.push((r+1)*g+A-1,y,b),o.push(y,w,b)}return e.setIndex(o),e.setAttribute("position",new ne(s,3)),e.setAttribute("normal",new ne(l,3)),e.setAttribute("uv",new ne(u,2)),e}return A(E)}(),qu=function(){y(s,Hl);var o=C(s);function s(e,t,n,i,r){var a;return te(this,s),(a=o.call(this)).type="TorusGeometry",a.parameters={radius:e,tube:t,radialSegments:n,tubularSegments:i,arc:r},a.fromBufferGeometry(new Ju(e,t,n,i,r)),a.mergeVertices(),a}return A(s)}(),Xu=function(){y(I,j);var S=C(I);function I(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:.4,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:64,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:2,o=5<arguments.length&&void 0!==arguments[5]?arguments[5]:3,s=(te(this,I),(e=S.call(this)).type="TorusKnotBufferGeometry",e.parameters={radius:t,tube:n,tubularSegments:i,radialSegments:r,p:a,q:o},i=Math.floor(i),r=Math.floor(r),[]),l=[],u=[],c=[],h=new Re,d=new Re,p=new Re,f=new Re,m=new Re,v=new Re,g=new Re,A=0;A<=i;++A){var y=A/i*a*Math.PI*2;T(y,a,o,t,p),T(.01+y,a,o,t,f),v.subVectors(f,p),g.addVectors(f,p),m.crossVectors(v,g),g.crossVectors(m,v),m.normalize(),g.normalize();for(var w=0;w<=r;++w){var b=w/r*Math.PI*2,x=-n*Math.cos(b),b=n*Math.sin(b);h.x=p.x+(x*g.x+b*m.x),h.y=p.y+(x*g.y+b*m.y),h.z=p.z+(x*g.z+b*m.z),l.push(h.x,h.y,h.z),d.subVectors(h,p).normalize(),u.push(d.x,d.y,d.z),c.push(A/i),c.push(w/r)}}for(var E=1;E<=i;E++)for(var C=1;C<=r;C++){var B=(r+1)*E+(C-1),_=(r+1)*E+C,M=(r+1)*(E-1)+C;s.push((r+1)*(E-1)+(C-1),B,M),s.push(B,_,M)}function T(e,t,n,i,r){var a=Math.cos(e),o=Math.sin(e),n=n/t*e,t=Math.cos(n);r.x=i*(2+t)*.5*a,r.y=i*(2+t)*o*.5,r.z=i*Math.sin(n)*.5}return e.setIndex(s),e.setAttribute("position",new ne(l,3)),e.setAttribute("normal",new ne(u,3)),e.setAttribute("uv",new ne(c,2)),e}return A(I)}(),Yu=function(){y(u,Hl);var l=C(u);function u(e,t,n,i,r,a,o){var s;return te(this,u),(s=l.call(this)).type="TorusKnotGeometry",s.parameters={radius:e,tube:t,tubularSegments:n,radialSegments:i,p:r,q:a},void 0!==o&&console.warn("THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead."),s.fromBufferGeometry(new Xu(e,t,n,i,r,a)),s.mergeVertices(),s}return A(u)}(),Ku=function(){y(_,j);var B=C(_);function _(o){for(var e,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:64,l=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,u=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8,t=4<arguments.length&&void 0!==arguments[4]&&arguments[4],c=(te(this,_),(e=B.call(this)).type="TubeBufferGeometry",e.parameters={path:o,tubularSegments:s,radius:l,radialSegments:u,closed:t},o.computeFrenetFrames(s,t)),h=(e.tangents=c.tangents,e.normals=c.normals,e.binormals=c.binormals,new Re),d=new Re,n=new Le,p=new Re,f=[],m=[],i=[],r=[],a=0;a<s;a++)C(a);C(!1===t?s:0);for(var v=0;v<=s;v++)for(var g=0;g<=u;g++)n.x=v/s,n.y=g/u,i.push(n.x,n.y);for(var A=1;A<=s;A++)for(var y=1;y<=u;y++){var w=(u+1)*(A-1)+(y-1),b=(u+1)*A+(y-1),x=(u+1)*A+y,E=(u+1)*(A-1)+y;r.push(w,b,E),r.push(b,x,E)}function C(e){p=o.getPointAt(e/s,p);for(var t=c.normals[e],n=c.binormals[e],i=0;i<=u;i++){var r=i/u*Math.PI*2,a=Math.sin(r),r=-Math.cos(r);d.x=r*t.x+a*n.x,d.y=r*t.y+a*n.y,d.z=r*t.z+a*n.z,d.normalize(),m.push(d.x,d.y,d.z),h.x=p.x+l*d.x,h.y=p.y+l*d.y,h.z=p.z+l*d.z,f.push(h.x,h.y,h.z)}}return e.setIndex(r),e.setAttribute("position",new ne(f,3)),e.setAttribute("normal",new ne(m,3)),e.setAttribute("uv",new ne(i,2)),e}return A(_,[{key:"toJSON",value:function(){var e=j.prototype.toJSON.call(this);return e.path=this.parameters.path.toJSON(),e}}]),_}(),Zu=function(){y(l,Hl);var s=C(l);function l(e,t,n,i,r,a){te(this,l),(o=s.call(this)).type="TubeGeometry",o.parameters={path:e,tubularSegments:t,radius:n,radialSegments:i,closed:r},void 0!==a&&console.warn("THREE.TubeGeometry: taper has been removed.");var o,a=new Ku(e,t,n,i,r);return o.tangents=a.tangents,o.normals=a.normals,o.binormals=a.binormals,o.fromBufferGeometry(a),o.mergeVertices(),o}return A(l)}(),$u=function(){y(O,j);var F=C(O);function O(e){te(this,O),(t=F.call(this)).type="WireframeGeometry";var t,n=[],i=[0,0],r={},a=["a","b","c"];if(e&&e.isGeometry){for(var o,s=e.faces,l=0,u=s.length;l<u;l++)for(var c=s[l],h=0;h<3;h++){var d=c[a[h]],p=c[a[(h+1)%3]],d=(i[0]=Math.min(d,p),i[1]=Math.max(d,p),i[0]+","+i[1]);void 0===r[d]&&(r[d]={index1:i[0],index2:i[1]})}for(o in r){var f=r[o],m=e.vertices[f.index1];n.push(m.x,m.y,m.z),m=e.vertices[f.index2],n.push(m.x,m.y,m.z)}}else if(e&&e.isBufferGeometry){var v=new Re;if(null!==e.index){for(var g,A=e.attributes.position,y=e.index,w=e.groups,b=0,x=(w=0===w.length?[{start:0,count:y.count,materialIndex:0}]:w).length;b<x;++b)for(var E=w[b],C=E.start,B=C,_=C+E.count;B<_;B+=3)for(var M=0;M<3;M++){var T=y.getX(B+M),S=y.getX(B+(M+1)%3),T=(i[0]=Math.min(T,S),i[1]=Math.max(T,S),i[0]+","+i[1]);void 0===r[T]&&(r[T]={index1:i[0],index2:i[1]})}for(g in r){var I=r[g];v.fromBufferAttribute(A,I.index1),n.push(v.x,v.y,v.z),v.fromBufferAttribute(A,I.index2),n.push(v.x,v.y,v.z)}}else for(var D=e.attributes.position,P=0,k=D.count/3;P<k;P++)for(var L=0;L<3;L++){v.fromBufferAttribute(D,3*P+L),n.push(v.x,v.y,v.z);var R=3*P+(L+1)%3;v.fromBufferAttribute(D,R),n.push(v.x,v.y,v.z)}}return t.setAttribute("position",new ne(n,3)),t}return A(O)}(),ec=Object.freeze({__proto__:null,BoxGeometry:Ql,BoxBufferGeometry:sa,CircleGeometry:jl,CircleBufferGeometry:Vl,ConeGeometry:ql,ConeBufferGeometry:Xl,CylinderGeometry:Jl,CylinderBufferGeometry:Wl,DodecahedronGeometry:Zl,DodecahedronBufferGeometry:Kl,EdgesGeometry:iu,ExtrudeGeometry:_u,ExtrudeBufferGeometry:Cu,IcosahedronGeometry:Tu,IcosahedronBufferGeometry:Mu,LatheGeometry:Iu,LatheBufferGeometry:Su,OctahedronGeometry:Pu,OctahedronBufferGeometry:Du,ParametricGeometry:Lu,ParametricBufferGeometry:ku,PlaneGeometry:Ru,PlaneBufferGeometry:Ba,PolyhedronGeometry:Fu,PolyhedronBufferGeometry:Yl,RingGeometry:Nu,RingBufferGeometry:Ou,ShapeGeometry:Uu,ShapeBufferGeometry:Gu,SphereGeometry:Hu,SphereBufferGeometry:zu,TetrahedronGeometry:Vu,TetrahedronBufferGeometry:Qu,TextGeometry:Wu,TextBufferGeometry:ju,TorusGeometry:qu,TorusBufferGeometry:Ju,TorusKnotGeometry:Yu,TorusKnotBufferGeometry:Xu,TubeGeometry:Zu,TubeBufferGeometry:Ku,WireframeGeometry:$u});function tc(e){yr.call(this),this.type="ShadowMaterial",this.color=new Me(0),this.transparent=!0,this.setValues(e)}function nc(e){pa.call(this,e),this.type="RawShaderMaterial"}function ic(e){yr.call(this),this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new Me(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Me(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fn,this.normalScale=new Le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapIntensity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.vertexTangents=!1,this.setValues(e)}function rc(e){ic.call(this),this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.clearcoat=0,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Le(1,1),this.clearcoatNormalMap=null,this.reflectivity=.5,Object.defineProperty(this,"ior",{get:function(){return(1+.4*this.reflectivity)/(1-.4*this.reflectivity)},set:function(e){this.reflectivity=Be.clamp(2.5*(e-1)/(e+1),0,1)}}),this.sheen=null,this.transmission=0,this.transmissionMap=null,this.setValues(e)}function ac(e){yr.call(this),this.type="MeshPhongMaterial",this.color=new Me(16777215),this.specular=new Me(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Me(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fn,this.normalScale=new Le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ze,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function oc(e){yr.call(this),this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new Me(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Me(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fn,this.normalScale=new Le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function sc(e){yr.call(this),this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fn,this.normalScale=new Le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function lc(e){yr.call(this),this.type="MeshLambertMaterial",this.color=new Me(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new Me(0),this.emissiveIntensity=1,this.emissiveMap=null,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ze,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function uc(e){yr.call(this),this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new Me(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Fn,this.normalScale=new Le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.setValues(e)}function cc(e){vl.call(this),this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}((tc.prototype=Object.create(yr.prototype)).constructor=tc).prototype.isShadowMaterial=!0,tc.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this},((nc.prototype=Object.create(pa.prototype)).constructor=nc).prototype.isRawShaderMaterial=!0,((ic.prototype=Object.create(yr.prototype)).constructor=ic).prototype.isMeshStandardMaterial=!0,ic.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapIntensity=e.envMapIntensity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this.vertexTangents=e.vertexTangents,this},((rc.prototype=Object.create(ic.prototype)).constructor=rc).prototype.isMeshPhysicalMaterial=!0,rc.prototype.copy=function(e){return ic.prototype.copy.call(this,e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.reflectivity=e.reflectivity,e.sheen?this.sheen=(this.sheen||new Me).copy(e.sheen):this.sheen=null,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this},((ac.prototype=Object.create(yr.prototype)).constructor=ac).prototype.isMeshPhongMaterial=!0,ac.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((oc.prototype=Object.create(yr.prototype)).constructor=oc).prototype.isMeshToonMaterial=!0,oc.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((sc.prototype=Object.create(yr.prototype)).constructor=sc).prototype.isMeshNormalMaterial=!0,sc.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((lc.prototype=Object.create(yr.prototype)).constructor=lc).prototype.isMeshLambertMaterial=!0,lc.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((uc.prototype=Object.create(yr.prototype)).constructor=uc).prototype.isMeshMatcapMaterial=!0,uc.prototype.copy=function(e){return yr.prototype.copy.call(this,e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.skinning=e.skinning,this.morphTargets=e.morphTargets,this.morphNormals=e.morphNormals,this},((cc.prototype=Object.create(vl.prototype)).constructor=cc).prototype.isLineDashedMaterial=!0,cc.prototype.copy=function(e){return vl.prototype.copy.call(this,e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this};var hc=Object.freeze({__proto__:null,ShadowMaterial:tc,SpriteMaterial:Os,RawShaderMaterial:nc,ShaderMaterial:pa,PointsMaterial:Ml,MeshPhysicalMaterial:rc,MeshStandardMaterial:ic,MeshPhongMaterial:ac,MeshToonMaterial:oc,MeshNormalMaterial:sc,MeshLambertMaterial:lc,MeshDepthMaterial:ms,MeshDistanceMaterial:vs,MeshBasicMaterial:L,MeshMatcapMaterial:uc,LineDashedMaterial:cc,LineBasicMaterial:vl,Material:yr}),dc={arraySlice:function(e,t,n){return dc.isTypedArray(e)?new e.constructor(e.subarray(t,void 0!==n?n:e.length)):e.slice(t,n)},convertArray:function(e,t,n){return!e||!n&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)},isTypedArray:function(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)},getKeyframeOrder:function(n){for(var e=n.length,t=new Array(e),i=0;i!==e;++i)t[i]=i;return t.sort(function(e,t){return n[e]-n[t]}),t},sortedArray:function(e,t,n){for(var i=e.length,r=new e.constructor(i),a=0,o=0;o!==i;++a)for(var s=n[a]*t,l=0;l!==t;++l)r[o++]=e[s+l];return r},flattenJSON:function(e,t,n,i){for(var r=1,a=e[0];void 0!==a&&void 0===a[i];)a=e[r++];if(void 0!==a){var o=a[i];if(void 0!==o)if(Array.isArray(o))for(;void 0!==(o=a[i])&&(t.push(a.time),n.push.apply(n,o)),void 0!==(a=e[r++]););else if(void 0!==o.toArray)for(;void 0!==(o=a[i])&&(t.push(a.time),o.toArray(n,n.length)),void 0!==(a=e[r++]););else for(;void 0!==(o=a[i])&&(t.push(a.time),n.push(o)),void 0!==(a=e[r++]););}},subclip:function(e,t,n,i){for(var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:30,a=e.clone(),o=(a.name=t,[]),s=0;s<a.tracks.length;++s){for(var l=a.tracks[s],u=l.getValueSize(),c=[],h=[],d=0;d<l.times.length;++d){var p=l.times[d]*r;if(!(p<n||i<=p)){c.push(l.times[d]);for(var f=0;f<u;++f)h.push(l.values[d*u+f])}}0!==c.length&&(l.times=dc.convertArray(c,l.times.constructor),l.values=dc.convertArray(h,l.values.constructor),o.push(l))}a.tracks=o;for(var m=1/0,v=0;v<a.tracks.length;++v)m>a.tracks[v].times[0]&&(m=a.tracks[v].times[0]);for(var g=0;g<a.tracks.length;++g)a.tracks[g].shift(-1*m);return a.resetDuration(),a},makeClipAdditive:function(m){for(var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,v=2<arguments.length&&void 0!==arguments[2]?arguments[2]:m,t=3<arguments.length&&void 0!==arguments[3]?arguments[3]:30,n=v.tracks.length,g=e/(t=t<=0?30:t),i=0;i<n;++i)!function(e){var t=v.tracks[e],n=t.ValueTypeName;if("bool"===n||"string"===n)return;var i=m.tracks.find(function(e){return e.name===t.name&&e.ValueTypeName===n});if(void 0===i)return;for(var r,e=0,a=t.getValueSize(),o=(t.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(e=a/3),0),s=i.getValueSize(),l=(i.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(o=s/3),t.times.length-1),u=void 0,c=(u=g<=t.times[0]?(r=e,dc.arraySlice(t.values,r,a-e)):g>=t.times[l]?dc.arraySlice(t.values,r=l*a+e,r+a-e):(r=a-(l=e),(a=t.createInterpolant()).evaluate(g),dc.arraySlice(a.resultBuffer,l,r)),"quaternion"===n&&(new X).fromArray(u).normalize().conjugate().toArray(u),i.times.length),h=0;h<c;++h){var d=h*s+o;if("quaternion"===n)X.multiplyQuaternionsFlat(i.values,d,u,0,i.values,d);else for(var p=s-2*o,f=0;f<p;++f)i.values[d+f]-=u[f]}}(i);return m.blendMode=2501,m}};function pc(e,t,n,i){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=void 0!==i?i:new t.constructor(n),this.sampleValues=t,this.valueSize=n}function fc(e,t,n,i){pc.call(this,e,t,n,i),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0}function mc(e,t,n,i){pc.call(this,e,t,n,i)}function vc(e,t,n,i){pc.call(this,e,t,n,i)}function gc(e,t,n,i){if(void 0===e)throw new Error("THREE.KeyframeTrack: track name is undefined");if(void 0===t||0===t.length)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=dc.convertArray(t,this.TimeBufferType),this.values=dc.convertArray(n,this.ValueBufferType),this.setInterpolation(i||this.DefaultInterpolation)}function Ac(e,t,n){gc.call(this,e,t,n)}function yc(e,t,n,i){gc.call(this,e,t,n,i)}function wc(e,t,n,i){gc.call(this,e,t,n,i)}function bc(e,t,n,i){pc.call(this,e,t,n,i)}function xc(e,t,n,i){gc.call(this,e,t,n,i)}function Ec(e,t,n,i){gc.call(this,e,t,n,i)}function Cc(e,t,n,i){gc.call(this,e,t,n,i)}function Bc(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:-1,n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:2500;this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=Be.generateUUID(),this.duration<0&&this.resetDuration()}function _c(e){if(void 0===e.type)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");var t,n,i=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return wc;case"vector":case"vector2":case"vector3":case"vector4":return Cc;case"color":return yc;case"quaternion":return xc;case"bool":case"boolean":return Ac;case"string":return Ec}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);return void 0===e.times&&(dc.flattenJSON(e.keys,t=[],n=[],"value"),e.times=t,e.values=n),void 0!==i.parse?i.parse(e):new i(e.name,e.times,e.values,e.interpolation)}Object.assign(pc.prototype,{evaluate:function(e){var t,n=this.parameterPositions,i=this._cachedIndex,r=n[i],a=n[i-1];e:{t:{n:{i:if(!(e<r)){for(var o=i+2;;){if(void 0===r){if(e<a)break i;return i=n.length,this._cachedIndex=i,this.afterEnd_(i-1,e,a)}if(i===o)break;if(a=r,e<(r=n[++i]))break t}t=n.length;break n}if(a<=e)break e;var s=n[1];e<s&&(i=2,a=s);for(var l=i-2;;){if(void 0===a)return this._cachedIndex=0,this.beforeStart_(0,e,r);if(i===l)break;if(r=a,(a=n[--i-1])<=e)break t}t=i,i=0}for(;i<t;){var u=i+t>>>1;e<n[u]?t=u:i=1+u}if(r=n[i],void 0===(a=n[i-1]))return this._cachedIndex=0,this.beforeStart_(0,e,r);if(void 0===r)return i=n.length,this._cachedIndex=i,this.afterEnd_(i-1,a,e)}this._cachedIndex=i,this.intervalChanged_(i,a,r)}return this.interpolate_(i,a,e,r)},settings:null,DefaultSettings_:{},getSettings_:function(){return this.settings||this.DefaultSettings_},copySampleValue_:function(e){for(var t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i,a=0;a!==i;++a)t[a]=n[r+a];return t},interpolate_:function(){throw new Error("call to abstract method")},intervalChanged_:function(){}}),Object.assign(pc.prototype,{beforeStart_:pc.prototype.copySampleValue_,afterEnd_:pc.prototype.copySampleValue_}),fc.prototype=Object.assign(Object.create(pc.prototype),{constructor:fc,DefaultSettings_:{endingStart:In,endingEnd:In},intervalChanged_:function(e,t,n){var i=this.parameterPositions,r=e-2,a=e+1,o=i[r],s=i[a];if(void 0===o)switch(this.getSettings_().endingStart){case Dn:r=e,o=2*t-n;break;case Pn:o=t+i[r=i.length-2]-i[r+1];break;default:r=e,o=n}if(void 0===s)switch(this.getSettings_().endingEnd){case Dn:a=e,s=2*n-t;break;case Pn:s=n+i[a=1]-i[0];break;default:a=e-1,s=t}var l=.5*(n-t),u=this.valueSize;this._weightPrev=l/(t-o),this._weightNext=l/(s-n),this._offsetPrev=r*u,this._offsetNext=a*u},interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,l=s-o,u=this._offsetPrev,c=this._offsetNext,e=this._weightPrev,h=this._weightNext,n=(n-t)/(i-t),i=n*n,t=i*n,d=-e*t+2*e*i-e*n,p=(1+e)*t+(-1.5-2*e)*i+(-.5+e)*n+1,f=(-1-h)*t+(1.5+h)*i+.5*n,m=h*t-h*i,v=0;v!==o;++v)r[v]=d*a[u+v]+p*a[l+v]+f*a[s+v]+m*a[c+v];return r}}),mc.prototype=Object.assign(Object.create(pc.prototype),{constructor:mc,interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=e*o,l=s-o,u=(n-t)/(i-t),c=1-u,h=0;h!==o;++h)r[h]=a[l+h]*c+a[s+h]*u;return r}}),vc.prototype=Object.assign(Object.create(pc.prototype),{constructor:vc,interpolate_:function(e){return this.copySampleValue_(e-1)}}),Object.assign(gc,{toJSON:function(e){var t,n=e.constructor;return void 0!==n.toJSON?t=n.toJSON(e):(t={name:e.name,times:dc.convertArray(e.times,Array),values:dc.convertArray(e.values,Array)},(n=e.getInterpolation())!==e.DefaultInterpolation&&(t.interpolation=n)),t.type=e.ValueTypeName,t}}),Object.assign(gc.prototype,{constructor:gc,TimeBufferType:Float32Array,ValueBufferType:Float32Array,DefaultInterpolation:Sn,InterpolantFactoryMethodDiscrete:function(e){return new vc(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodLinear:function(e){return new mc(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:function(e){return new fc(this.times,this.values,this.getValueSize(),e)},setInterpolation:function(e){var t;switch(e){case Tn:t=this.InterpolantFactoryMethodDiscrete;break;case Sn:t=this.InterpolantFactoryMethodLinear;break;case 2302:t=this.InterpolantFactoryMethodSmooth}if(void 0===t){var n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(void 0===this.createInterpolant){if(e===this.DefaultInterpolation)throw new Error(n);this.setInterpolation(this.DefaultInterpolation)}console.warn("THREE.KeyframeTrack:",n)}else this.createInterpolant=t;return this},getInterpolation:function(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return Tn;case this.InterpolantFactoryMethodLinear:return Sn;case this.InterpolantFactoryMethodSmooth:return 2302}},getValueSize:function(){return this.values.length/this.times.length},shift:function(e){if(0!==e)for(var t=this.times,n=0,i=t.length;n!==i;++n)t[n]+=e;return this},scale:function(e){if(1!==e)for(var t=this.times,n=0,i=t.length;n!==i;++n)t[n]*=e;return this},trim:function(e,t){for(var n,i=this.times,r=i.length,a=0,o=r-1;a!==r&&i[a]<e;)++a;for(;-1!==o&&i[o]>t;)--o;return++o,0===a&&o===r||(o<=a&&(a=(o=Math.max(o,1))-1),n=this.getValueSize(),this.times=dc.arraySlice(i,a,o),this.values=dc.arraySlice(this.values,a*n,o*n)),this},validate:function(){for(var e=!0,t=this.getValueSize(),n=(t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1),this.times),i=this.values,r=n.length,a=(0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1),null),o=0;o!==r;o++){var s=n[o];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,s),e=!1;break}if(null!==a&&s<a){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,s,a),e=!1;break}a=s}if(void 0!==i&&dc.isTypedArray(i))for(var l=0,u=i.length;l!==u;++l){var c=i[l];if(isNaN(c)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,l,c),e=!1;break}}return e},optimize:function(){for(var e=dc.arraySlice(this.times),t=dc.arraySlice(this.values),n=this.getValueSize(),i=2302===this.getInterpolation(),r=e.length-1,a=1,o=1;o<r;++o){var s=!1,l=e[o];if(l!==e[o+1]&&(1!==o||l!==l[0]))if(i)s=!0;else for(var u=o*n,c=u-n,h=u+n,d=0;d!==n;++d){var p=t[u+d];if(p!==t[c+d]||p!==t[h+d]){s=!0;break}}if(s){if(o!==a){e[a]=e[o];for(var f=o*n,m=a*n,v=0;v!==n;++v)t[m+v]=t[f+v]}++a}}if(0<r){e[a]=e[r];for(var g=r*n,A=a*n,y=0;y!==n;++y)t[A+y]=t[g+y];++a}return a!==e.length?(this.times=dc.arraySlice(e,0,a),this.values=dc.arraySlice(t,0,a*n)):(this.times=e,this.values=t),this},clone:function(){var e=dc.arraySlice(this.times,0),t=dc.arraySlice(this.values,0),e=new this.constructor(this.name,e,t);return e.createInterpolant=this.createInterpolant,e}}),Ac.prototype=Object.assign(Object.create(gc.prototype),{constructor:Ac,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:Tn,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),yc.prototype=Object.assign(Object.create(gc.prototype),{constructor:yc,ValueTypeName:"color"}),wc.prototype=Object.assign(Object.create(gc.prototype),{constructor:wc,ValueTypeName:"number"}),bc.prototype=Object.assign(Object.create(pc.prototype),{constructor:bc,interpolate_:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=(n-t)/(i-t),l=e*o,u=l+o;l!==u;l+=4)X.slerpFlat(r,0,a,l-o,a,l,s);return r}}),xc.prototype=Object.assign(Object.create(gc.prototype),{constructor:xc,ValueTypeName:"quaternion",DefaultInterpolation:Sn,InterpolantFactoryMethodLinear:function(e){return new bc(this.times,this.values,this.getValueSize(),e)},InterpolantFactoryMethodSmooth:void 0}),Ec.prototype=Object.assign(Object.create(gc.prototype),{constructor:Ec,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:Tn,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Cc.prototype=Object.assign(Object.create(gc.prototype),{constructor:Cc,ValueTypeName:"vector"}),Object.assign(Bc,{parse:function(e){for(var t=[],n=e.tracks,i=1/(e.fps||1),r=0,a=n.length;r!==a;++r)t.push(_c(n[r]).scale(i));var o=new Bc(e.name,e.duration,t,e.blendMode);return o.uuid=e.uuid,o},toJSON:function(e){for(var t=[],n=e.tracks,e={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode},i=0,r=n.length;i!==r;++i)t.push(gc.toJSON(n[i]));return e},CreateFromMorphTargetSequence:function(e,t,n,i){for(var r=t.length,a=[],o=0;o<r;o++){var s=[],l=((u=[]).push((o+r-1)%r,o,(o+1)%r),s.push(0,1,0),dc.getKeyframeOrder(u)),u=dc.sortedArray(u,1,l),s=dc.sortedArray(s,1,l);i||0!==u[0]||(u.push(r),s.push(s[0])),a.push(new wc(".morphTargetInfluences["+t[o].name+"]",u,s).scale(1/n))}return new Bc(e,-1,a)},findByName:function(e,t){var n=e;Array.isArray(e)||(n=e.geometry&&e.geometry.animations||e.animations);for(var i=0;i<n.length;i++)if(n[i].name===t)return n[i];return null},CreateClipsFromMorphTargetSequences:function(e,t,n){for(var i={},r=/^([\w-]*?)([\d]+)$/,a=0,o=e.length;a<o;a++){var s,l=e[a],u=l.name.match(r);u&&1<u.length&&((s=i[u=u[1]])||(i[u]=s=[]),s.push(l))}var c,h=[];for(c in i)h.push(Bc.CreateFromMorphTargetSequence(c,i[c],t,n));return h},parseAnimation:function(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var n=function(e,t,n,i,r){var a;0!==n.length&&(dc.flattenJSON(n,n=[],a=[],i),0!==n.length)&&r.push(new e(t,n,a))},i=[],r=e.name||"default",a=e.fps||30,o=e.blendMode,s=e.length||-1,l=e.hierarchy||[],u=0;u<l.length;u++){var c=l[u].keys;if(c&&0!==c.length)if(c[0].morphTargets){for(var h,d={},p=void 0,p=0;p<c.length;p++)if(c[p].morphTargets)for(var f=0;f<c[p].morphTargets.length;f++)d[c[p].morphTargets[f]]=-1;for(h in d){for(var m=[],v=[],g=0;g!==c[p].morphTargets.length;++g){var A=c[p];m.push(A.time),v.push(A.morphTarget===h?1:0)}i.push(new wc(".morphTargetInfluence["+h+"]",m,v))}s=d.length*(a||1)}else{var y=".bones["+t[u].name+"]";n(Cc,y+".position",c,"pos",i),n(xc,y+".quaternion",c,"rot",i),n(Cc,y+".scale",c,"scl",i)}}return 0===i.length?null:new Bc(r,s,i,o)}}),Object.assign(Bc.prototype,{resetDuration:function(){for(var e=0,t=0,n=this.tracks.length;t!==n;++t)var i=this.tracks[t],e=Math.max(e,i.times[i.times.length-1]);return this.duration=e,this},trim:function(){for(var e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this},validate:function(){for(var e=!0,t=0;t<this.tracks.length;t++)e=e&&this.tracks[t].validate();return e},optimize:function(){for(var e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this},clone:function(){for(var e=[],t=0;t<this.tracks.length;t++)e.push(this.tracks[t].clone());return new Bc(this.name,this.duration,e,this.blendMode)},toJSON:function(){return Bc.toJSON(this)}});var Mc={enabled:!1,files:{},add:function(e,t){!1!==this.enabled&&(this.files[e]=t)},get:function(e){if(!1!==this.enabled)return this.files[e]},remove:function(e){delete this.files[e]},clear:function(){this.files={}}};function Tc(e,t,n){var i=this,r=!1,a=0,o=0,s=void 0,l=[];this.onStart=void 0,this.onLoad=e,this.onProgress=t,this.onError=n,this.itemStart=function(e){o++,!1===r&&void 0!==i.onStart&&i.onStart(e,a,o),r=!0},this.itemEnd=function(e){a++,void 0!==i.onProgress&&i.onProgress(e,a,o),a===o&&(r=!1,void 0!==i.onLoad)&&i.onLoad()},this.itemError=function(e){void 0!==i.onError&&i.onError(e)},this.resolveURL=function(e){return s?s(e):e},this.setURLModifier=function(e){return s=e,this},this.addHandler=function(e,t){return l.push(e,t),this},this.removeHandler=function(e){e=l.indexOf(e);return-1!==e&&l.splice(e,2),this},this.getHandler=function(e){for(var t=0,n=l.length;t<n;t+=2){var i=l[t],r=l[t+1];if(i.global&&(i.lastIndex=0),i.test(e))return r}return null}}var Sc=new Tc;function Ic(e){this.manager=void 0!==e?e:Sc,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}Object.assign(Ic.prototype,{load:function(){},loadAsync:function(n,i){var r=this;return new Promise(function(e,t){r.load(n,e,i,t)})},parse:function(){},setCrossOrigin:function(e){return this.crossOrigin=e,this},setWithCredentials:function(e){return this.withCredentials=e,this},setPath:function(e){return this.path=e,this},setResourcePath:function(e){return this.resourcePath=e,this},setRequestHeader:function(e){return this.requestHeader=e,this}});var Dc={};function Pc(e){Ic.call(this,e)}function kc(e){Ic.call(this,e)}function Lc(e){Ic.call(this,e)}function Rc(e){Ic.call(this,e)}function Fc(e){Ic.call(this,e)}function Oc(e){Ic.call(this,e)}function Nc(e){Ic.call(this,e)}function Gc(){this.type="Curve",this.arcLengthDivisions=200}function Uc(e,t,n,i,r,a,o,s){Gc.call(this),this.type="EllipseCurve",this.aX=e||0,this.aY=t||0,this.xRadius=n||1,this.yRadius=i||1,this.aStartAngle=r||0,this.aEndAngle=a||2*Math.PI,this.aClockwise=o||!1,this.aRotation=s||0}function zc(e,t,n,i,r,a){Uc.call(this,e,t,n,n,i,r,a),this.type="ArcCurve"}function Hc(){var r=0,a=0,o=0,s=0;function l(e,t,n,i){o=-3*(r=e)+3*t-2*(a=n)-i,s=2*e-2*t+n+i}return{initCatmullRom:function(e,t,n,i,r){l(t,n,r*(n-e),r*(i-t))},initNonuniformCatmullRom:function(e,t,n,i,r,a,o){e=(t-e)/r-(n-e)/(r+a)+(n-t)/a,r=(n-t)/a-(i-t)/(a+o)+(i-n)/o;l(t,n,e*=a,r*=a)},calc:function(e){var t=e*e;return r+a*e+o*t+s*(t*e)}}}Pc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Pc,load:function(u,e,t,n){void 0===u&&(u=""),void 0!==this.path&&(u=this.path+u),u=this.manager.resolveURL(u);var c=this,i=Mc.get(u);if(void 0!==i)return c.manager.itemStart(u),setTimeout(function(){e&&e(i),c.manager.itemEnd(u)},0),i;if(void 0===Dc[u]){var r,a=u.match(/^data:(.*?)(;base64)?,(.*)$/);if(a){var o=a[1],s=!!a[2],l=a[3],l=decodeURIComponent(l);s&&(l=atob(l));try{var h=(this.responseType||"").toLowerCase();switch(h){case"arraybuffer":case"blob":for(var d=new Uint8Array(l.length),p=0;p<l.length;p++)d[p]=l.charCodeAt(p);f="blob"===h?new Blob([d.buffer],{type:o}):d.buffer;break;case"document":var f=(new DOMParser).parseFromString(l,o);break;case"json":f=JSON.parse(l);break;default:f=l}setTimeout(function(){e&&e(f),c.manager.itemEnd(u)},0)}catch(e){setTimeout(function(){n&&n(e),c.manager.itemError(u),c.manager.itemEnd(u)},0)}}else{for(var m in Dc[u]=[],Dc[u].push({onLoad:e,onProgress:t,onError:n}),(r=new XMLHttpRequest).open("GET",u,!0),r.addEventListener("load",function(e){var t=this.response,n=Dc[u];if(delete Dc[u],200===this.status||0===this.status){0===this.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),Mc.add(u,t);for(var i=0,r=n.length;i<r;i++){var a=n[i];a.onLoad&&a.onLoad(t)}}else{for(var o=0,s=n.length;o<s;o++){var l=n[o];l.onError&&l.onError(e)}c.manager.itemError(u)}c.manager.itemEnd(u)},!1),r.addEventListener("progress",function(e){for(var t=Dc[u],n=0,i=t.length;n<i;n++){var r=t[n];r.onProgress&&r.onProgress(e)}},!1),r.addEventListener("error",function(e){var t=Dc[u];delete Dc[u];for(var n=0,i=t.length;n<i;n++){var r=t[n];r.onError&&r.onError(e)}c.manager.itemError(u),c.manager.itemEnd(u)},!1),r.addEventListener("abort",function(e){var t=Dc[u];delete Dc[u];for(var n=0,i=t.length;n<i;n++){var r=t[n];r.onError&&r.onError(e)}c.manager.itemError(u),c.manager.itemEnd(u)},!1),void 0!==this.responseType&&(r.responseType=this.responseType),void 0!==this.withCredentials&&(r.withCredentials=this.withCredentials),r.overrideMimeType&&r.overrideMimeType(void 0!==this.mimeType?this.mimeType:"text/plain"),this.requestHeader)r.setRequestHeader(m,this.requestHeader[m]);r.send(null)}return c.manager.itemStart(u),r}Dc[u].push({onLoad:e,onProgress:t,onError:n})},setResponseType:function(e){return this.responseType=e,this},setMimeType:function(e){return this.mimeType=e,this}}),kc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:kc,load:function(t,n,e,i){var r=this,a=new Pc(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(t,function(e){try{n(r.parse(JSON.parse(e)))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},parse:function(e){for(var t=[],n=0;n<e.length;n++){var i=Bc.parse(e[n]);t.push(i)}return t}}),Lc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Lc,load:function(e,a,n,i){var o=this,s=[],l=new Rl,r=new Pc(this.manager),u=(r.setPath(this.path),r.setResponseType("arraybuffer"),r.setRequestHeader(this.requestHeader),r.setWithCredentials(o.withCredentials),0);if(Array.isArray(e))for(var t=0,c=e.length;t<c;++t)!function(t){r.load(e[t],function(e){e=o.parse(e,!0);s[t]={width:e.width,height:e.height,format:e.format,mipmaps:e.mipmaps},6===(u+=1)&&(1===e.mipmapCount&&(l.minFilter=U),l.image=s,l.format=e.format,l.needsUpdate=!0,a)&&a(l)},n,i)}(t);else r.load(e,function(e){var t=o.parse(e,!0);if(t.isCubemap){for(var n=t.mipmaps.length/t.mipmapCount,i=0;i<n;i++){s[i]={mipmaps:[]};for(var r=0;r<t.mipmapCount;r++)s[i].mipmaps.push(t.mipmaps[i*t.mipmapCount+r]),s[i].format=t.format,s[i].width=t.width,s[i].height=t.height}l.image=s}else l.image.width=t.width,l.image.height=t.height,l.mipmaps=t.mipmaps;1===t.mipmapCount&&(l.minFilter=U),l.format=t.format,l.needsUpdate=!0,a&&a(l)},n,i);return l}}),Rc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Rc,load:function(t,e,n,i){void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);var r,a=this,o=Mc.get(t);return void 0!==o?(a.manager.itemStart(t),setTimeout(function(){e&&e(o),a.manager.itemEnd(t)},0),o):((r=document.createElementNS("http://www.w3.org/1999/xhtml","img")).addEventListener("load",s,!1),r.addEventListener("error",l,!1),"data:"!==t.substr(0,5)&&void 0!==this.crossOrigin&&(r.crossOrigin=this.crossOrigin),a.manager.itemStart(t),r.src=t,r);function s(){r.removeEventListener("load",s,!1),r.removeEventListener("error",l,!1),Mc.add(t,this),e&&e(this),a.manager.itemEnd(t)}function l(e){r.removeEventListener("load",s,!1),r.removeEventListener("error",l,!1),i&&i(e),a.manager.itemError(t),a.manager.itemEnd(t)}}}),Fc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Fc,load:function(e,n,t,i){var r=new ga,a=new Rc(this.manager),o=(a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),0);for(var s=0;s<e.length;++s)!function(t){a.load(e[t],function(e){r.images[t]=e,6===++o&&(r.needsUpdate=!0,n)&&n(r)},void 0,i)}(s);return r}}),Oc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Oc,load:function(e,t,n,i){var r=this,a=new ya,o=new Pc(this.manager);return o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setPath(this.path),o.setWithCredentials(r.withCredentials),o.load(e,function(e){e=r.parse(e);e&&(void 0!==e.image?a.image=e.image:void 0!==e.data&&(a.image.width=e.width,a.image.height=e.height,a.image.data=e.data),a.wrapS=void 0!==e.wrapS?e.wrapS:st,a.wrapT=void 0!==e.wrapT?e.wrapT:st,a.magFilter=void 0!==e.magFilter?e.magFilter:U,a.minFilter=void 0!==e.minFilter?e.minFilter:U,a.anisotropy=void 0!==e.anisotropy?e.anisotropy:1,void 0!==e.format&&(a.format=e.format),void 0!==e.type&&(a.type=e.type),void 0!==e.mipmaps&&(a.mipmaps=e.mipmaps,a.minFilter=pt),1===e.mipmapCount&&(a.minFilter=U),a.needsUpdate=!0,t)&&t(a,e)},n,i),a}}),Nc.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Nc,load:function(t,n,e,i){var r=new Xn,a=new Rc(this.manager);return a.setCrossOrigin(this.crossOrigin),a.setPath(this.path),a.load(t,function(e){r.image=e;e=0<t.search(/\.jpe?g($|\?)/i)||0===t.search(/^data\:image\/jpeg/);r.format=e?Tt:St,r.needsUpdate=!0,void 0!==n&&n(r)},e,i),r}}),Object.assign(Gc.prototype,{getPoint:function(){return console.warn("THREE.Curve: .getPoint() not implemented."),null},getPointAt:function(e,t){e=this.getUtoTmapping(e);return this.getPoint(e,t)},getPoints:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:5,t=[],n=0;n<=e;n++)t.push(this.getPoint(n/e));return t},getSpacedPoints:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:5,t=[],n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t},getLength:function(){var e=this.getLengths();return e[e.length-1]},getLengths:function(e){if(void 0===e&&(e=this.arcLengthDivisions),this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;var t,n=[],i=this.getPoint(0),r=0;n.push(0);for(var a=1;a<=e;a++)r+=(t=this.getPoint(a/e)).distanceTo(i),n.push(r),i=t;return this.cacheArcLengths=n},updateArcLengths:function(){this.needsUpdate=!0,this.getLengths()},getUtoTmapping:function(e,t){for(var n,i=this.getLengths(),r=0,a=i.length,o=t||e*i[a-1],s=0,l=a-1;s<=l;)if((n=i[r=Math.floor(s+(l-s)/2)]-o)<0)s=r+1;else{if(!(0<n)){l=r;break}l=r-1}return i[r=l]===o?r/(a-1):(r+(o-(t=i[r]))/(i[r+1]-t))/(a-1)},getTangent:function(e,t){var n=e-1e-4,e=e+1e-4,n=(1<e&&(e=1),this.getPoint(n=n<0?0:n)),e=this.getPoint(e),t=t||new(n.isVector2?Le:Re);return t.copy(e).sub(n).normalize(),t},getTangentAt:function(e,t){e=this.getUtoTmapping(e);return this.getTangent(e,t)},computeFrenetFrames:function(e,t){for(var n=new Re,i=[],r=[],a=[],o=new Re,s=new _e,l=0;l<=e;l++)i[l]=this.getTangentAt(l/e,new Re),i[l].normalize();r[0]=new Re,a[0]=new Re;var u=Number.MAX_VALUE,c=Math.abs(i[0].x),h=Math.abs(i[0].y),d=Math.abs(i[0].z);c<=u&&(u=c,n.set(1,0,0)),h<=u&&(u=h,n.set(0,1,0)),d<=u&&n.set(0,0,1),o.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],o),a[0].crossVectors(i[0],r[0]);for(var p,f=1;f<=e;f++)r[f]=r[f-1].clone(),a[f]=a[f-1].clone(),o.crossVectors(i[f-1],i[f]),o.length()>Number.EPSILON&&(o.normalize(),p=Math.acos(Be.clamp(i[f-1].dot(i[f]),-1,1)),r[f].applyMatrix4(s.makeRotationAxis(o,p))),a[f].crossVectors(i[f],r[f]);if(!0===t){var m=Math.acos(Be.clamp(r[0].dot(r[e]),-1,1));m/=e,0<i[0].dot(o.crossVectors(r[0],r[e]))&&(m=-m);for(var v=1;v<=e;v++)r[v].applyMatrix4(s.makeRotationAxis(i[v],m*v)),a[v].crossVectors(i[v],r[v])}return{tangents:i,normals:r,binormals:a}},clone:function(){return(new this.constructor).copy(this)},copy:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this},toJSON:function(){var e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e},fromJSON:function(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}),((Uc.prototype=Object.create(Gc.prototype)).constructor=Uc).prototype.isEllipseCurve=!0,Uc.prototype.getPoint=function(e,t){for(var t=t||new Le,n=2*Math.PI,i=this.aEndAngle-this.aStartAngle,r=Math.abs(i)<Number.EPSILON;i<0;)i+=n;for(;n<i;)i-=n;i<Number.EPSILON&&(i=r?0:n),!0!==this.aClockwise||r||(i===n?i=-n:i-=n);var a,o,s,l,r=this.aStartAngle+e*i,e=this.aX+this.xRadius*Math.cos(r),r=this.aY+this.yRadius*Math.sin(r);return 0!==this.aRotation&&(a=Math.cos(this.aRotation),o=Math.sin(this.aRotation),e=(s=e-this.aX)*a-(l=r-this.aY)*o+this.aX,r=s*o+l*a+this.aY),t.set(e,r)},Uc.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this},Uc.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e},Uc.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this},((zc.prototype=Object.create(Uc.prototype)).constructor=zc).prototype.isArcCurve=!0;var Qc=new Re,Vc=new Hc,jc=new Hc,Wc=new Hc;function Jc(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"centripetal",i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:.5;Gc.call(this),this.type="CatmullRomCurve3",this.points=e,this.closed=t,this.curveType=n,this.tension=i}function qc(e,t,n,i,r){var t=.5*(i-t),r=.5*(r-n),a=e*e;return(2*n-2*i+t+r)*(e*a)+(-3*n+3*i-2*t-r)*a+t*e+n}function Xc(e,t,n,i){return(r=1-(r=e))*r*t+2*(1-e)*e*n+e*e*i;var r}function Yc(e,t,n,i,r){return(a=1-(a=e))*a*a*t+3*(a=1-e)*a*e*n+3*(1-e)*e*e*i+e*e*e*r;var a}function Kc(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Le,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Le,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Le;Gc.call(this),this.type="CubicBezierCurve",this.v0=e,this.v1=t,this.v2=n,this.v3=i}function Zc(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Re,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Re,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Re;Gc.call(this),this.type="CubicBezierCurve3",this.v0=e,this.v1=t,this.v2=n,this.v3=i}function $c(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Le,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le;Gc.call(this),this.type="LineCurve",this.v1=e,this.v2=t}function eh(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Re,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re;Gc.call(this),this.type="LineCurve3",this.v1=e,this.v2=t}function th(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Le,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Le;Gc.call(this),this.type="QuadraticBezierCurve",this.v0=e,this.v1=t,this.v2=n}function nh(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new Re,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new Re;Gc.call(this),this.type="QuadraticBezierCurve3",this.v0=e,this.v1=t,this.v2=n}function ih(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];Gc.call(this),this.type="SplineCurve",this.points=e}((Jc.prototype=Object.create(Gc.prototype)).constructor=Jc).prototype.isCatmullRomCurve3=!0,Jc.prototype.getPoint=function(e){var t,n,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,r=this.points,a=r.length,e=(a-(this.closed?0:1))*e,o=Math.floor(e),e=e-o,s=(this.closed?o+=0<o?0:(Math.floor(Math.abs(o)/a)+1)*a:0===e&&o===a-1&&(o=a-2,e=1),t=this.closed||0<o?r[(o-1)%a]:(Qc.subVectors(r[0],r[1]).add(r[0]),Qc),r[o%a]),l=r[(o+1)%a],o=this.closed||o+2<a?r[(o+2)%a]:(Qc.subVectors(r[a-1],r[a-2]).add(r[a-1]),Qc);return"centripetal"===this.curveType||"chordal"===this.curveType?(r="chordal"===this.curveType?.5:.25,a=Math.pow(t.distanceToSquared(s),r),(n=Math.pow(s.distanceToSquared(l),r))<1e-4&&(n=1),a<1e-4&&(a=n),(r=Math.pow(l.distanceToSquared(o),r))<1e-4&&(r=n),Vc.initNonuniformCatmullRom(t.x,s.x,l.x,o.x,a,n,r),jc.initNonuniformCatmullRom(t.y,s.y,l.y,o.y,a,n,r),Wc.initNonuniformCatmullRom(t.z,s.z,l.z,o.z,a,n,r)):"catmullrom"===this.curveType&&(Vc.initCatmullRom(t.x,s.x,l.x,o.x,this.tension),jc.initCatmullRom(t.y,s.y,l.y,o.y,this.tension),Wc.initCatmullRom(t.z,s.z,l.z,o.z,this.tension)),i.set(Vc.calc(e),jc.calc(e),Wc.calc(e)),i},Jc.prototype.copy=function(e){Gc.prototype.copy.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push(i.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this},Jc.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);e.points=[];for(var t=0,n=this.points.length;t<n;t++){var i=this.points[t];e.points.push(i.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e},Jc.prototype.fromJSON=function(e){Gc.prototype.fromJSON.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push((new Re).fromArray(i))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this},((Kc.prototype=Object.create(Gc.prototype)).constructor=Kc).prototype.isCubicBezierCurve=!0,Kc.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le,n=this.v0,i=this.v1,r=this.v2,a=this.v3;return t.set(Yc(e,n.x,i.x,r.x,a.x),Yc(e,n.y,i.y,r.y,a.y)),t},Kc.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this},Kc.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e},Kc.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this},((Zc.prototype=Object.create(Gc.prototype)).constructor=Zc).prototype.isCubicBezierCurve3=!0,Zc.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=this.v0,i=this.v1,r=this.v2,a=this.v3;return t.set(Yc(e,n.x,i.x,r.x,a.x),Yc(e,n.y,i.y,r.y,a.y),Yc(e,n.z,i.z,r.z,a.z)),t},Zc.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this},Zc.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e},Zc.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this},(($c.prototype=Object.create(Gc.prototype)).constructor=$c).prototype.isLineCurve=!0,$c.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le;return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t},$c.prototype.getPointAt=function(e,t){return this.getPoint(e,t)},$c.prototype.getTangent=function(e,t){t=t||new Le;return t.copy(this.v2).sub(this.v1).normalize(),t},$c.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.v1.copy(e.v1),this.v2.copy(e.v2),this},$c.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},$c.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((eh.prototype=Object.create(Gc.prototype)).constructor=eh).prototype.isLineCurve3=!0,eh.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re;return 1===e?t.copy(this.v2):(t.copy(this.v2).sub(this.v1),t.multiplyScalar(e).add(this.v1)),t},eh.prototype.getPointAt=function(e,t){return this.getPoint(e,t)},eh.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.v1.copy(e.v1),this.v2.copy(e.v2),this},eh.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},eh.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((th.prototype=Object.create(Gc.prototype)).constructor=th).prototype.isQuadraticBezierCurve=!0,th.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le,n=this.v0,i=this.v1,r=this.v2;return t.set(Xc(e,n.x,i.x,r.x),Xc(e,n.y,i.y,r.y)),t},th.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this},th.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},th.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((nh.prototype=Object.create(Gc.prototype)).constructor=nh).prototype.isQuadraticBezierCurve3=!0,nh.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=this.v0,i=this.v1,r=this.v2;return t.set(Xc(e,n.x,i.x,r.x),Xc(e,n.y,i.y,r.y),Xc(e,n.z,i.z,r.z)),t},nh.prototype.copy=function(e){return Gc.prototype.copy.call(this,e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this},nh.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e},nh.prototype.fromJSON=function(e){return Gc.prototype.fromJSON.call(this,e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this},((ih.prototype=Object.create(Gc.prototype)).constructor=ih).prototype.isSplineCurve=!0,ih.prototype.getPoint=function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Le,n=this.points,e=(n.length-1)*e,i=Math.floor(e),e=e-i,r=n[0===i?i:i-1],a=n[i],o=n[i>n.length-2?n.length-1:i+1],n=n[i>n.length-3?n.length-1:i+2];return t.set(qc(e,r.x,a.x,o.x,n.x),qc(e,r.y,a.y,o.y,n.y)),t},ih.prototype.copy=function(e){Gc.prototype.copy.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push(i.clone())}return this},ih.prototype.toJSON=function(){var e=Gc.prototype.toJSON.call(this);e.points=[];for(var t=0,n=this.points.length;t<n;t++){var i=this.points[t];e.points.push(i.toArray())}return e},ih.prototype.fromJSON=function(e){Gc.prototype.fromJSON.call(this,e),this.points=[];for(var t=0,n=e.points.length;t<n;t++){var i=e.points[t];this.points.push((new Le).fromArray(i))}return this};var rh=Object.freeze({__proto__:null,ArcCurve:zc,CatmullRomCurve3:Jc,CubicBezierCurve:Kc,CubicBezierCurve3:Zc,EllipseCurve:Uc,LineCurve:$c,LineCurve3:eh,QuadraticBezierCurve:th,QuadraticBezierCurve3:nh,SplineCurve:ih});function ah(){Gc.call(this),this.type="CurvePath",this.curves=[],this.autoClose=!1}function oh(e){ah.call(this),this.type="Path",this.currentPoint=new Le,e&&this.setFromPoints(e)}function sh(e){oh.call(this,e),this.uuid=Be.generateUUID(),this.type="Shape",this.holes=[]}function lh(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;K.call(this),this.type="Light",this.color=new Me(e),this.intensity=t}function uh(e,t,n){lh.call(this,e,n),this.type="HemisphereLight",this.position.copy(K.DefaultUp),this.updateMatrix(),this.groundColor=new Me(t)}function ch(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.mapSize=new Le(512,512),this.map=null,this.mapPass=null,this.matrix=new _e,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new xa,this._frameExtents=new Le(1,1),this._viewportCount=1,this._viewports=[new Kn(0,0,1,1)]}function hh(){ch.call(this,new ma(50,1,.5,500)),this.focus=1}function dh(e,t,n,i,r,a){lh.call(this,e,t),this.type="SpotLight",this.position.copy(K.DefaultUp),this.updateMatrix(),this.target=new K,Object.defineProperty(this,"power",{get:function(){return this.intensity*Math.PI},set:function(e){this.intensity=e/Math.PI}}),this.distance=void 0!==n?n:0,this.angle=void 0!==i?i:Math.PI/3,this.penumbra=void 0!==r?r:0,this.decay=void 0!==a?a:1,this.shadow=new hh}function ph(){ch.call(this,new ma(90,1,.5,500)),this._frameExtents=new Le(4,2),this._viewportCount=6,this._viewports=[new Kn(2,1,1,1),new Kn(0,1,1,1),new Kn(3,1,1,1),new Kn(1,1,1,1),new Kn(3,0,1,1),new Kn(1,0,1,1)],this._cubeDirections=[new Re(1,0,0),new Re(-1,0,0),new Re(0,0,1),new Re(0,0,-1),new Re(0,1,0),new Re(0,-1,0)],this._cubeUps=[new Re(0,1,0),new Re(0,1,0),new Re(0,1,0),new Re(0,1,0),new Re(0,0,1),new Re(0,0,-1)]}function fh(e,t,n,i){lh.call(this,e,t),this.type="PointLight",Object.defineProperty(this,"power",{get:function(){return 4*this.intensity*Math.PI},set:function(e){this.intensity=e/(4*Math.PI)}}),this.distance=void 0!==n?n:0,this.decay=void 0!==i?i:1,this.shadow=new ph}function mh(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:-1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:-1,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:.1,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:2e3;fa.call(this),this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=n,this.bottom=i,this.near=r,this.far=a,this.updateProjectionMatrix()}function vh(){ch.call(this,new mh(-5,5,5,-5,.5,500))}function gh(e,t){lh.call(this,e,t),this.type="DirectionalLight",this.position.copy(K.DefaultUp),this.updateMatrix(),this.target=new K,this.shadow=new vh}function Ah(e,t){lh.call(this,e,t),this.type="AmbientLight"}function yh(e,t,n,i){lh.call(this,e,t),this.type="RectAreaLight",this.width=void 0!==n?n:10,this.height=void 0!==i?i:10}ah.prototype=Object.assign(Object.create(Gc.prototype),{constructor:ah,add:function(e){this.curves.push(e)},closePath:function(){var e=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);e.equals(t)||this.curves.push(new $c(t,e))},getPoint:function(e){for(var t,n,i,r=e*this.getLength(),a=this.getCurveLengths(),o=0;o<a.length;){if(a[o]>=r)return t=a[o]-r,i=(n=this.curves[o]).getLength(),n.getPointAt(0===i?0:1-t/i);o++}return null},getLength:function(){var e=this.getCurveLengths();return e[e.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var e=[],t=0,n=0,i=this.curves.length;n<i;n++)t+=this.curves[n].getLength(),e.push(t);return this.cacheLengths=e},getSpacedPoints:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:40,t=[],n=0;n<=e;n++)t.push(this.getPoint(n/e));return this.autoClose&&t.push(t[0]),t},getPoints:function(){for(var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:12,n=[],i=0,r=this.curves;i<r.length;i++)for(var a=r[i],o=a&&a.isEllipseCurve?2*t:a&&(a.isLineCurve||a.isLineCurve3)?1:a&&a.isSplineCurve?t*a.points.length:t,s=a.getPoints(o),l=0;l<s.length;l++){var u=s[l];e&&e.equals(u)||(n.push(u),e=u)}return this.autoClose&&1<n.length&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n},copy:function(e){Gc.prototype.copy.call(this,e),this.curves=[];for(var t=0,n=e.curves.length;t<n;t++){var i=e.curves[t];this.curves.push(i.clone())}return this.autoClose=e.autoClose,this},toJSON:function(){var e=Gc.prototype.toJSON.call(this);e.autoClose=this.autoClose,e.curves=[];for(var t=0,n=this.curves.length;t<n;t++){var i=this.curves[t];e.curves.push(i.toJSON())}return e},fromJSON:function(e){Gc.prototype.fromJSON.call(this,e),this.autoClose=e.autoClose,this.curves=[];for(var t=0,n=e.curves.length;t<n;t++){var i=e.curves[t];this.curves.push((new rh[i.type]).fromJSON(i))}return this}}),oh.prototype=Object.assign(Object.create(ah.prototype),{constructor:oh,setFromPoints:function(e){this.moveTo(e[0].x,e[0].y);for(var t=1,n=e.length;t<n;t++)this.lineTo(e[t].x,e[t].y);return this},moveTo:function(e,t){return this.currentPoint.set(e,t),this},lineTo:function(e,t){var n=new $c(this.currentPoint.clone(),new Le(e,t));return this.curves.push(n),this.currentPoint.set(e,t),this},quadraticCurveTo:function(e,t,n,i){e=new th(this.currentPoint.clone(),new Le(e,t),new Le(n,i));return this.curves.push(e),this.currentPoint.set(n,i),this},bezierCurveTo:function(e,t,n,i,r,a){e=new Kc(this.currentPoint.clone(),new Le(e,t),new Le(n,i),new Le(r,a));return this.curves.push(e),this.currentPoint.set(r,a),this},splineThru:function(e){var t=new ih([this.currentPoint.clone()].concat(e));return this.curves.push(t),this.currentPoint.copy(e[e.length-1]),this},arc:function(e,t,n,i,r,a){var o=this.currentPoint.x,s=this.currentPoint.y;return this.absarc(e+o,t+s,n,i,r,a),this},absarc:function(e,t,n,i,r,a){return this.absellipse(e,t,n,n,i,r,a),this},ellipse:function(e,t,n,i,r,a,o,s){var l=this.currentPoint.x,u=this.currentPoint.y;return this.absellipse(e+l,t+u,n,i,r,a,o,s),this},absellipse:function(e,t,n,i,r,a,o,s){e=new Uc(e,t,n,i,r,a,o,s),0<this.curves.length&&((t=e.getPoint(0)).equals(this.currentPoint)||this.lineTo(t.x,t.y)),this.curves.push(e),n=e.getPoint(1);return this.currentPoint.copy(n),this},copy:function(e){return ah.prototype.copy.call(this,e),this.currentPoint.copy(e.currentPoint),this},toJSON:function(){var e=ah.prototype.toJSON.call(this);return e.currentPoint=this.currentPoint.toArray(),e},fromJSON:function(e){return ah.prototype.fromJSON.call(this,e),this.currentPoint.fromArray(e.currentPoint),this}}),sh.prototype=Object.assign(Object.create(oh.prototype),{constructor:sh,getPointsHoles:function(e){for(var t=[],n=0,i=this.holes.length;n<i;n++)t[n]=this.holes[n].getPoints(e);return t},extractPoints:function(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}},copy:function(e){oh.prototype.copy.call(this,e),this.holes=[];for(var t=0,n=e.holes.length;t<n;t++){var i=e.holes[t];this.holes.push(i.clone())}return this},toJSON:function(){var e=oh.prototype.toJSON.call(this);e.uuid=this.uuid,e.holes=[];for(var t=0,n=this.holes.length;t<n;t++){var i=this.holes[t];e.holes.push(i.toJSON())}return e},fromJSON:function(e){oh.prototype.fromJSON.call(this,e),this.uuid=e.uuid,this.holes=[];for(var t=0,n=e.holes.length;t<n;t++){var i=e.holes[t];this.holes.push((new oh).fromJSON(i))}return this}}),lh.prototype=Object.assign(Object.create(K.prototype),{constructor:lh,isLight:!0,copy:function(e){return K.prototype.copy.call(this,e),this.color.copy(e.color),this.intensity=e.intensity,this},toJSON:function(e){e=K.prototype.toJSON.call(this,e);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,void 0!==this.groundColor&&(e.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(e.object.distance=this.distance),void 0!==this.angle&&(e.object.angle=this.angle),void 0!==this.decay&&(e.object.decay=this.decay),void 0!==this.penumbra&&(e.object.penumbra=this.penumbra),void 0!==this.shadow&&(e.object.shadow=this.shadow.toJSON()),e}}),uh.prototype=Object.assign(Object.create(lh.prototype),{constructor:uh,isHemisphereLight:!0,copy:function(e){return lh.prototype.copy.call(this,e),this.groundColor.copy(e.groundColor),this}}),Object.assign(ch.prototype,{_projScreenMatrix:new _e,_lightPositionWorld:new Re,_lookTarget:new Re,getViewportCount:function(){return this._viewportCount},getFrustum:function(){return this._frustum},updateMatrices:function(e){var t=this.camera,n=this.matrix,i=this._projScreenMatrix,r=this._lookTarget,a=this._lightPositionWorld;a.setFromMatrixPosition(e.matrixWorld),t.position.copy(a),r.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(r),t.updateMatrixWorld(),i.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(i),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(t.projectionMatrix),n.multiply(t.matrixWorldInverse)},getViewport:function(e){return this._viewports[e]},getFrameExtents:function(){return this._frameExtents},copy:function(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var e={};return 0!==this.bias&&(e.bias=this.bias),0!==this.normalBias&&(e.normalBias=this.normalBias),1!==this.radius&&(e.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}),hh.prototype=Object.assign(Object.create(ch.prototype),{constructor:hh,isSpotLightShadow:!0,updateMatrices:function(e){var t=this.camera,n=2*Be.RAD2DEG*e.angle*this.focus,i=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;n===t.fov&&i===t.aspect&&r===t.far||(t.fov=n,t.aspect=i,t.far=r,t.updateProjectionMatrix()),ch.prototype.updateMatrices.call(this,e)}}),dh.prototype=Object.assign(Object.create(lh.prototype),{constructor:dh,isSpotLight:!0,copy:function(e){return lh.prototype.copy.call(this,e),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}),ph.prototype=Object.assign(Object.create(ch.prototype),{constructor:ph,isPointLightShadow:!0,updateMatrices:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.camera,i=this.matrix,r=this._lightPositionWorld,a=this._lookTarget,o=this._projScreenMatrix;r.setFromMatrixPosition(e.matrixWorld),n.position.copy(r),a.copy(n.position),a.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(a),n.updateMatrixWorld(),i.makeTranslation(-r.x,-r.y,-r.z),o.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix(o)}}),fh.prototype=Object.assign(Object.create(lh.prototype),{constructor:fh,isPointLight:!0,copy:function(e){return lh.prototype.copy.call(this,e),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}),mh.prototype=Object.assign(Object.create(fa.prototype),{constructor:mh,isOrthographicCamera:!0,copy:function(e,t){return fa.prototype.copy.call(this,e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this},setViewOffset:function(e,t,n,i,r,a){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()},clearViewOffset:function(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()},updateProjectionMatrix:function(){var e,t=(this.right-this.left)/(2*this.zoom),n=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2,a=i-t,i=i+t,t=r+n,r=r-n;null!==this.view&&this.view.enabled&&(n=(this.right-this.left)/this.view.fullWidth/this.zoom,e=(this.top-this.bottom)/this.view.fullHeight/this.zoom,i=(a+=n*this.view.offsetX)+n*this.view.width,r=(t-=e*this.view.offsetY)-e*this.view.height),this.projectionMatrix.makeOrthographic(a,i,t,r,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()},toJSON:function(e){e=K.prototype.toJSON.call(this,e);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,null!==this.view&&(e.object.view=Object.assign({},this.view)),e}}),vh.prototype=Object.assign(Object.create(ch.prototype),{constructor:vh,isDirectionalLightShadow:!0,updateMatrices:function(e){ch.prototype.updateMatrices.call(this,e)}}),gh.prototype=Object.assign(Object.create(lh.prototype),{constructor:gh,isDirectionalLight:!0,copy:function(e){return lh.prototype.copy.call(this,e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}),Ah.prototype=Object.assign(Object.create(lh.prototype),{constructor:Ah,isAmbientLight:!0}),yh.prototype=Object.assign(Object.create(lh.prototype),{constructor:yh,isRectAreaLight:!0,copy:function(e){return lh.prototype.copy.call(this,e),this.width=e.width,this.height=e.height,this},toJSON:function(e){e=lh.prototype.toJSON.call(this,e);return e.object.width=this.width,e.object.height=this.height,e}});var wh=function(){function t(){te(this,t),Object.defineProperty(this,"isSphericalHarmonics3",{value:!0}),this.coefficients=[];for(var e=0;e<9;e++)this.coefficients.push(new Re)}return A(t,[{key:"set",value:function(e){for(var t=0;t<9;t++)this.coefficients[t].copy(e[t]);return this}},{key:"zero",value:function(){for(var e=0;e<9;e++)this.coefficients[e].set(0,0,0);return this}},{key:"getAt",value:function(e,t){var n=e.x,i=e.y,e=e.z,r=this.coefficients;return t.copy(r[0]).multiplyScalar(.282095),t.addScaledVector(r[1],.488603*i),t.addScaledVector(r[2],.488603*e),t.addScaledVector(r[3],.488603*n),t.addScaledVector(r[4],n*i*1.092548),t.addScaledVector(r[5],i*e*1.092548),t.addScaledVector(r[6],.315392*(3*e*e-1)),t.addScaledVector(r[7],n*e*1.092548),t.addScaledVector(r[8],.546274*(n*n-i*i)),t}},{key:"getIrradianceAt",value:function(e,t){var n=e.x,i=e.y,e=e.z,r=this.coefficients;return t.copy(r[0]).multiplyScalar(.886227),t.addScaledVector(r[1],1.023328*i),t.addScaledVector(r[2],1.023328*e),t.addScaledVector(r[3],1.023328*n),t.addScaledVector(r[4],.858086*n*i),t.addScaledVector(r[5],.858086*i*e),t.addScaledVector(r[6],.743125*e*e-.247708),t.addScaledVector(r[7],.858086*n*e),t.addScaledVector(r[8],.429043*(n*n-i*i)),t}},{key:"add",value:function(e){for(var t=0;t<9;t++)this.coefficients[t].add(e.coefficients[t]);return this}},{key:"addScaledSH",value:function(e,t){for(var n=0;n<9;n++)this.coefficients[n].addScaledVector(e.coefficients[n],t);return this}},{key:"scale",value:function(e){for(var t=0;t<9;t++)this.coefficients[t].multiplyScalar(e);return this}},{key:"lerp",value:function(e,t){for(var n=0;n<9;n++)this.coefficients[n].lerp(e.coefficients[n],t);return this}},{key:"equals",value:function(e){for(var t=0;t<9;t++)if(!this.coefficients[t].equals(e.coefficients[t]))return!1;return!0}},{key:"copy",value:function(e){return this.set(e.coefficients)}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.coefficients,i=0;i<9;i++)n[i].fromArray(e,t+3*i);return this}},{key:"toArray",value:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.coefficients,i=0;i<9;i++)n[i].toArray(e,t+3*i);return e}}],[{key:"getBasisAt",value:function(e,t){var n=e.x,i=e.y,e=e.z;t[0]=.282095,t[1]=.488603*i,t[2]=.488603*e,t[3]=.488603*n,t[4]=1.092548*n*i,t[5]=1.092548*i*e,t[6]=.315392*(3*e*e-1),t[7]=1.092548*n*e,t[8]=.546274*(n*n-i*i)}}]),t}();function bh(e,t){lh.call(this,void 0,t),this.type="LightProbe",this.sh=void 0!==e?e:new wh}function xh(e){Ic.call(this,e),this.textures={}}bh.prototype=Object.assign(Object.create(lh.prototype),{constructor:bh,isLightProbe:!0,copy:function(e){return lh.prototype.copy.call(this,e),this.sh.copy(e.sh),this},fromJSON:function(e){return this.intensity=e.intensity,this.sh.fromArray(e.sh),this},toJSON:function(e){e=lh.prototype.toJSON.call(this,e);return e.object.sh=this.sh.toArray(),e}}),xh.prototype=Object.assign(Object.create(Ic.prototype),{constructor:xh,load:function(t,n,e,i){var r=this,a=new Pc(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(t,function(e){try{n(r.parse(JSON.parse(e)))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},parse:function(e){var t=this.textures;function n(e){return void 0===t[e]&&console.warn("THREE.MaterialLoader: Undefined texture",e),t[e]}var i,r=new hc[e.type];if(void 0!==e.uuid&&(r.uuid=e.uuid),void 0!==e.name&&(r.name=e.name),void 0!==e.color&&void 0!==r.color&&r.color.setHex(e.color),void 0!==e.roughness&&(r.roughness=e.roughness),void 0!==e.metalness&&(r.metalness=e.metalness),void 0!==e.sheen&&(r.sheen=(new Me).setHex(e.sheen)),void 0!==e.emissive&&void 0!==r.emissive&&r.emissive.setHex(e.emissive),void 0!==e.specular&&void 0!==r.specular&&r.specular.setHex(e.specular),void 0!==e.shininess&&(r.shininess=e.shininess),void 0!==e.clearcoat&&(r.clearcoat=e.clearcoat),void 0!==e.clearcoatRoughness&&(r.clearcoatRoughness=e.clearcoatRoughness),void 0!==e.fog&&(r.fog=e.fog),void 0!==e.flatShading&&(r.flatShading=e.flatShading),void 0!==e.blending&&(r.blending=e.blending),void 0!==e.combine&&(r.combine=e.combine),void 0!==e.side&&(r.side=e.side),void 0!==e.opacity&&(r.opacity=e.opacity),void 0!==e.transparent&&(r.transparent=e.transparent),void 0!==e.alphaTest&&(r.alphaTest=e.alphaTest),void 0!==e.depthTest&&(r.depthTest=e.depthTest),void 0!==e.depthWrite&&(r.depthWrite=e.depthWrite),void 0!==e.colorWrite&&(r.colorWrite=e.colorWrite),void 0!==e.stencilWrite&&(r.stencilWrite=e.stencilWrite),void 0!==e.stencilWriteMask&&(r.stencilWriteMask=e.stencilWriteMask),void 0!==e.stencilFunc&&(r.stencilFunc=e.stencilFunc),void 0!==e.stencilRef&&(r.stencilRef=e.stencilRef),void 0!==e.stencilFuncMask&&(r.stencilFuncMask=e.stencilFuncMask),void 0!==e.stencilFail&&(r.stencilFail=e.stencilFail),void 0!==e.stencilZFail&&(r.stencilZFail=e.stencilZFail),void 0!==e.stencilZPass&&(r.stencilZPass=e.stencilZPass),void 0!==e.wireframe&&(r.wireframe=e.wireframe),void 0!==e.wireframeLinewidth&&(r.wireframeLinewidth=e.wireframeLinewidth),void 0!==e.wireframeLinecap&&(r.wireframeLinecap=e.wireframeLinecap),void 0!==e.wireframeLinejoin&&(r.wireframeLinejoin=e.wireframeLinejoin),void 0!==e.rotation&&(r.rotation=e.rotation),1!==e.linewidth&&(r.linewidth=e.linewidth),void 0!==e.dashSize&&(r.dashSize=e.dashSize),void 0!==e.gapSize&&(r.gapSize=e.gapSize),void 0!==e.scale&&(r.scale=e.scale),void 0!==e.polygonOffset&&(r.polygonOffset=e.polygonOffset),void 0!==e.polygonOffsetFactor&&(r.polygonOffsetFactor=e.polygonOffsetFactor),void 0!==e.polygonOffsetUnits&&(r.polygonOffsetUnits=e.polygonOffsetUnits),void 0!==e.skinning&&(r.skinning=e.skinning),void 0!==e.morphTargets&&(r.morphTargets=e.morphTargets),void 0!==e.morphNormals&&(r.morphNormals=e.morphNormals),void 0!==e.dithering&&(r.dithering=e.dithering),void 0!==e.vertexTangents&&(r.vertexTangents=e.vertexTangents),void 0!==e.visible&&(r.visible=e.visible),void 0!==e.toneMapped&&(r.toneMapped=e.toneMapped),void 0!==e.userData&&(r.userData=e.userData),void 0!==e.vertexColors&&("number"==typeof e.vertexColors?r.vertexColors=0<e.vertexColors:r.vertexColors=e.vertexColors),void 0!==e.uniforms)for(var a in e.uniforms){var o=e.uniforms[a];switch(r.uniforms[a]={},o.type){case"t":r.uniforms[a].value=n(o.value);break;case"c":r.uniforms[a].value=(new Me).setHex(o.value);break;case"v2":r.uniforms[a].value=(new Le).fromArray(o.value);break;case"v3":r.uniforms[a].value=(new Re).fromArray(o.value);break;case"v4":r.uniforms[a].value=(new Kn).fromArray(o.value);break;case"m3":r.uniforms[a].value=(new Wn).fromArray(o.value);break;case"m4":r.uniforms[a].value=(new _e).fromArray(o.value);break;default:r.uniforms[a].value=o.value}}if(void 0!==e.defines&&(r.defines=e.defines),void 0!==e.vertexShader&&(r.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(r.fragmentShader=e.fragmentShader),void 0!==e.extensions)for(var s in e.extensions)r.extensions[s]=e.extensions[s];return void 0!==e.shading&&(r.flatShading=1===e.shading),void 0!==e.size&&(r.size=e.size),void 0!==e.sizeAttenuation&&(r.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(r.map=n(e.map)),void 0!==e.matcap&&(r.matcap=n(e.matcap)),void 0!==e.alphaMap&&(r.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(r.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(r.bumpScale=e.bumpScale),void 0!==e.normalMap&&(r.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(r.normalMapType=e.normalMapType),void 0!==e.normalScale&&(i=e.normalScale,!1===Array.isArray(i)&&(i=[i,i]),r.normalScale=(new Le).fromArray(i)),void 0!==e.displacementMap&&(r.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(r.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(r.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(r.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(r.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(r.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(r.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(r.specularMap=n(e.specularMap)),void 0!==e.envMap&&(r.envMap=n(e.envMap)),void 0!==e.envMapIntensity&&(r.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(r.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(r.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(r.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(r.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(r.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(r.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(r.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(r.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(r.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(r.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(r.clearcoatNormalScale=(new Le).fromArray(e.clearcoatNormalScale)),void 0!==e.transmission&&(r.transmission=e.transmission),void 0!==e.transmissionMap&&(r.transmissionMap=n(e.transmissionMap)),r},setTextures:function(e){return this.textures=e,this}});var Eh={decodeText:function(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);for(var t="",n=0,i=e.length;n<i;n++)t+=String.fromCharCode(e[n]);try{return decodeURIComponent(escape(t))}catch(e){return t}},extractUrlBase:function(e){var t=e.lastIndexOf("/");return-1===t?"./":e.substr(0,t+1)}};function Ch(){j.call(this),this.type="InstancedBufferGeometry",this.instanceCount=1/0}function Bh(e,t,n,i){"number"==typeof n&&(i=n,n=!1,console.error("THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.")),Q.call(this,e,t,n),this.meshPerAttribute=i||1}function _h(e){Ic.call(this,e)}Ch.prototype=Object.assign(Object.create(j.prototype),{constructor:Ch,isInstancedBufferGeometry:!0,copy:function(e){return j.prototype.copy.call(this,e),this.instanceCount=e.instanceCount,this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var e=j.prototype.toJSON.call(this);return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}),Bh.prototype=Object.assign(Object.create(Q.prototype),{constructor:Bh,isInstancedBufferAttribute:!0,copy:function(e){return Q.prototype.copy.call(this,e),this.meshPerAttribute=e.meshPerAttribute,this},toJSON:function(){var e=Q.prototype.toJSON.call(this);return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}),_h.prototype=Object.assign(Object.create(Ic.prototype),{constructor:_h,load:function(t,n,e,i){var r=this,a=new Pc(r.manager);a.setPath(r.path),a.setRequestHeader(r.requestHeader),a.setWithCredentials(r.withCredentials),a.load(t,function(e){try{n(r.parse(JSON.parse(e)))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},parse:function(e){var r={},a={};function t(e,t){var n,i;return void 0!==r[t]?r[t]:(n=e.interleavedBuffers[t],e=e,i=n.buffer,i=void 0!==a[i]?a[i]:(e=e.arrayBuffers[i],e=new Uint32Array(e).buffer,a[i]=e),(e=new ks(Lr(n.type,i),n.stride)).uuid=n.uuid,r[t]=e)}var n,i=new(e.isInstancedBufferGeometry?Ch:j),o=e.data.index,s=(void 0!==o&&(o=Lr(o.type,o.array),i.setIndex(new Q(o,1))),e.data.attributes);for(n in s){var l,u=s[n],c=void 0;c=u.isInterleavedBufferAttribute?new Fs(t(e.data,u.data),u.itemSize,u.offset,u.normalized):(l=Lr(u.type,u.array),new(u.isInstancedBufferAttribute?Bh:Q)(l,u.itemSize,u.normalized)),void 0!==u.name&&(c.name=u.name),i.setAttribute(n,c)}var h=e.data.morphAttributes;if(h)for(var d in h){for(var p=h[d],f=[],m=0,v=p.length;m<v;m++){var g=p[m],A=void 0;A=g.isInterleavedBufferAttribute?new Fs(t(e.data,g.data),g.itemSize,g.offset,g.normalized):new Q(Lr(g.type,g.array),g.itemSize,g.normalized),void 0!==g.name&&(A.name=g.name),f.push(A)}i.morphAttributes[d]=f}e.data.morphTargetsRelative&&(i.morphTargetsRelative=!0);var y=e.data.groups||e.data.drawcalls||e.data.offsets;if(void 0!==y)for(var w=0,b=y.length;w!==b;++w){var x=y[w];i.addGroup(x.start,x.count,x.materialIndex)}var E,o=e.data.boundingSphere;return void 0!==o&&(E=new Re,void 0!==o.center&&E.fromArray(o.center),i.boundingSphere=new gi(E,o.radius)),e.name&&(i.name=e.name),e.userData&&(i.userData=e.userData),i}});var Mh,Th=function(){y(n,Ic);var t=C(n);function n(e){return te(this,n),t.call(this,e)}return A(n,[{key:"load",value:function(n,i,e,r){var a=this,t=""===this.path?Eh.extractUrlBase(n):this.path,t=(this.resourcePath=this.resourcePath||t,new Pc(this.manager));t.setPath(this.path),t.setRequestHeader(this.requestHeader),t.setWithCredentials(this.withCredentials),t.load(n,function(e){var t=null;try{t=JSON.parse(e)}catch(e){return void 0!==r&&r(e),void console.error("THREE:ObjectLoader: Can't parse "+n+".",e.message)}e=t.metadata;void 0===e||void 0===e.type||"geometry"===e.type.toLowerCase()?console.error("THREE.ObjectLoader: Can't load "+n):a.parse(t,i)},e,r)}},{key:"parse",value:function(e,t){var n=this.parseAnimations(e.animations),i=this.parseShapes(e.shapes),i=this.parseGeometries(e.geometries,i),r=this.parseImages(e.images,function(){void 0!==t&&t(o)}),a=this.parseTextures(e.textures,r),a=this.parseMaterials(e.materials,a),o=this.parseObject(e.object,i,a,n),i=this.parseSkeletons(e.skeletons,o);if(this.bindSkeletons(o,i),void 0!==t){var s,l=!1;for(s in r)if(r[s]instanceof HTMLImageElement){l=!0;break}!1===l&&t(o)}return o}},{key:"parseShapes",value:function(e){var t={};if(void 0!==e)for(var n=0,i=e.length;n<i;n++){var r=(new sh).fromJSON(e[n]);t[r.uuid]=r}return t}},{key:"parseSkeletons",value:function(e,t){var n={},i={};if(t.traverse(function(e){e.isBone&&(i[e.uuid]=e)}),void 0!==e)for(var r=0,a=e.length;r<a;r++){var o=(new cl).fromJSON(e[r],i);n[o.uuid]=o}return n}},{key:"parseGeometries",value:function(e,t){var n={};if(void 0!==e)for(var i=new _h,r=0,a=e.length;r<a;r++){var o=void 0,s=e[r];switch(s.type){case"PlaneGeometry":case"PlaneBufferGeometry":o=new ec[s.type](s.width,s.height,s.widthSegments,s.heightSegments);break;case"BoxGeometry":case"BoxBufferGeometry":case"CubeGeometry":o=new ec[s.type](s.width,s.height,s.depth,s.widthSegments,s.heightSegments,s.depthSegments);break;case"CircleGeometry":case"CircleBufferGeometry":o=new ec[s.type](s.radius,s.segments,s.thetaStart,s.thetaLength);break;case"CylinderGeometry":case"CylinderBufferGeometry":o=new ec[s.type](s.radiusTop,s.radiusBottom,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);break;case"ConeGeometry":case"ConeBufferGeometry":o=new ec[s.type](s.radius,s.height,s.radialSegments,s.heightSegments,s.openEnded,s.thetaStart,s.thetaLength);break;case"SphereGeometry":case"SphereBufferGeometry":o=new ec[s.type](s.radius,s.widthSegments,s.heightSegments,s.phiStart,s.phiLength,s.thetaStart,s.thetaLength);break;case"DodecahedronGeometry":case"DodecahedronBufferGeometry":case"IcosahedronGeometry":case"IcosahedronBufferGeometry":case"OctahedronGeometry":case"OctahedronBufferGeometry":case"TetrahedronGeometry":case"TetrahedronBufferGeometry":o=new ec[s.type](s.radius,s.detail);break;case"RingGeometry":case"RingBufferGeometry":o=new ec[s.type](s.innerRadius,s.outerRadius,s.thetaSegments,s.phiSegments,s.thetaStart,s.thetaLength);break;case"TorusGeometry":case"TorusBufferGeometry":o=new ec[s.type](s.radius,s.tube,s.radialSegments,s.tubularSegments,s.arc);break;case"TorusKnotGeometry":case"TorusKnotBufferGeometry":o=new ec[s.type](s.radius,s.tube,s.tubularSegments,s.radialSegments,s.p,s.q);break;case"TubeGeometry":case"TubeBufferGeometry":o=new ec[s.type]((new rh[s.path.type]).fromJSON(s.path),s.tubularSegments,s.radius,s.radialSegments,s.closed);break;case"LatheGeometry":case"LatheBufferGeometry":o=new ec[s.type](s.points,s.segments,s.phiStart,s.phiLength);break;case"PolyhedronGeometry":case"PolyhedronBufferGeometry":o=new ec[s.type](s.vertices,s.indices,s.radius,s.details);break;case"ShapeGeometry":case"ShapeBufferGeometry":for(var l=[],u=0,c=s.shapes.length;u<c;u++){var h=t[s.shapes[u]];l.push(h)}o=new ec[s.type](l,s.curveSegments);break;case"ExtrudeGeometry":case"ExtrudeBufferGeometry":l=[];for(var d=0,p=s.shapes.length;d<p;d++){var f=t[s.shapes[d]];l.push(f)}var m=s.options.extrudePath;void 0!==m&&(s.options.extrudePath=(new rh[m.type]).fromJSON(m)),o=new ec[s.type](l,s.options);break;case"BufferGeometry":case"InstancedBufferGeometry":o=i.parse(s);break;case"Geometry":console.error('THREE.ObjectLoader: Loading "Geometry" is not supported anymore.');break;default:console.warn('THREE.ObjectLoader: Unsupported geometry type "'+s.type+'"');continue}o.uuid=s.uuid,void 0!==s.name&&(o.name=s.name),!0===o.isBufferGeometry&&void 0!==s.userData&&(o.userData=s.userData),n[s.uuid]=o}return n}},{key:"parseMaterials",value:function(e,t){var n={},i={};if(void 0!==e){var r=new xh;r.setTextures(t);for(var a=0,o=e.length;a<o;a++){var s=e[a];if("MultiMaterial"===s.type){for(var l=[],u=0;u<s.materials.length;u++){var c=s.materials[u];void 0===n[c.uuid]&&(n[c.uuid]=r.parse(c)),l.push(n[c.uuid])}i[s.uuid]=l}else void 0===n[s.uuid]&&(n[s.uuid]=r.parse(s)),i[s.uuid]=n[s.uuid]}}return i}},{key:"parseAnimations",value:function(e){var t={};if(void 0!==e)for(var n=0;n<e.length;n++){var i=e[n],i=Bc.parse(i);t[i.uuid]=i}return t}},{key:"parseImages",value:function(e,t){var i=this,n={};function r(e){var t,n;return"string"==typeof e?(t=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(t=e)?t:i.resourcePath+t,n=t,i.manager.itemStart(n),a.load(n,function(){i.manager.itemEnd(n)},void 0,function(){i.manager.itemError(n),i.manager.itemEnd(n)})):e.data?{data:Lr(e.type,e.data),width:e.width,height:e.height}:null}if(void 0!==e&&0<e.length){var a,t=new Tc(t);(a=new Rc(t)).setCrossOrigin(this.crossOrigin);for(var o=0,s=e.length;o<s;o++){var l=e[o],u=l.url;if(Array.isArray(u)){n[l.uuid]=[];for(var c=0,h=u.length;c<h;c++){var d=r(u[c]);null!==d&&(d instanceof HTMLImageElement?n[l.uuid].push(d):n[l.uuid].push(new ya(d.data,d.width,d.height)))}}else{var p=r(l.url);null!==p&&(n[l.uuid]=p)}}}return n}},{key:"parseTextures",value:function(e,t){function n(e,t){return"number"==typeof e?e:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",e),t[e])}var i={};if(void 0!==e)for(var r=0,a=e.length;r<a;r++){var o=e[r],s=(void 0===o.image&&console.warn('THREE.ObjectLoader: No "image" specified for',o.uuid),void 0===t[o.image]&&console.warn("THREE.ObjectLoader: Undefined image",o.image),void 0),l=t[o.image];Array.isArray(l)?(s=new ga(l),6===l.length&&(s.needsUpdate=!0)):(s=l&&l.data?new ya(l.data,l.width,l.height):new Xn(l),l&&(s.needsUpdate=!0)),s.uuid=o.uuid,void 0!==o.name&&(s.name=o.name),void 0!==o.mapping&&(s.mapping=n(o.mapping,Sh)),void 0!==o.offset&&s.offset.fromArray(o.offset),void 0!==o.repeat&&s.repeat.fromArray(o.repeat),void 0!==o.center&&s.center.fromArray(o.center),void 0!==o.rotation&&(s.rotation=o.rotation),void 0!==o.wrap&&(s.wrapS=n(o.wrap[0],Ih),s.wrapT=n(o.wrap[1],Ih)),void 0!==o.format&&(s.format=o.format),void 0!==o.type&&(s.type=o.type),void 0!==o.encoding&&(s.encoding=o.encoding),void 0!==o.minFilter&&(s.minFilter=n(o.minFilter,Dh)),void 0!==o.magFilter&&(s.magFilter=n(o.magFilter,Dh)),void 0!==o.anisotropy&&(s.anisotropy=o.anisotropy),void 0!==o.flipY&&(s.flipY=o.flipY),void 0!==o.premultiplyAlpha&&(s.premultiplyAlpha=o.premultiplyAlpha),void 0!==o.unpackAlignment&&(s.unpackAlignment=o.unpackAlignment),i[o.uuid]=s}return i}},{key:"parseObject",value:function(e,t,a,n){function i(e){return void 0===t[e]&&console.warn("THREE.ObjectLoader: Undefined geometry",e),t[e]}function r(e){if(void 0!==e){if(Array.isArray(e)){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n];void 0===a[r]&&console.warn("THREE.ObjectLoader: Undefined material",r),t.push(a[r])}return t}return void 0===a[e]&&console.warn("THREE.ObjectLoader: Undefined material",e),a[e]}}switch(e.type){case"Scene":o=new Ps,void 0!==e.background&&Number.isInteger(e.background)&&(o.background=new Me(e.background)),void 0!==e.fog&&("Fog"===e.fog.type?o.fog=new Ds(e.fog.color,e.fog.near,e.fog.far):"FogExp2"===e.fog.type&&(o.fog=new Is(e.fog.color,e.fog.density)));break;case"PerspectiveCamera":o=new ma(e.fov,e.aspect,e.near,e.far),void 0!==e.focus&&(o.focus=e.focus),void 0!==e.zoom&&(o.zoom=e.zoom),void 0!==e.filmGauge&&(o.filmGauge=e.filmGauge),void 0!==e.filmOffset&&(o.filmOffset=e.filmOffset),void 0!==e.view&&(o.view=Object.assign({},e.view));break;case"OrthographicCamera":o=new mh(e.left,e.right,e.top,e.bottom,e.near,e.far),void 0!==e.zoom&&(o.zoom=e.zoom),void 0!==e.view&&(o.view=Object.assign({},e.view));break;case"AmbientLight":o=new Ah(e.color,e.intensity);break;case"DirectionalLight":o=new gh(e.color,e.intensity);break;case"PointLight":o=new fh(e.color,e.intensity,e.distance,e.decay);break;case"RectAreaLight":o=new yh(e.color,e.intensity,e.width,e.height);break;case"SpotLight":o=new dh(e.color,e.intensity,e.distance,e.angle,e.penumbra,e.decay);break;case"HemisphereLight":o=new uh(e.color,e.groundColor,e.intensity);break;case"LightProbe":o=(new bh).fromJSON(e);break;case"SkinnedMesh":o=new ol(s=i(e.geometry),l=r(e.material)),void 0!==e.bindMode&&(o.bindMode=e.bindMode),void 0!==e.bindMatrix&&o.bindMatrix.fromArray(e.bindMatrix),void 0!==e.skeleton&&(o.skeleton=e.skeleton);break;case"Mesh":o=new Z(s=i(e.geometry),l=r(e.material));break;case"InstancedMesh":var o,s=i(e.geometry),l=r(e.material),u=e.count,c=e.instanceMatrix;(o=new ml(s,l,u)).instanceMatrix=new Q(new Float32Array(c.array),16);break;case"LOD":o=new el;break;case"Line":o=new xl(i(e.geometry),r(e.material));break;case"LineLoop":o=new _l(i(e.geometry),r(e.material));break;case"LineSegments":o=new Bl(i(e.geometry),r(e.material));break;case"PointCloud":case"Points":o=new Pl(i(e.geometry),r(e.material));break;case"Sprite":o=new Ys(r(e.material));break;case"Group":o=new Cs;break;case"Bone":o=new sl;break;default:o=new K}if(o.uuid=e.uuid,void 0!==e.name&&(o.name=e.name),void 0!==e.matrix?(o.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(o.matrixAutoUpdate=e.matrixAutoUpdate),o.matrixAutoUpdate&&o.matrix.decompose(o.position,o.quaternion,o.scale)):(void 0!==e.position&&o.position.fromArray(e.position),void 0!==e.rotation&&o.rotation.fromArray(e.rotation),void 0!==e.quaternion&&o.quaternion.fromArray(e.quaternion),void 0!==e.scale&&o.scale.fromArray(e.scale)),void 0!==e.castShadow&&(o.castShadow=e.castShadow),void 0!==e.receiveShadow&&(o.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(o.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(o.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(o.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&o.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera)&&(o.shadow.camera=this.parseObject(e.shadow.camera)),void 0!==e.visible&&(o.visible=e.visible),void 0!==e.frustumCulled&&(o.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(o.renderOrder=e.renderOrder),void 0!==e.userData&&(o.userData=e.userData),void 0!==e.layers&&(o.layers.mask=e.layers),void 0!==e.children)for(var h=e.children,d=0;d<h.length;d++)o.add(this.parseObject(h[d],t,a,n));if(void 0!==e.animations)for(var p=e.animations,f=0;f<p.length;f++){var m=p[f];o.animations.push(n[m])}if("LOD"===e.type){void 0!==e.autoUpdate&&(o.autoUpdate=e.autoUpdate);for(var v=e.levels,g=0;g<v.length;g++){var A=v[g],y=o.getObjectByProperty("uuid",A.object);void 0!==y&&o.addLevel(y,A.distance)}}return o}},{key:"bindSkeletons",value:function(e,n){0!==Object.keys(n).length&&e.traverse(function(e){var t;!0===e.isSkinnedMesh&&void 0!==e.skeleton&&(void 0===(t=n[e.skeleton])?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",e.skeleton):e.bind(t,e.bindMatrix))})}},{key:"setTexturePath",value:function(e){return console.warn("THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath()."),this.setResourcePath(e)}}]),n}(),Sh={UVMapping:300,CubeReflectionMapping:et,CubeRefractionMapping:tt,EquirectangularReflectionMapping:nt,EquirectangularRefractionMapping:it,CubeUVReflectionMapping:rt,CubeUVRefractionMapping:at},Ih={RepeatWrapping:ot,ClampToEdgeWrapping:st,MirroredRepeatWrapping:lt},Dh={NearestFilter:ut,NearestMipmapNearestFilter:ct,NearestMipmapLinearFilter:ht,LinearFilter:U,LinearMipmapNearestFilter:dt,LinearMipmapLinearFilter:pt};function Ph(e){"undefined"==typeof createImageBitmap&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),"undefined"==typeof fetch&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),Ic.call(this,e),this.options={premultiplyAlpha:"none"}}function kh(){this.type="ShapePath",this.color=new Me,this.subPaths=[],this.currentPath=null}function Lh(e){this.type="Font",this.data=e}function Rh(e){Ic.call(this,e)}Ph.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Ph,isImageBitmapLoader:!0,setOptions:function(e){return this.options=e,this},load:function(t,n,e,i){void 0===t&&(t=""),void 0!==this.path&&(t=this.path+t),t=this.manager.resolveURL(t);var r=this,a=Mc.get(t);if(void 0!==a)return r.manager.itemStart(t),setTimeout(function(){n&&n(a),r.manager.itemEnd(t)},0),a;var o={};o.credentials="anonymous"===this.crossOrigin?"same-origin":"include",fetch(t,o).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,r.options)}).then(function(e){Mc.add(t,e),n&&n(e),r.manager.itemEnd(t)}).catch(function(e){i&&i(e,t),r.manager.itemError(t),r.manager.itemEnd(t)}),r.manager.itemStart(t)}}),Object.assign(kh.prototype,{moveTo:function(e,t){return this.currentPath=new oh,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this},lineTo:function(e,t){return this.currentPath.lineTo(e,t),this},quadraticCurveTo:function(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this},bezierCurveTo:function(e,t,n,i,r,a){return this.currentPath.bezierCurveTo(e,t,n,i,r,a),this},splineThru:function(e){return this.currentPath.splineThru(e),this},toShapes:function(e,t){function n(e){for(var t=[],n=0,i=e.length;n<i;n++){var r=e[n],a=new sh;a.curves=r.curves,t.push(a)}return t}var i,r,a,o=bu.isClockWise,s=this.subPaths;if(0===s.length)return[];if(!0===t)return n(s);var l=[];if(1===s.length)r=s[0],(a=new sh).curves=r.curves,l.push(a);else{var u,c=!o(s[0].getPoints()),c=e?!c:c,h=[],d=[],p=[],f=0;d[f]=void 0,p[f]=[];for(var m=0,v=s.length;m<v;m++)i=o(u=(r=s[m]).getPoints()),(e?!i:i)?(!c&&d[f]&&f++,d[f]={s:new sh,p:u},d[f].s.curves=r.curves,c&&f++,p[f]=[]):p[f].push({h:r,p:u[0]});if(!d[0])return n(s);if(1<d.length){for(var g=!1,A=[],y=0,w=d.length;y<w;y++)h[y]=[];for(var b=0,x=d.length;b<x;b++)for(var E=p[b],C=0;C<E.length;C++){for(var B=E[C],_=!0,M=0;M<d.length;M++)!function(e,t){for(var n=t.length,i=!1,r=n-1,a=0;a<n;r=a++){var o=t[r],s=t[a],l=s.x-o.x,u=s.y-o.y;if(Math.abs(u)>Number.EPSILON){if(u<0&&(o=t[a],l=-l,s=t[r],u=-u),!(e.y<o.y||e.y>s.y))if(e.y===o.y){if(e.x===o.x)return 1}else{u=u*(e.x-o.x)-l*(e.y-o.y);if(0==u)return 1;u<0||(i=!i)}}else if(e.y===o.y&&(s.x<=e.x&&e.x<=o.x||o.x<=e.x&&e.x<=s.x))return 1}return i}(B.p,d[M].p)||(b!==M&&A.push({froms:b,tos:M,hole:C}),_?(_=!1,h[M].push(B)):g=!0);_&&h[b].push(B)}0<A.length&&(g||(p=h))}for(var T=0,S=d.length;T<S;T++){a=d[T].s,l.push(a);for(var I,D=0,P=(I=p[T]).length;D<P;D++)a.holes.push(I[D].h)}}return l}}),Object.assign(Lh.prototype,{isFont:!0,generateShapes:function(e){for(var t=[],n=function(e,t,n){for(var i=Array.from?Array.from(e):String(e).split(""),r=t/n.resolution,a=(n.boundingBox.yMax-n.boundingBox.yMin+n.underlineThickness)*r,o=[],s=0,l=0,u=0;u<i.length;u++){var c=i[u];"\n"===c?(s=0,l-=a):(c=function(e,t,n,i,r){var a=r.glyphs[e]||r.glyphs["?"];if(a){var o,s,l,u,c,h,d,p,f=new kh;if(a.o)for(var m=a._cachedOutline||(a._cachedOutline=a.o.split(" ")),v=0,g=m.length;v<g;)switch(m[v++]){case"m":o=m[v++]*t+n,s=m[v++]*t+i,f.moveTo(o,s);break;case"l":o=m[v++]*t+n,s=m[v++]*t+i,f.lineTo(o,s);break;case"q":l=m[v++]*t+n,u=m[v++]*t+i,c=m[v++]*t+n,h=m[v++]*t+i,f.quadraticCurveTo(c,h,l,u);break;case"b":l=m[v++]*t+n,u=m[v++]*t+i,c=m[v++]*t+n,h=m[v++]*t+i,d=m[v++]*t+n,p=m[v++]*t+i,f.bezierCurveTo(c,h,d,p,l,u)}return{offsetX:a.ha*t,path:f}}console.error('THREE.Font: character "'+e+'" does not exists in font family '+r.familyName+".")}(c,r,s,l,n),s+=c.offsetX,o.push(c.path))}return o}(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:100,this.data),i=0,r=n.length;i<r;i++)Array.prototype.push.apply(t,n[i].toShapes());return t}}),Rh.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Rh,load:function(e,i,t,n){var r=this,a=new Pc(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(r.withCredentials),a.load(e,function(t){var n;try{n=JSON.parse(t)}catch(e){console.warn("THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead."),n=JSON.parse(t.substring(65,t.length-2))}t=r.parse(n);i&&i(t)},t,n)},parse:function(e){return new Lh(e)}});var Fh={getContext:function(){return Mh=void 0===Mh?new(window.AudioContext||window.webkitAudioContext):Mh},setContext:function(e){Mh=e}};function Oh(e){Ic.call(this,e)}function Nh(e,t,n){bh.call(this,void 0,n);var n=(new Me).set(e),e=(new Me).set(t),t=new Re(n.r,n.g,n.b),n=new Re(e.r,e.g,e.b),e=Math.sqrt(Math.PI),i=e*Math.sqrt(.75);this.sh.coefficients[0].copy(t).add(n).multiplyScalar(e),this.sh.coefficients[1].copy(t).sub(n).multiplyScalar(i)}function Gh(e,t){bh.call(this,void 0,t);t=(new Me).set(e);this.sh.coefficients[0].set(t.r,t.g,t.b).multiplyScalar(2*Math.sqrt(Math.PI))}Oh.prototype=Object.assign(Object.create(Ic.prototype),{constructor:Oh,load:function(n,i,e,r){var a=this,t=new Pc(a.manager);t.setResponseType("arraybuffer"),t.setPath(a.path),t.setRequestHeader(a.requestHeader),t.setWithCredentials(a.withCredentials),t.load(n,function(e){try{var t=e.slice(0);Fh.getContext().decodeAudioData(t,function(e){i(e)})}catch(e){r?r(e):console.error(e),a.manager.itemError(n)}},e,r)}}),Nh.prototype=Object.assign(Object.create(bh.prototype),{constructor:Nh,isHemisphereLightProbe:!0,copy:function(e){return bh.prototype.copy.call(this,e),this},toJSON:function(e){return bh.prototype.toJSON.call(this,e)}}),Gh.prototype=Object.assign(Object.create(bh.prototype),{constructor:Gh,isAmbientLightProbe:!0,copy:function(e){return bh.prototype.copy.call(this,e),this},toJSON:function(e){return bh.prototype.toJSON.call(this,e)}});var Uh=new _e,zh=new _e;function Hh(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new ma,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new ma,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}Object.assign(Hh.prototype,{update:function(e){var t,n,i,r,a,o=this._cache;o.focus===e.focus&&o.fov===e.fov&&o.aspect===e.aspect*this.aspect&&o.near===e.near&&o.far===e.far&&o.zoom===e.zoom&&o.eyeSep===this.eyeSep||(o.focus=e.focus,o.fov=e.fov,o.aspect=e.aspect*this.aspect,o.near=e.near,o.far=e.far,o.zoom=e.zoom,o.eyeSep=this.eyeSep,t=e.projectionMatrix.clone(),n=(r=o.eyeSep/2)*o.near/o.focus,i=o.near*Math.tan(Be.DEG2RAD*o.fov*.5)/o.zoom,zh.elements[12]=-r,Uh.elements[12]=r,r=-i*o.aspect+n,a=i*o.aspect+n,t.elements[0]=2*o.near/(a-r),t.elements[8]=(a+r)/(a-r),this.cameraL.projectionMatrix.copy(t),r=-i*o.aspect-n,a=i*o.aspect-n,t.elements[0]=2*o.near/(a-r),t.elements[8]=(a+r)/(a-r),this.cameraR.projectionMatrix.copy(t)),this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(zh),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(Uh)}});var Qh=function(){function t(e){te(this,t),this.autoStart=void 0===e||e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}return A(t,[{key:"start",value:function(){this.startTime=Vh(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}},{key:"stop",value:function(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}},{key:"getElapsedTime",value:function(){return this.getDelta(),this.elapsedTime}},{key:"getDelta",value:function(){var e,t=0;return this.autoStart&&!this.running?(this.start(),0):(this.running&&(t=((e=Vh())-this.oldTime)/1e3,this.oldTime=e,this.elapsedTime+=t),t)}}]),t}();function Vh(){return("undefined"==typeof performance?Date:performance).now()}var jh=new Re,Wh=new X,Jh=new Re,qh=new Re,Xh=function(){y(i,K);var t=C(i);function i(){var e;return te(this,i),(e=t.call(this)).type="AudioListener",e.context=Fh.getContext(),e.gain=e.context.createGain(),e.gain.connect(e.context.destination),e.filter=null,e.timeDelta=0,e._clock=new Qh,e}return A(i,[{key:"getInput",value:function(){return this.gain}},{key:"removeFilter",value:function(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}},{key:"getFilter",value:function(){return this.filter}},{key:"setFilter",value:function(e){return(null!==this.filter?(this.gain.disconnect(this.filter),this.filter):this.gain).disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}},{key:"getMasterVolume",value:function(){return this.gain.gain.value}},{key:"setMasterVolume",value:function(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}},{key:"updateMatrixWorld",value:function(e){k(_(i.prototype),"updateMatrixWorld",this).call(this,e);var t,e=this.context.listener,n=this.up;this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(jh,Wh,Jh),qh.set(0,0,-1).applyQuaternion(Wh),e.positionX?(t=this.context.currentTime+this.timeDelta,e.positionX.linearRampToValueAtTime(jh.x,t),e.positionY.linearRampToValueAtTime(jh.y,t),e.positionZ.linearRampToValueAtTime(jh.z,t),e.forwardX.linearRampToValueAtTime(qh.x,t),e.forwardY.linearRampToValueAtTime(qh.y,t),e.forwardZ.linearRampToValueAtTime(qh.z,t),e.upX.linearRampToValueAtTime(n.x,t),e.upY.linearRampToValueAtTime(n.y,t),e.upZ.linearRampToValueAtTime(n.z,t)):(e.setPosition(jh.x,jh.y,jh.z),e.setOrientation(qh.x,qh.y,qh.z,n.x,n.y,n.z))}}]),i}(),Yh=function(){y(i,K);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).type="Audio",t.listener=e,t.context=e.context,t.gain=t.context.createGain(),t.gain.connect(e.getInput()),t.autoplay=!1,t.buffer=null,t.detune=0,t.loop=!1,t.loopStart=0,t.loopEnd=0,t.offset=0,t.duration=void 0,t.playbackRate=1,t.isPlaying=!1,t.hasPlaybackControl=!0,t.source=null,t.sourceType="empty",t._startedAt=0,t._progress=0,t._connected=!1,t.filters=[],t}return A(i,[{key:"getOutput",value:function(){return this.gain}},{key:"setNodeSource",value:function(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}},{key:"setMediaElementSource",value:function(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}},{key:"setMediaStreamSource",value:function(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}},{key:"setBuffer",value:function(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}},{key:"play",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;if(!0===this.isPlaying)console.warn("THREE.Audio: Audio is already playing.");else{if(!1!==this.hasPlaybackControl)return this._startedAt=this.context.currentTime+e,(e=this.context.createBufferSource()).buffer=this.buffer,e.loop=this.loop,e.loopStart=this.loopStart,e.loopEnd=this.loopEnd,e.onended=this.onEnded.bind(this),e.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=e,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect();console.warn("THREE.Audio: this Audio has no playback control.")}}},{key:"pause",value:function(){if(!1!==this.hasPlaybackControl)return!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"stop",value:function(){if(!1!==this.hasPlaybackControl)return this._progress=0,this.source.stop(),this.source.onended=null,this.isPlaying=!1,this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"connect",value:function(){if(0<this.filters.length){this.source.connect(this.filters[0]);for(var e=1,t=this.filters.length;e<t;e++)this.filters[e-1].connect(this.filters[e]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}},{key:"disconnect",value:function(){if(0<this.filters.length){this.source.disconnect(this.filters[0]);for(var e=1,t=this.filters.length;e<t;e++)this.filters[e-1].disconnect(this.filters[e]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}},{key:"getFilters",value:function(){return this.filters}},{key:"setFilters",value:function(e){return e=e||[],!0===this._connected?(this.disconnect(),this.filters=e.slice(),this.connect()):this.filters=e.slice(),this}},{key:"setDetune",value:function(e){if(this.detune=e,void 0!==this.source.detune)return!0===this.isPlaying&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}},{key:"getDetune",value:function(){return this.detune}},{key:"getFilter",value:function(){return this.getFilters()[0]}},{key:"setFilter",value:function(e){return this.setFilters(e?[e]:[])}},{key:"setPlaybackRate",value:function(e){if(!1!==this.hasPlaybackControl)return this.playbackRate=e,!0===this.isPlaying&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"getPlaybackRate",value:function(){return this.playbackRate}},{key:"onEnded",value:function(){this.isPlaying=!1}},{key:"getLoop",value:function(){return!1===this.hasPlaybackControl?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop}},{key:"setLoop",value:function(e){if(!1!==this.hasPlaybackControl)return this.loop=e,!0===this.isPlaying&&(this.source.loop=this.loop),this;console.warn("THREE.Audio: this Audio has no playback control.")}},{key:"setLoopStart",value:function(e){return this.loopStart=e,this}},{key:"setLoopEnd",value:function(e){return this.loopEnd=e,this}},{key:"getVolume",value:function(){return this.gain.gain.value}},{key:"setVolume",value:function(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}}]),i}(),Kh=new Re,Zh=new X,$h=new Re,ed=new Re,td=function(){y(n,Yh);var t=C(n);function n(e){return te(this,n),(e=t.call(this,e)).panner=e.context.createPanner(),e.panner.panningModel="HRTF",e.panner.connect(e.gain),e}return A(n,[{key:"getOutput",value:function(){return this.panner}},{key:"getRefDistance",value:function(){return this.panner.refDistance}},{key:"setRefDistance",value:function(e){return this.panner.refDistance=e,this}},{key:"getRolloffFactor",value:function(){return this.panner.rolloffFactor}},{key:"setRolloffFactor",value:function(e){return this.panner.rolloffFactor=e,this}},{key:"getDistanceModel",value:function(){return this.panner.distanceModel}},{key:"setDistanceModel",value:function(e){return this.panner.distanceModel=e,this}},{key:"getMaxDistance",value:function(){return this.panner.maxDistance}},{key:"setMaxDistance",value:function(e){return this.panner.maxDistance=e,this}},{key:"setDirectionalCone",value:function(e,t,n){return this.panner.coneInnerAngle=e,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=n,this}},{key:"updateMatrixWorld",value:function(e){var t;k(_(n.prototype),"updateMatrixWorld",this).call(this,e),!0===this.hasPlaybackControl&&!1===this.isPlaying||(this.matrixWorld.decompose(Kh,Zh,$h),ed.set(0,0,1).applyQuaternion(Zh),(e=this.panner).positionX?(t=this.context.currentTime+this.listener.timeDelta,e.positionX.linearRampToValueAtTime(Kh.x,t),e.positionY.linearRampToValueAtTime(Kh.y,t),e.positionZ.linearRampToValueAtTime(Kh.z,t),e.orientationX.linearRampToValueAtTime(ed.x,t),e.orientationY.linearRampToValueAtTime(ed.y,t),e.orientationZ.linearRampToValueAtTime(ed.z,t)):(e.setPosition(Kh.x,Kh.y,Kh.z),e.setOrientation(ed.x,ed.y,ed.z)))}}]),n}(),nd=function(){function n(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:2048;te(this,n),this.analyser=e.context.createAnalyser(),this.analyser.fftSize=t,this.data=new Uint8Array(this.analyser.frequencyBinCount),e.getOutput().connect(this.analyser)}return A(n,[{key:"getFrequencyData",value:function(){return this.analyser.getByteFrequencyData(this.data),this.data}},{key:"getAverageFrequency",value:function(){for(var e=0,t=this.getFrequencyData(),n=0;n<t.length;n++)e+=t[n];return e/t.length}}]),n}();function id(e,t,n){var i,r,a;switch(this.binding=e,this.valueSize=n,t){case"quaternion":i=this._slerp,r=this._slerpAdditive,a=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(6*n),this._workIndex=5;break;case"string":case"bool":i=this._select,r=this._select,a=this._setAdditiveIdentityOther,this.buffer=new Array(5*n);break;default:i=this._lerp,r=this._lerpAdditive,a=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(5*n)}this._mixBufferRegion=i,this._mixBufferRegionAdditive=r,this._setIdentity=a,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}Object.assign(id.prototype,{accumulate:function(e,t){var n=this.buffer,i=this.valueSize,r=e*i+i,e=this.cumulativeWeight;if(0===e){for(var a=0;a!==i;++a)n[r+a]=n[a];e=t}else this._mixBufferRegion(n,r,0,t/(e+=t),i);this.cumulativeWeight=e},accumulateAdditive:function(e){var t=this.buffer,n=this.valueSize,i=n*this._addIndex;0===this.cumulativeWeightAdditive&&this._setIdentity(),this._mixBufferRegionAdditive(t,i,0,e,n),this.cumulativeWeightAdditive+=e},apply:function(e){var t,n=this.valueSize,i=this.buffer,r=e*n+n,e=this.cumulativeWeight,a=this.cumulativeWeightAdditive,o=this.binding;this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,e<1&&(t=n*this._origIndex,this._mixBufferRegion(i,r,t,1-e,n)),0<a&&this._mixBufferRegionAdditive(i,r,this._addIndex*n,1,n);for(var s=n,l=n+n;s!==l;++s)if(i[s]!==i[s+n]){o.setValue(i,r);break}},saveOriginalState:function(){var e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(var r=n,a=i;r!==a;++r)t[r]=t[i+r%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0},restoreOriginalState:function(){var e=3*this.valueSize;this.binding.setValue(this.buffer,e)},_setAdditiveIdentityNumeric:function(){for(var e=this._addIndex*this.valueSize,t=e+this.valueSize,n=e;n<t;n++)this.buffer[n]=0},_setAdditiveIdentityQuaternion:function(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1},_setAdditiveIdentityOther:function(){for(var e=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize,n=0;n<this.valueSize;n++)this.buffer[t+n]=this.buffer[e+n]},_select:function(e,t,n,i,r){if(.5<=i)for(var a=0;a!==r;++a)e[t+a]=e[n+a]},_slerp:function(e,t,n,i){X.slerpFlat(e,t,e,t,e,n,i)},_slerpAdditive:function(e,t,n,i,r){r=this._workIndex*r;X.multiplyQuaternionsFlat(e,r,e,t,e,n),X.slerpFlat(e,t,e,t,e,r,i)},_lerp:function(e,t,n,i,r){for(var a=1-i,o=0;o!==r;++o){var s=t+o;e[s]=e[s]*a+e[n+o]*i}},_lerpAdditive:function(e,t,n,i,r){for(var a=0;a!==r;++a){var o=t+a;e[o]=e[o]+e[n+a]*i}}});var t="\\[\\]\\.:\\/",rd=new RegExp("["+t+"]","g"),ad="[^"+t+"]",t="[^"+t.replace("\\.","")+"]",od=/((?:WC+[\/:])*)/.source.replace("WC",ad),t=/(WCOD+)?/.source.replace("WCOD",t),sd=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",ad),ad=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",ad),ld=new RegExp("^"+od+t+sd+ad+"$"),ud=["material","materials","bones"];function cd(e,t,n){n=n||hd.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,n)}function hd(e,t,n){this.path=t,this.parsedPath=n||hd.parseTrackName(t),this.node=hd.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e}function dd(){this.uuid=Be.generateUUID(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;var e={};this._indicesByUUID=e;for(var t=0,n=arguments.length;t!==n;++t)e[arguments[t].uuid]=t;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};var i=this;this.stats={objects:{get total(){return i._objects.length},get inUse(){return this.total-i.nCachedObjects_}},get bindingsPerObject(){return i._bindings.length}}}Object.assign(cd.prototype,{getValue:function(e,t){this.bind();var n=this._targetGroup.nCachedObjects_,n=this._bindings[n];void 0!==n&&n.getValue(e,t)},setValue:function(e,t){for(var n=this._bindings,i=this._targetGroup.nCachedObjects_,r=n.length;i!==r;++i)n[i].setValue(e,t)},bind:function(){for(var e=this._bindings,t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].bind()},unbind:function(){for(var e=this._bindings,t=this._targetGroup.nCachedObjects_,n=e.length;t!==n;++t)e[t].unbind()}}),Object.assign(hd,{Composite:cd,create:function(e,t,n){return new(e&&e.isAnimationObjectGroup?hd.Composite:hd)(e,t,n)},sanitizeNodeName:function(e){return e.replace(/\s/g,"_").replace(rd,"")},parseTrackName:function(e){var t=ld.exec(e);if(!t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);var n,t={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=t.nodeName&&t.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i&&(n=t.nodeName.substring(i+1),-1!==ud.indexOf(n))&&(t.nodeName=t.nodeName.substring(0,i),t.objectName=n),null===t.propertyName||0===t.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return t},findNode:function(e,r){if(!r||""===r||"."===r||-1===r||r===e.name||r===e.uuid)return e;if(e.skeleton){var t=e.skeleton.getBoneByName(r);if(void 0!==t)return t}if(e.children){t=function e(t){for(var n=0;n<t.length;n++){var i=t[n];if(i.name===r||i.uuid===r)return i;i=e(i.children);if(i)return i}return null}(e.children);if(t)return t}return null}}),Object.assign(hd.prototype,{_getValue_unavailable:function(){},_setValue_unavailable:function(){},BindingType:{Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Versioning:{None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},GetterByBindingType:[function(e,t){e[t]=this.node[this.propertyName]},function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)e[t++]=n[i]},function(e,t){e[t]=this.resolvedProperty[this.propertyIndex]},function(e,t){this.resolvedProperty.toArray(e,t)}],SetterByBindingTypeAndVersioning:[[function(e,t){this.targetObject[this.propertyName]=e[t]},function(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.needsUpdate=!0},function(e,t){this.targetObject[this.propertyName]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}],[function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)n[i]=e[t++]},function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.needsUpdate=!0},function(e,t){for(var n=this.resolvedProperty,i=0,r=n.length;i!==r;++i)n[i]=e[t++];this.targetObject.matrixWorldNeedsUpdate=!0}],[function(e,t){this.resolvedProperty[this.propertyIndex]=e[t]},function(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.needsUpdate=!0},function(e,t){this.resolvedProperty[this.propertyIndex]=e[t],this.targetObject.matrixWorldNeedsUpdate=!0}],[function(e,t){this.resolvedProperty.fromArray(e,t)},function(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.needsUpdate=!0},function(e,t){this.resolvedProperty.fromArray(e,t),this.targetObject.matrixWorldNeedsUpdate=!0}]],getValue:function(e,t){this.bind(),this.getValue(e,t)},setValue:function(e,t){this.bind(),this.setValue(e,t)},bind:function(){var e=this.node,t=this.parsedPath,n=t.objectName,i=t.propertyName,r=t.propertyIndex;if(e||(e=hd.findNode(this.rootNode,t.nodeName)||this.rootNode,this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,e){if(n){var a=t.objectIndex;switch(n){case"materials":if(!e.material)return void console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);if(!e.material.materials)return void console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);e=e.material.materials;break;case"bones":if(!e.skeleton)return void console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);for(var e=e.skeleton.bones,o=0;o<e.length;o++)if(e[o].name===a){a=o;break}break;default:if(void 0===e[n])return void console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);e=e[n]}if(void 0!==a){if(void 0===e[a])return void console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);e=e[a]}}var s=e[i];if(void 0===s)t=t.nodeName,console.error("THREE.PropertyBinding: Trying to update property for track: "+t+"."+i+" but it wasn't found.",e);else{var t=this.Versioning.None,l=(void 0!==(this.targetObject=e).needsUpdate?t=this.Versioning.NeedsUpdate:void 0!==e.matrixWorldNeedsUpdate&&(t=this.Versioning.MatrixWorldNeedsUpdate),this.BindingType.Direct);if(void 0!==r){if("morphTargetInfluences"===i){if(!e.geometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);if(!e.geometry.isBufferGeometry)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.",this);if(!e.geometry.morphAttributes)return void console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);void 0!==e.morphTargetDictionary[r]&&(r=e.morphTargetDictionary[r])}l=this.BindingType.ArrayElement,this.resolvedProperty=s,this.propertyIndex=r}else void 0!==s.fromArray&&void 0!==s.toArray?(l=this.BindingType.HasFromToArray,this.resolvedProperty=s):Array.isArray(s)?(l=this.BindingType.EntireArray,this.resolvedProperty=s):this.propertyName=i;this.getValue=this.GetterByBindingType[l],this.setValue=this.SetterByBindingTypeAndVersioning[l][t]}}else console.error("THREE.PropertyBinding: Trying to update node for track: "+this.path+" but it wasn't found.")},unbind:function(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}),Object.assign(hd.prototype,{_getValue_unbound:hd.prototype.getValue,_setValue_unbound:hd.prototype.setValue}),Object.assign(dd.prototype,{isAnimationObjectGroup:!0,add:function(){for(var e=this._objects,t=this._indicesByUUID,n=this._paths,i=this._parsedPaths,r=this._bindings,a=r.length,o=void 0,s=e.length,l=this.nCachedObjects_,u=0,c=arguments.length;u!==c;++u){var h=arguments[u],d=h.uuid,p=t[d];if(void 0===p){p=s++,t[d]=p,e.push(h);for(var f=0,m=a;f!==m;++f)r[f].push(new hd(h,n[f],i[f]))}else if(p<l){var o=e[p],v=--l,g=e[v];e[t[g.uuid]=p]=g,e[t[d]=v]=h;for(var A=0,y=a;A!==y;++A){var w=r[A],b=w[v],x=w[p];w[p]=b,void 0===x&&(x=new hd(h,n[A],i[A])),w[v]=x}}else e[p]!==o&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=l},remove:function(){for(var e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=0,o=arguments.length;a!==o;++a){var s=arguments[a],l=s.uuid,u=t[l];if(void 0!==u&&r<=u){var c=r++,h=e[c];e[t[h.uuid]=u]=h,e[t[l]=c]=s;for(var d=0,p=i;d!==p;++d){var f=n[d],m=f[c],v=f[u];f[u]=m,f[c]=v}}}this.nCachedObjects_=r},uncache:function(){for(var e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=e.length,o=0,s=arguments.length;o!==s;++o){var l=arguments[o].uuid,u=t[l];if(void 0!==u)if(delete t[l],u<r){var c=--r,l=e[c],h=--a,d=e[h];e[t[l.uuid]=u]=l,e[t[d.uuid]=c]=d,e.pop();for(var p=0,f=i;p!==f;++p){var m=n[p],v=m[c],g=m[h];m[u]=v,m[c]=g,m.pop()}}else{var A=--a,l=e[A];0<A&&(t[l.uuid]=u),e[u]=l,e.pop();for(var y=0,w=i;y!==w;++y){var b=n[y];b[u]=b[A],b.pop()}}}this.nCachedObjects_=r},subscribe_:function(e,t){var n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(void 0!==i)return r[i];var a=this._paths,o=this._parsedPaths,s=this._objects,l=s.length,u=this.nCachedObjects_,c=new Array(l),i=r.length;n[e]=i,a.push(e),o.push(t),r.push(c);for(var h=u,d=s.length;h!==d;++h){var p=s[h];c[h]=new hd(p,e,t)}return c},unsubscribe_:function(e){var t,n,i,r,a,o=this._bindingsIndicesByPath,s=o[e];void 0!==s&&(t=this._paths,n=this._parsedPaths,a=(i=this._bindings)[r=i.length-1],i[o[e[r]]=s]=a,i.pop(),n[s]=n[r],n.pop(),t[s]=t[r],t.pop())}});var pd=function(){function c(e,t){for(var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:t.blendMode,r=(te(this,c),this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i,t.tracks),a=r.length,o=new Array(a),s={endingStart:In,endingEnd:In},l=0;l!==a;++l){var u=r[l].createInterpolant(null);(o[l]=u).settings=s}this._interpolantSettings=s,this._interpolants=o,this._propertyBindings=new Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}return A(c,[{key:"play",value:function(){return this._mixer._activateAction(this),this}},{key:"stop",value:function(){return this._mixer._deactivateAction(this),this.reset()}},{key:"reset",value:function(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}},{key:"isRunning",value:function(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}},{key:"isScheduled",value:function(){return this._mixer._isActiveAction(this)}},{key:"startAt",value:function(e){return this._startTime=e,this}},{key:"setLoop",value:function(e,t){return this.loop=e,this.repetitions=t,this}},{key:"setEffectiveWeight",value:function(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}},{key:"getEffectiveWeight",value:function(){return this._effectiveWeight}},{key:"fadeIn",value:function(e){return this._scheduleFading(e,0,1)}},{key:"fadeOut",value:function(e){return this._scheduleFading(e,1,0)}},{key:"crossFadeFrom",value:function(e,t,n){var i,r;return e.fadeOut(t),this.fadeIn(t),n&&(r=(n=this._clip.duration)/(i=e._clip.duration),e.warp(1,i/n,t),this.warp(r,1,t)),this}},{key:"crossFadeTo",value:function(e,t,n){return e.crossFadeFrom(this,t,n)}},{key:"stopFading",value:function(){var e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}},{key:"setEffectiveTimeScale",value:function(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}},{key:"getEffectiveTimeScale",value:function(){return this._effectiveTimeScale}},{key:"setDuration",value:function(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}},{key:"syncWith",value:function(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}},{key:"halt",value:function(e){return this.warp(this._effectiveTimeScale,0,e)}},{key:"warp",value:function(e,t,n){var i=this._mixer,r=i.time,a=this.timeScale,o=this._timeScaleInterpolant,i=(null===o&&(o=i._lendControlInterpolant(),this._timeScaleInterpolant=o),o.parameterPositions),o=o.sampleValues;return i[0]=r,i[1]=r+n,o[0]=e/a,o[1]=t/a,this}},{key:"stopWarping",value:function(){var e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}},{key:"getMixer",value:function(){return this._mixer}},{key:"getClip",value:function(){return this._clip}},{key:"getRoot",value:function(){return this._localRoot||this._mixer._root}},{key:"_update",value:function(e,t,n,i){if(this.enabled){var r=this._startTime;if(null!==r){r=(e-r)*n;if(r<0||0===n)return;this._startTime=null,t=n*r}t*=this._updateTimeScale(e);var a=this._updateTime(t),o=this._updateWeight(e);if(0<o){var s=this._interpolants,l=this._propertyBindings;if(2501===this.blendMode)for(var u=0,c=s.length;u!==c;++u)s[u].evaluate(a),l[u].accumulateAdditive(o);else for(var h=0,d=s.length;h!==d;++h)s[h].evaluate(a),l[h].accumulate(i,o)}}else this._updateWeight(e)}},{key:"_updateWeight",value:function(e){var t,n,i=0;return this.enabled&&(i=this.weight,null!==(t=this._weightInterpolant))&&(i*=n=t.evaluate(e)[0],e>t.parameterPositions[1])&&(this.stopFading(),0===n)&&(this.enabled=!1),this._effectiveWeight=i}},{key:"_updateTimeScale",value:function(e){var t,n=0;return this.paused||(n=this.timeScale,null!==(t=this._timeScaleInterpolant)&&(n*=t.evaluate(e)[0],e>t.parameterPositions[1])&&(this.stopWarping(),0===n?this.paused=!0:this.timeScale=n)),this._effectiveTimeScale=n}},{key:"_updateTime",value:function(e){var t,n=this._clip.duration,i=this.loop,r=this.time+e,a=this._loopCount,o=2202===i;if(0===e)return-1!==a&&o&&1==(1&a)?n-r:r;if(2200===i){-1===a&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(n<=r)r=n;else{if(!(r<0)){this.time=r;break e}r=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else if(-1===a&&(0<=e?this._setEndings(!(a=0),0===this.repetitions,o):this._setEndings(0===this.repetitions,!0,o)),n<=r||r<0?(r-=n*(i=Math.floor(r/n)),a+=Math.abs(i),(t=this.repetitions-a)<=0?(this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r=0<e?n:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:0<e?1:-1})):(1==t?this._setEndings(t=e<0,!t,o):this._setEndings(!1,!1,o),this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i}))):this.time=r,o&&1==(1&a))return n-r;return r}},{key:"_setEndings",value:function(e,t,n){var i=this._interpolantSettings;n?(i.endingStart=Dn,i.endingEnd=Dn):(i.endingStart=e?this.zeroSlopeAtStart?Dn:In:Pn,i.endingEnd=t?this.zeroSlopeAtEnd?Dn:In:Pn)}},{key:"_scheduleFading",value:function(e,t,n){var i=this._mixer,r=i.time,a=this._weightInterpolant,i=(null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a),a.parameterPositions),a=a.sampleValues;return i[0]=r,a[0]=t,i[1]=r+e,a[1]=n,this}}]),c}();function fd(e){this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}fd.prototype=Object.assign(Object.create(zn.prototype),{constructor:fd,_bindAction:function(e,t){var n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,o=e._interpolants,s=n.uuid,e=this._bindingsByRootAndName,l=e[s];void 0===l&&(e[s]=l={});for(var u=0;u!==r;++u){var c=i[u],h=c.name,d=l[h];if(void 0===d){if(void 0!==(d=a[u])){null===d._cacheIndex&&(++d.referenceCount,this._addInactiveBinding(d,s,h));continue}var p=t&&t._propertyBindings[u].binding.parsedPath;++(d=new id(hd.create(n,h,p),c.ValueTypeName,c.getValueSize())).referenceCount,this._addInactiveBinding(d,s,h)}a[u]=d,o[u].resultBuffer=d.buffer}},_activateAction:function(e){if(!this._isActiveAction(e)){null===e._cacheIndex&&(t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n],this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t));for(var t,n,i,r=e._propertyBindings,a=0,o=r.length;a!==o;++a){var s=r[a];0==s.useCount++&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(e)}},_deactivateAction:function(e){if(this._isActiveAction(e)){for(var t=e._propertyBindings,n=0,i=t.length;n!==i;++n){var r=t[n];0==--r.useCount&&(r.restoreOriginalState(),this._takeBackBinding(r))}this._takeBackAction(e)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}},_isActiveAction:function(e){e=e._cacheIndex;return null!==e&&e<this._nActiveActions},_addInactiveAction:function(e,t,n){var i=this._actions,r=this._actionsByClip,a=r[t];void 0===a?(a={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,r[t]=a):(r=a.knownActions,e._byClipCacheIndex=r.length,r.push(e)),e._cacheIndex=i.length,i.push(e),a.actionByRoot[n]=e},_removeInactiveAction:function(e){var t=this._actions,n=t[t.length-1],i=e._cacheIndex,i=(t[n._cacheIndex=i]=n,t.pop(),e._cacheIndex=null,e._clip.uuid),n=this._actionsByClip,t=n[i],r=t.knownActions,a=r[r.length-1],o=e._byClipCacheIndex;r[a._byClipCacheIndex=o]=a,r.pop(),e._byClipCacheIndex=null,delete t.actionByRoot[(e._localRoot||this._root).uuid],0===r.length&&delete n[i],this._removeInactiveBindingsForAction(e)},_removeInactiveBindingsForAction:function(e){for(var t=e._propertyBindings,n=0,i=t.length;n!==i;++n){var r=t[n];0==--r.referenceCount&&this._removeInactiveBinding(r)}},_lendAction:function(e){var t=this._actions,n=e._cacheIndex,i=this._nActiveActions++,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_takeBackAction:function(e){var t=this._actions,n=e._cacheIndex,i=--this._nActiveActions,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_addInactiveBinding:function(e,t,n){var i=this._bindingsByRootAndName,r=this._bindings,a=i[t];void 0===a&&(i[t]=a={}),(a[n]=e)._cacheIndex=r.length,r.push(e)},_removeInactiveBinding:function(e){var t=this._bindings,n=e.binding,i=n.rootNode.uuid,n=n.path,r=this._bindingsByRootAndName,a=r[i],o=t[t.length-1],e=e._cacheIndex;t[o._cacheIndex=e]=o,t.pop(),delete a[n],0===Object.keys(a).length&&delete r[i]},_lendBinding:function(e){var t=this._bindings,n=e._cacheIndex,i=this._nActiveBindings++,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_takeBackBinding:function(e){var t=this._bindings,n=e._cacheIndex,i=--this._nActiveBindings,r=t[i];t[e._cacheIndex=i]=e,t[r._cacheIndex=n]=r},_lendControlInterpolant:function(){var e=this._controlInterpolants,t=this._nActiveControlInterpolants++,n=e[t];return void 0===n&&(e[(n=new mc(new Float32Array(2),new Float32Array(2),1,this._controlInterpolantsResultBuffer)).__cacheIndex=t]=n),n},_takeBackControlInterpolant:function(e){var t=this._controlInterpolants,n=e.__cacheIndex,i=--this._nActiveControlInterpolants,r=t[i];t[e.__cacheIndex=i]=e,t[r.__cacheIndex=n]=r},_controlInterpolantsResultBuffer:new Float32Array(1),clipAction:function(e,t,n){var i=t||this._root,r=i.uuid,i="string"==typeof e?Bc.findByName(i,e):e,e=null!==i?i.uuid:e,a=this._actionsByClip[e],o=null;if(void 0===n&&(n=null!==i?i.blendMode:2500),void 0!==a){var s=a.actionByRoot[r];if(void 0!==s&&s.blendMode===n)return s;o=a.knownActions[0],null===i&&(i=o._clip)}return null===i?null:(s=new pd(this,i,t,n),this._bindAction(s,o),this._addInactiveAction(s,e,r),s)},existingAction:function(e,t){var t=t||this._root,n=t.uuid,t="string"==typeof e?Bc.findByName(t,e):e,t=t?t.uuid:e,e=this._actionsByClip[t];return void 0!==e&&e.actionByRoot[n]||null},stopAllAction:function(){for(var e=this._actions,t=this._nActiveActions-1;0<=t;--t)e[t].stop();return this},update:function(e){e*=this.timeScale;for(var t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),a=this._accuIndex^=1,o=0;o!==n;++o)t[o]._update(i,e,r,a);for(var s=this._bindings,l=this._nActiveBindings,u=0;u!==l;++u)s[u].apply(a);return this},setTime:function(e){for(var t=this.time=0;t<this._actions.length;t++)this._actions[t].time=0;return this.update(e)},getRoot:function(){return this._root},uncacheClip:function(e){var t=this._actions,e=e.uuid,n=this._actionsByClip,i=n[e];if(void 0!==i){for(var r=i.knownActions,a=0,o=r.length;a!==o;++a){var s=r[a],l=(this._deactivateAction(s),s._cacheIndex),u=t[t.length-1];s._cacheIndex=null,s._byClipCacheIndex=null,t[u._cacheIndex=l]=u,t.pop(),this._removeInactiveBindingsForAction(s)}delete n[e]}},uncacheRoot:function(e){var t,n=e.uuid,i=this._actionsByClip;for(t in i){var r=i[t].actionByRoot[n];void 0!==r&&(this._deactivateAction(r),this._removeInactiveAction(r))}var a=this._bindingsByRootAndName[n];if(void 0!==a)for(var o in a){o=a[o];o.restoreOriginalState(),this._removeInactiveBinding(o)}},uncacheAction:function(e,t){e=this.existingAction(e,t);null!==e&&(this._deactivateAction(e),this._removeInactiveAction(e))}});od=function(){function t(e){te(this,t),"string"==typeof e&&(console.warn("THREE.Uniform: Type parameter is no longer needed."),e=arguments[1]),this.value=e}return A(t,[{key:"clone",value:function(){return new t(void 0===this.value.clone?this.value:this.value.clone())}}]),t}();function md(e,t,n){ks.call(this,e,t),this.meshPerAttribute=n||1}function vd(e,t,n,i,r){this.buffer=e,this.type=t,this.itemSize=n,this.elementSize=i,this.count=r,this.version=0}function gd(e,t,n,i){this.ray=new Bi(e,t),this.near=n||0,this.far=i||1/0,this.camera=null,this.layers=new Fi,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}},Object.defineProperties(this.params,{PointCloud:{get:function(){return console.warn("THREE.Raycaster: params.PointCloud has been renamed to params.Points."),this.Points}}})}function Ad(e,t){return e.distance-t.distance}function yd(e,t,n,i){if(e.layers.test(t.layers)&&e.raycast(t,n),!0===i)for(var r=e.children,a=0,o=r.length;a<o;a++)yd(r[a],t,n,!0)}md.prototype=Object.assign(Object.create(ks.prototype),{constructor:md,isInstancedInterleavedBuffer:!0,copy:function(e){return ks.prototype.copy.call(this,e),this.meshPerAttribute=e.meshPerAttribute,this},clone:function(e){e=ks.prototype.clone.call(this,e);return e.meshPerAttribute=this.meshPerAttribute,e},toJSON:function(e){e=ks.prototype.toJSON.call(this,e);return e.isInstancedInterleavedBuffer=!0,e.meshPerAttribute=this.meshPerAttribute,e}}),Object.defineProperty(vd.prototype,"needsUpdate",{set:function(e){!0===e&&this.version++}}),Object.assign(vd.prototype,{isGLBufferAttribute:!0,setBuffer:function(e){return this.buffer=e,this},setType:function(e,t){return this.type=e,this.elementSize=t,this},setItemSize:function(e){return this.itemSize=e,this},setCount:function(e){return this.count=e,this}}),Object.assign(gd.prototype,{set:function(e,t){this.ray.set(e,t)},setFromCamera:function(e,t){t&&t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t&&t.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)},intersectObject:function(e,t,n){n=n||[];return yd(e,this,n,t),n.sort(Ad),n},intersectObjects:function(e,t,n){var i=n||[];if(!1===Array.isArray(e))console.warn("THREE.Raycaster.intersectObjects: objects is not an Array.");else{for(var r=0,a=e.length;r<a;r++)yd(e[r],this,i,t);i.sort(Ad)}return i}});var t=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;return te(this,i),this.radius=e,this.phi=t,this.theta=n,this}return A(i,[{key:"set",value:function(e,t,n){return this.radius=e,this.phi=t,this.theta=n,this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}},{key:"makeSafe",value:function(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}},{key:"setFromVector3",value:function(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}},{key:"setFromCartesianCoords",value:function(e,t,n){return this.radius=Math.sqrt(e*e+t*t+n*n),0===this.radius?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,n),this.phi=Math.acos(Be.clamp(t/this.radius,-1,1))),this}}]),i}(),sd=function(){function i(e,t,n){return te(this,i),this.radius=void 0!==e?e:1,this.theta=void 0!==t?t:0,this.y=void 0!==n?n:0,this}return A(i,[{key:"set",value:function(e,t,n){return this.radius=e,this.theta=t,this.y=n,this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}},{key:"setFromVector3",value:function(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}},{key:"setFromCartesianCoords",value:function(e,t,n){return this.radius=Math.sqrt(e*e+n*n),this.theta=Math.atan2(e,n),this.y=t,this}}]),i}(),wd=new Le,bd=function(){function n(e,t){te(this,n),Object.defineProperty(this,"isBox2",{value:!0}),this.min=void 0!==e?e:new Le(1/0,1/0),this.max=void 0!==t?t:new Le(-1/0,-1/0)}return A(n,[{key:"set",value:function(e,t){return this.min.copy(e),this.max.copy(t),this}},{key:"setFromPoints",value:function(e){this.makeEmpty();for(var t=0,n=e.length;t<n;t++)this.expandByPoint(e[t]);return this}},{key:"setFromCenterAndSize",value:function(e,t){t=wd.copy(t).multiplyScalar(.5);return this.min.copy(e).sub(t),this.max.copy(e).add(t),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.min.copy(e.min),this.max.copy(e.max),this}},{key:"makeEmpty",value:function(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}},{key:"isEmpty",value:function(){return this.max.x<this.min.x||this.max.y<this.min.y}},{key:"getCenter",value:function(e){return void 0===e&&(console.warn("THREE.Box2: .getCenter() target is now required"),e=new Le),this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}},{key:"getSize",value:function(e){return void 0===e&&(console.warn("THREE.Box2: .getSize() target is now required"),e=new Le),this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}},{key:"expandByPoint",value:function(e){return this.min.min(e),this.max.max(e),this}},{key:"expandByVector",value:function(e){return this.min.sub(e),this.max.add(e),this}},{key:"expandByScalar",value:function(e){return this.min.addScalar(-e),this.max.addScalar(e),this}},{key:"containsPoint",value:function(e){return!(e.x<this.min.x||e.x>this.max.x||e.y<this.min.y||e.y>this.max.y)}},{key:"containsBox",value:function(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}},{key:"getParameter",value:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .getParameter() target is now required"),t=new Le),t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}},{key:"intersectsBox",value:function(e){return!(e.max.x<this.min.x||e.min.x>this.max.x||e.max.y<this.min.y||e.min.y>this.max.y)}},{key:"clampPoint",value:function(e,t){return void 0===t&&(console.warn("THREE.Box2: .clampPoint() target is now required"),t=new Le),t.copy(e).clamp(this.min,this.max)}},{key:"distanceToPoint",value:function(e){return wd.copy(e).clamp(this.min,this.max).sub(e).length()}},{key:"intersect",value:function(e){return this.min.max(e.min),this.max.min(e.max),this}},{key:"union",value:function(e){return this.min.min(e.min),this.max.max(e.max),this}},{key:"translate",value:function(e){return this.min.add(e),this.max.add(e),this}},{key:"equals",value:function(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}]),n}(),xd=new Re,Ed=new Re,Cd=function(){function n(e,t){te(this,n),this.start=void 0!==e?e:new Re,this.end=void 0!==t?t:new Re}return A(n,[{key:"set",value:function(e,t){return this.start.copy(e),this.end.copy(t),this}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"copy",value:function(e){return this.start.copy(e.start),this.end.copy(e.end),this}},{key:"getCenter",value:function(e){return void 0===e&&(console.warn("THREE.Line3: .getCenter() target is now required"),e=new Re),e.addVectors(this.start,this.end).multiplyScalar(.5)}},{key:"delta",value:function(e){return void 0===e&&(console.warn("THREE.Line3: .delta() target is now required"),e=new Re),e.subVectors(this.end,this.start)}},{key:"distanceSq",value:function(){return this.start.distanceToSquared(this.end)}},{key:"distance",value:function(){return this.start.distanceTo(this.end)}},{key:"at",value:function(e,t){return void 0===t&&(console.warn("THREE.Line3: .at() target is now required"),t=new Re),this.delta(t).multiplyScalar(e).add(this.start)}},{key:"closestPointToPointParameter",value:function(e,t){xd.subVectors(e,this.start),Ed.subVectors(this.end,this.start);e=Ed.dot(Ed),e=Ed.dot(xd)/e;return e=t?Be.clamp(e,0,1):e}},{key:"closestPointToPoint",value:function(e,t,n){e=this.closestPointToPointParameter(e,t);return void 0===n&&(console.warn("THREE.Line3: .closestPointToPoint() target is now required"),n=new Re),this.delta(n).multiplyScalar(e).add(this.start)}},{key:"applyMatrix4",value:function(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}},{key:"equals",value:function(e){return e.start.equals(this.start)&&e.end.equals(this.end)}}]),n}();function Bd(e){K.call(this),this.material=e,this.render=function(){},this.hasPositions=!1,this.hasNormals=!1,this.hasColors=!1,this.hasUvs=!1,this.positionArray=null,this.normalArray=null,this.colorArray=null,this.uvArray=null,this.count=0}((Bd.prototype=Object.create(K.prototype)).constructor=Bd).prototype.isImmediateRenderObject=!0;var _d=new Re,ad=function(){y(u,K);var l=C(u);function u(e,t){te(this,u),(n=l.call(this)).light=e,n.light.updateMatrixWorld(),n.matrix=e.matrixWorld,n.matrixAutoUpdate=!1,n.color=t;for(var n,e=new j,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1],r=0,a=1;r<32;r++,a++){var o=r/32*Math.PI*2,s=a/32*Math.PI*2;i.push(Math.cos(o),Math.sin(o),1,Math.cos(s),Math.sin(s),1)}e.setAttribute("position",new ne(i,3));t=new vl({fog:!1,toneMapped:!1});return n.cone=new Bl(e,t),n.add(n.cone),n.update(),n}return A(u,[{key:"dispose",value:function(){this.cone.geometry.dispose(),this.cone.material.dispose()}},{key:"update",value:function(){this.light.updateMatrixWorld();var e=this.light.distance||1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),_d.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(_d),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}]),u}(),Md=new Re,Td=new _e,Sd=new _e,Id=function(){y(h,Bl);var c=C(h);function h(e){te(this,h);for(var t=function e(t){var n=[];t&&t.isBone&&n.push(t);for(var i=0;i<t.children.length;i++)n.push.apply(n,e(t.children[i]));return n}(e),n=new j,i=[],r=[],a=new Me(0,0,1),o=new Me(0,1,0),s=0;s<t.length;s++){var l=t[s];l.parent&&l.parent.isBone&&(i.push(0,0,0),i.push(0,0,0),r.push(a.r,a.g,a.b),r.push(o.r,o.g,o.b))}n.setAttribute("position",new ne(i,3)),n.setAttribute("color",new ne(r,3));var u=new vl({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0});return(n=c.call(this,n,u)).type="SkeletonHelper",n.isSkeletonHelper=!0,n.root=e,n.bones=t,n.matrix=e.matrixWorld,n.matrixAutoUpdate=!1,n}return A(h,[{key:"updateMatrixWorld",value:function(e){var t=this.bones,n=this.geometry,i=n.getAttribute("position");Sd.copy(this.root.matrixWorld).invert();for(var r=0,a=0;r<t.length;r++){var o=t[r];o.parent&&o.parent.isBone&&(Td.multiplyMatrices(Sd,o.matrixWorld),Md.setFromMatrixPosition(Td),i.setXYZ(a,Md.x,Md.y,Md.z),Td.multiplyMatrices(Sd,o.parent.matrixWorld),Md.setFromMatrixPosition(Td),i.setXYZ(a+1,Md.x,Md.y,Md.z),a+=2)}n.getAttribute("position").needsUpdate=!0,k(_(h.prototype),"updateMatrixWorld",this).call(this,e)}}]),h}();var Dd=function(){y(a,Z);var r=C(a);function a(e,t,n){te(this,a);var t=new zu(t,4,2),i=new L({wireframe:!0,fog:!1,toneMapped:!1}),t=r.call(this,t,i);return t.light=e,t.light.updateMatrixWorld(),t.color=n,t.type="PointLightHelper",t.matrix=t.light.matrixWorld,t.matrixAutoUpdate=!1,t.update(),t}return A(a,[{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose()}},{key:"update",value:function(){void 0!==this.color?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}]),a}(),Pd=new Re,kd=new Me,Ld=new Me,Rd=function(){y(a,K);var r=C(a);function a(e,t,n){te(this,a),(i=r.call(this)).light=e,i.light.updateMatrixWorld(),i.matrix=e.matrixWorld,i.matrixAutoUpdate=!1,i.color=n;var i,e=new Du(t),n=(e.rotateY(.5*Math.PI),i.material=new L({wireframe:!0,fog:!1,toneMapped:!1}),void 0===i.color&&(i.material.vertexColors=!0),e.getAttribute("position")),t=new Float32Array(3*n.count);return e.setAttribute("color",new Q(t,3)),i.add(new Z(e,i.material)),i.update(),i}return A(a,[{key:"dispose",value:function(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}},{key:"update",value:function(){var e=this.children[0];if(void 0!==this.color)this.material.color.set(this.color);else{var t=e.geometry.getAttribute("color");kd.copy(this.light.color),Ld.copy(this.light.groundColor);for(var n=0,i=t.count;n<i;n++){var r=n<i/2?kd:Ld;t.setXYZ(n,r.r,r.g,r.b)}t.needsUpdate=!0}e.lookAt(Pd.setFromMatrixPosition(this.light.matrixWorld).negate())}}]),a}(),Fd=function(){y(m,Bl);var f=C(m);function m(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:10,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:10,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:4473924,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:8947848,r=(te(this,m),n=new Me(n),i=new Me(i),t/2),a=e/t,o=e/2,s=[],l=[],u=0,c=0,h=-o;u<=t;u++,h+=a){s.push(-o,0,h,o,0,h),s.push(h,0,-o,h,0,o);var d=u===r?n:i;d.toArray(l,c),c+=3,d.toArray(l,c),c+=3,d.toArray(l,c),c+=3,d.toArray(l,c),c+=3}var e=new j,p=(e.setAttribute("position",new ne(s,3)),e.setAttribute("color",new ne(l,3)),new vl({vertexColors:!0,toneMapped:!1}));return(e=f.call(this,e,p)).type="GridHelper",e}return A(m)}(),Od=function(){y(b,Bl);var w=C(b);function b(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:10,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:16,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:8,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:64,r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:4473924,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:8947848,o=(te(this,b),r=new Me(r),a=new Me(a),[]),s=[],l=0;l<=t;l++){var u=l/t*(2*Math.PI),c=Math.sin(u)*e,u=Math.cos(u)*e,c=(o.push(0,0,0),o.push(c,0,u),1&l?r:a);s.push(c.r,c.g,c.b),s.push(c.r,c.g,c.b)}for(var h=0;h<=n;h++)for(var d=1&h?r:a,p=e-e/n*h,f=0;f<i;f++){var m=f/i*(2*Math.PI),v=Math.sin(m)*p,g=Math.cos(m)*p;o.push(v,0,g),s.push(d.r,d.g,d.b),m=(f+1)/i*(2*Math.PI),v=Math.sin(m)*p,g=Math.cos(m)*p,o.push(v,0,g),s.push(d.r,d.g,d.b)}var A=new j,y=(A.setAttribute("position",new ne(o,3)),A.setAttribute("color",new ne(s,3)),new vl({vertexColors:!0,toneMapped:!1}));return(A=w.call(this,A,y)).type="PolarGridHelper",A}return A(b)}(),Nd=new Re,Gd=new Re,Ud=new Re,zd=function(){y(a,K);var r=C(a);function a(e,t,n){te(this,a),(i=r.call(this)).light=e,i.light.updateMatrixWorld(),i.matrix=e.matrixWorld,i.matrixAutoUpdate=!1,i.color=n,void 0===t&&(t=1);var i,e=new j,n=(e.setAttribute("position",new ne([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3)),new vl({fog:!1,toneMapped:!1}));return i.lightPlane=new xl(e,n),i.add(i.lightPlane),(e=new j).setAttribute("position",new ne([0,0,0,0,0,1],3)),i.targetLine=new xl(e,n),i.add(i.targetLine),i.update(),i}return A(a,[{key:"dispose",value:function(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}},{key:"update",value:function(){Nd.setFromMatrixPosition(this.light.matrixWorld),Gd.setFromMatrixPosition(this.light.target.matrixWorld),Ud.subVectors(Gd,Nd),this.lightPlane.lookAt(Gd),void 0!==this.color?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(Gd),this.targetLine.scale.z=Ud.length()}}]),a}(),Hd=new Re,Qd=new fa,Vd=function(){y(f,Bl);var p=C(f);function f(e){te(this,f);var t=new j,n=new vl({color:16777215,vertexColors:!0,toneMapped:!1}),i=[],r=[],a={},o=new Me(16755200),s=new Me(16711680),l=new Me(43775),u=new Me(16777215),c=new Me(3355443);function h(e,t,n){d(e,n),d(t,n)}function d(e,t){i.push(0,0,0),r.push(t.r,t.g,t.b),void 0===a[e]&&(a[e]=[]),a[e].push(i.length/3-1)}return h("n1","n2",o),h("n2","n4",o),h("n4","n3",o),h("n3","n1",o),h("f1","f2",o),h("f2","f4",o),h("f4","f3",o),h("f3","f1",o),h("n1","f1",o),h("n2","f2",o),h("n3","f3",o),h("n4","f4",o),h("p","n1",s),h("p","n2",s),h("p","n3",s),h("p","n4",s),h("u1","u2",l),h("u2","u3",l),h("u3","u1",l),h("c","t",u),h("p","c",c),h("cn1","cn2",c),h("cn3","cn4",c),h("cf1","cf2",c),h("cf3","cf4",c),t.setAttribute("position",new ne(i,3)),t.setAttribute("color",new ne(r,3)),(o=p.call(this,t,n)).type="CameraHelper",o.camera=e,o.camera.updateProjectionMatrix&&o.camera.updateProjectionMatrix(),o.matrix=e.matrixWorld,o.matrixAutoUpdate=!1,o.pointMap=a,o.update(),o}return A(f,[{key:"update",value:function(){var e=this.geometry,t=this.pointMap;Qd.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),jd("c",t,e,Qd,0,0,-1),jd("t",t,e,Qd,0,0,1),jd("n1",t,e,Qd,-1,-1,-1),jd("n2",t,e,Qd,1,-1,-1),jd("n3",t,e,Qd,-1,1,-1),jd("n4",t,e,Qd,1,1,-1),jd("f1",t,e,Qd,-1,-1,1),jd("f2",t,e,Qd,1,-1,1),jd("f3",t,e,Qd,-1,1,1),jd("f4",t,e,Qd,1,1,1),jd("u1",t,e,Qd,.7,1.1,-1),jd("u2",t,e,Qd,-.7,1.1,-1),jd("u3",t,e,Qd,0,2,-1),jd("cf1",t,e,Qd,-1,0,1),jd("cf2",t,e,Qd,1,0,1),jd("cf3",t,e,Qd,0,-1,1),jd("cf4",t,e,Qd,0,1,1),jd("cn1",t,e,Qd,-1,0,-1),jd("cn2",t,e,Qd,1,0,-1),jd("cn3",t,e,Qd,0,-1,-1),jd("cn4",t,e,Qd,0,1,-1),e.getAttribute("position").needsUpdate=!0}}]),f}();function jd(e,t,n,i,r,a,o){Hd.set(r,a,o).unproject(i);var s=t[e];if(void 0!==s)for(var l=n.getAttribute("position"),u=0,c=s.length;u<c;u++)l.setXYZ(s[u],Hd.x,Hd.y,Hd.z)}var Wd,Jd,qd=new Y,Xd=function(){y(o,Bl);var a=C(o);function o(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:16776960,n=(te(this,o),new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7])),i=new Float32Array(24),r=new j;return r.setIndex(new Q(n,1)),r.setAttribute("position",new Q(i,3)),(n=a.call(this,r,new vl({color:t,toneMapped:!1}))).object=e,n.type="BoxHelper",n.matrixAutoUpdate=!1,n.update(),n}return A(o,[{key:"update",value:function(e){var t,n,i;void 0!==e&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),void 0!==this.object&&qd.setFromObject(this.object),qd.isEmpty()||(e=qd.min,t=qd.max,(i=(n=this.geometry.attributes.position).array)[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=e.x,i[4]=t.y,i[5]=t.z,i[6]=e.x,i[7]=e.y,i[8]=t.z,i[9]=t.x,i[10]=e.y,i[11]=t.z,i[12]=t.x,i[13]=t.y,i[14]=e.z,i[15]=e.x,i[16]=t.y,i[17]=e.z,i[18]=e.x,i[19]=e.y,i[20]=e.z,i[21]=t.x,i[22]=e.y,i[23]=e.z,n.needsUpdate=!0,this.geometry.computeBoundingSphere())}},{key:"setFromObject",value:function(e){return this.object=e,this.update(),this}},{key:"copy",value:function(e){return Bl.prototype.copy.call(this,e),this.object=e.object,this}}]),o}(),Yd=function(){y(a,Bl);var r=C(a);function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:16776960,n=(te(this,a),new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7])),i=new j;return i.setIndex(new Q(n,1)),i.setAttribute("position",new ne([1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],3)),(n=r.call(this,i,new vl({color:t,toneMapped:!1}))).box=e,n.type="Box3Helper",n.geometry.computeBoundingSphere(),n}return A(a,[{key:"updateMatrixWorld",value:function(e){var t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),k(_(a.prototype),"updateMatrixWorld",this).call(this,e))}}]),a}(),Kd=function(){y(a,xl);var r=C(a);function a(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:16776960,i=(te(this,a),new j),e=(i.setAttribute("position",new ne([1,-1,1,-1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,0,0,1,0,0,0],3)),i.computeBoundingSphere(),(i=r.call(this,i,new vl({color:n,toneMapped:!1}))).type="PlaneHelper",i.plane=e,i.size=t,new j);return e.setAttribute("position",new ne([1,1,1,-1,1,1,-1,-1,1,1,1,1,-1,-1,1,1,-1,1],3)),e.computeBoundingSphere(),i.add(new Z(e,new L({color:n,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1}))),i}return A(a,[{key:"updateMatrixWorld",value:function(e){var t=-this.plane.constant;Math.abs(t)<1e-8&&(t=1e-8),this.scale.set(.5*this.size,.5*this.size,t),this.children[0].material.side=t<0?me:fe,this.lookAt(this.plane.normal),k(_(a.prototype),"updateMatrixWorld",this).call(this,e)}}]),a}(),Zd=new Re,$d=function(){y(l,K);var s=C(l);function l(e,t,n,i,r,a){var o;return te(this,l),(o=s.call(this)).type="ArrowHelper",void 0===e&&(e=new Re(0,0,1)),void 0===t&&(t=new Re(0,0,0)),void 0===n&&(n=1),void 0===i&&(i=16776960),void 0===r&&(r=.2*n),void 0===a&&(a=.2*r),void 0===Wd&&((Wd=new j).setAttribute("position",new ne([0,0,0,0,1,0],3)),(Jd=new Wl(0,.5,1,5,1)).translate(0,-.5,0)),o.position.copy(t),o.line=new xl(Wd,new vl({color:i,toneMapped:!1})),o.line.matrixAutoUpdate=!1,o.add(o.line),o.cone=new Z(Jd,new L({color:i,toneMapped:!1})),o.cone.matrixAutoUpdate=!1,o.add(o.cone),o.setDirection(e),o.setLength(n,r,a),o}return A(l,[{key:"setDirection",value:function(e){.99999<e.y?this.quaternion.set(0,0,0,1):e.y<-.99999?this.quaternion.set(1,0,0,0):(Zd.set(e.z,0,-e.x).normalize(),e=Math.acos(e.y),this.quaternion.setFromAxisAngle(Zd,e))}},{key:"setLength",value:function(e,t,n){void 0===t&&(t=.2*e),void 0===n&&(n=.2*t),this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}},{key:"setColor",value:function(e){this.line.material.color.set(e),this.cone.material.color.set(e)}},{key:"copy",value:function(e){return k(_(l.prototype),"copy",this).call(this,e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}}]),l}(),ep=function(){y(i,Bl);var n=C(i);function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,e=(te(this,i),[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e]),t=new j,e=(t.setAttribute("position",new ne(e,3)),t.setAttribute("color",new ne([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),new vl({vertexColors:!0,toneMapped:!1})),t=n.call(this,t,e);return t.type="AxesHelper",t}return A(i)}(),tp=new Float32Array(1),np=new Int32Array(tp.buffer),ip={toHalfFloat:function(e){tp[0]=e;var e=np[0],t=e>>16&32768,n=e>>12&2047,i=e>>23&255;if(!(i<103)){if(142<i)return t=t|31744|((255==i?0:1)&&8388607&e);if(i<113)return t|=((n|=2048)>>114-i)+(n>>113-i&1);t=(t|(i-112<<10|n>>1))+(1&n)}return t}},rp=Math.pow(2,8),ap=[.125,.215,.35,.446,.526,.582],op=5+ap.length,sp=(z(up={},kn,0),z(up,Ln,1),z(up,3002,2),z(up,3004,3),z(up,3005,4),z(up,3006,5),z(up,3007,6),up),lp=new mh,up=gp(),cp=up._lodPlanes,hp=up._sizeLods,dp=up._sigmas,pp=new Me,fp=null,up=(1+Math.sqrt(5))/2,mp=1/up,vp=[new Re(1,1,1),new Re(-1,1,1),new Re(1,1,-1),new Re(-1,1,-1),new Re(0,up,mp),new Re(0,up,-mp),new Re(mp,0,up),new Re(-mp,0,up),new Re(up,mp,0),new Re(-up,mp,0)],up=function(){function i(e){var t,n;te(this,i),this._renderer=e,this._pingPongRenderTarget=null,this._blurMaterial=(e=20,t=new Float32Array(e),n=new Re(0,1,0),new nc({name:"SphericalGaussianBlur",defines:{n:e},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:t},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n},inputEncoding:{value:sp[kn]},outputEncoding:{value:sp[kn]}},vertexShader:xp(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t".concat(Ep(),"\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include <cube_uv_reflection_fragment>\n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t"),blending:ge,depthTest:!1,depthWrite:!1})),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}return A(i,[{key:"fromScene",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.1,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:100,r=(fp=this._renderer.getRenderTarget(),this._allocateTargets());return this._sceneToCubeUV(e,n,i,r),0<t&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}},{key:"fromEquirectangular",value:function(e){return this._fromTexture(e)}},{key:"fromCubemap",value:function(e){return this._fromTexture(e)}},{key:"compileCubemapShader",value:function(){null===this._cubemapShader&&(this._cubemapShader=bp(),this._compileMaterial(this._cubemapShader))}},{key:"compileEquirectangularShader",value:function(){null===this._equirectShader&&(this._equirectShader=wp(),this._compileMaterial(this._equirectShader))}},{key:"dispose",value:function(){this._blurMaterial.dispose(),null!==this._cubemapShader&&this._cubemapShader.dispose(),null!==this._equirectShader&&this._equirectShader.dispose();for(var e=0;e<cp.length;e++)cp[e].dispose()}},{key:"_cleanup",value:function(e){this._pingPongRenderTarget.dispose(),this._renderer.setRenderTarget(fp),e.scissorTest=!1,yp(e,0,0,e.width,e.height)}},{key:"_fromTexture",value:function(e){fp=this._renderer.getRenderTarget();var t=this._allocateTargets(e);return this._textureToCubeUV(e,t),this._applyPMREM(t),this._cleanup(t),t}},{key:"_allocateTargets",value:function(e){var t={magFilter:ut,minFilter:ut,generateMipmaps:!1,type:mt,format:Pt,encoding:void 0===(t=e)||t.type!==mt||t.encoding!==kn&&t.encoding!==Ln&&3007!==t.encoding?3002:e.encoding,depthBuffer:!1},n=Ap(t);return n.depthBuffer=!e,this._pingPongRenderTarget=Ap(t),n}},{key:"_compileMaterial",value:function(e){e=new Z(cp[0],e);this._renderer.compile(e,lp)}},{key:"_sceneToCubeUV",value:function(e,t,n,i){var r,a=new ma(90,1,t,n),o=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],l=this._renderer,t=l.outputEncoding,n=l.toneMapping,u=(l.getClearColor(pp),l.getClearAlpha()),c=(l.toneMapping=$e,l.outputEncoding=kn,e.background);c&&c.isColor&&(c.convertSRGBToLinear(),r=Math.max(c.r,c.g,c.b),r=Math.min(Math.max(Math.ceil(Math.log2(r)),-128),127),c=c.multiplyScalar(Math.pow(2,-r)),l.setClearColor(c,(r+128)/255),e.background=null);for(var h=0;h<6;h++){var d=h%3;0==d?(a.up.set(0,o[h],0),a.lookAt(s[h],0,0)):1==d?(a.up.set(0,0,o[h]),a.lookAt(0,s[h],0)):(a.up.set(0,o[h],0),a.lookAt(0,0,s[h])),yp(i,d*rp,2<h?rp:0,rp,rp),l.setRenderTarget(i),l.render(e,a)}l.toneMapping=n,l.outputEncoding=t,l.setClearColor(pp,u)}},{key:"_textureToCubeUV",value:function(e,t){var n=this._renderer,i=(e.isCubeTexture?null==this._cubemapShader&&(this._cubemapShader=bp()):null==this._equirectShader&&(this._equirectShader=wp()),e.isCubeTexture?this._cubemapShader:this._equirectShader),r=new Z(cp[0],i),i=i.uniforms;(i.envMap.value=e).isCubeTexture||i.texelSize.value.set(1/e.image.width,1/e.image.height),i.inputEncoding.value=sp[e.encoding],i.outputEncoding.value=sp[t.texture.encoding],yp(t,0,0,3*rp,2*rp),n.setRenderTarget(t),n.render(r,lp)}},{key:"_applyPMREM",value:function(e){var t=this._renderer,n=t.autoClear;t.autoClear=!1;for(var i=1;i<op;i++){var r=Math.sqrt(dp[i]*dp[i]-dp[i-1]*dp[i-1]);this._blur(e,i-1,i,r,vp[(i-1)%vp.length])}t.autoClear=n}},{key:"_blur",value:function(e,t,n,i,r){var a=this._pingPongRenderTarget;this._halfBlur(e,a,t,n,i,"latitudinal",r),this._halfBlur(a,e,n,n,i,"longitudinal",r)}},{key:"_halfBlur",value:function(e,t,n,i,r,a,o){for(var s=this._renderer,l=this._blurMaterial,u=("latitudinal"!==a&&"longitudinal"!==a&&console.error("blur direction must be either latitudinal or longitudinal!"),new Z(cp[i],l)),l=l.uniforms,c=hp[n]-1,c=isFinite(r)?Math.PI/(2*c):2*Math.PI/39,h=r/c,d=isFinite(r)?1+Math.floor(3*h):20,p=(20<d&&console.warn("sigmaRadians, ".concat(r,", is too large and will clip, as it requested ").concat(d," samples when the maximum is set to ").concat(20)),[]),f=0,m=0;m<20;++m){var v=m/h,v=Math.exp(-v*v/2);p.push(v),0==m?f+=v:m<d&&(f+=2*v)}for(var g=0;g<p.length;g++)p[g]=p[g]/f;l.envMap.value=e.texture,l.samples.value=d,l.weights.value=p,l.latitudinal.value="latitudinal"===a,o&&(l.poleAxis.value=o),l.dTheta.value=c,l.mipInt.value=8-n,l.inputEncoding.value=sp[e.texture.encoding],l.outputEncoding.value=sp[e.texture.encoding];r=hp[i];yp(t,3*Math.max(0,rp-2*r),(0===i?0:2*rp)+2*r*(4<i?i-8+4:0),3*r,2*r),s.setRenderTarget(t),s.render(u,lp)}}]),i}();function gp(){for(var e=[],t=[],n=[],i=8,r=0;r<op;r++){for(var a=Math.pow(2,i),o=(t.push(a),1/a),o=(4<r?o=ap[r-8+4-1]:0==r&&(o=0),n.push(o),1/(a-1)),a=-o/2,o=1+o/2,s=[a,a,o,a,o,o,a,a,o,o,a,o],l=new Float32Array(108),u=new Float32Array(72),c=new Float32Array(36),h=0;h<6;h++){var d=h%3*2/3-1,p=2<h?0:-1;l.set([d,p,0,d+2/3,p,0,d+2/3,1+p,0,d,p,0,d+2/3,1+p,0,d,1+p,0],18*h),u.set(s,12*h),c.set([h,h,h,h,h,h],6*h)}a=new j;a.setAttribute("position",new Q(l,3)),a.setAttribute("uv",new Q(u,2)),a.setAttribute("faceIndex",new Q(c,1)),e.push(a),4<i&&i--}return{_lodPlanes:e,_sizeLods:t,_sigmas:n}}function Ap(e){e=new Zn(3*rp,3*rp,e);return e.texture.mapping=rt,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function yp(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function wp(){return new nc({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null},texelSize:{value:new Le(1,1)},inputEncoding:{value:sp[kn]},outputEncoding:{value:sp[kn]}},vertexShader:xp(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform vec2 texelSize;\n\n\t\t\t".concat(Ep(),"\n\n\t\t\t#include <common>\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\n\t\t\t\tuv -= f * texelSize;\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x += texelSize.x;\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.y += texelSize.y;\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\t\t\t\tuv.x -= texelSize.x;\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\n\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\n\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t"),blending:ge,depthTest:!1,depthWrite:!1})}function bp(){return new nc({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},inputEncoding:{value:sp[kn]},outputEncoding:{value:sp[kn]}},vertexShader:xp(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\t".concat(Ep(),"\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\n\n\t\t\t}\n\t\t"),blending:ge,depthTest:!1,depthWrite:!1})}function xp(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute vec3 position;\n\t\tattribute vec2 uv;\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function Ep(){return"\n\n\t\tuniform int inputEncoding;\n\t\tuniform int outputEncoding;\n\n\t\t#include <encodings_pars_fragment>\n\n\t\tvec4 inputTexelToLinear( vec4 value ) {\n\n\t\t\tif ( inputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( inputEncoding == 1 ) {\n\n\t\t\t\treturn sRGBToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 2 ) {\n\n\t\t\t\treturn RGBEToLinear( value );\n\n\t\t\t} else if ( inputEncoding == 3 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\n\n\t\t\t} else if ( inputEncoding == 4 ) {\n\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\n\n\t\t\t} else if ( inputEncoding == 5 ) {\n\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn GammaToLinear( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 linearToOutputTexel( vec4 value ) {\n\n\t\t\tif ( outputEncoding == 0 ) {\n\n\t\t\t\treturn value;\n\n\t\t\t} else if ( outputEncoding == 1 ) {\n\n\t\t\t\treturn LinearTosRGB( value );\n\n\t\t\t} else if ( outputEncoding == 2 ) {\n\n\t\t\t\treturn LinearToRGBE( value );\n\n\t\t\t} else if ( outputEncoding == 3 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\n\n\t\t\t} else if ( outputEncoding == 4 ) {\n\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\n\n\t\t\t} else if ( outputEncoding == 5 ) {\n\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\n\n\t\t\t} else {\n\n\t\t\t\treturn LinearToGamma( value, 2.2 );\n\n\t\t\t}\n\n\t\t}\n\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\n\n\t\t\treturn inputTexelToLinear( color );\n\n\t\t}\n\t"}function Cp(e,t){return console.warn("THREE.PointCloud has been renamed to THREE.Points."),new Pl(e,t)}function Bp(e){console.warn("THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),Jc.call(this,e),this.type="catmullrom",this.closed=!0}function _p(e){console.warn("THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead."),Jc.call(this,e),this.type="catmullrom"}function Mp(e){console.warn("THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead."),Jc.call(this,e),this.type="catmullrom"}Gc.create=function(e,t){return console.log("THREE.Curve.create() has been deprecated"),e.prototype=Object.create(Gc.prototype),(e.prototype.constructor=e).prototype.getPoint=t,e},Object.assign(ah.prototype,{createPointsGeometry:function(e){console.warn("THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");e=this.getPoints(e);return this.createGeometry(e)},createSpacedPointsGeometry:function(e){console.warn("THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");e=this.getSpacedPoints(e);return this.createGeometry(e)},createGeometry:function(e){console.warn("THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.");for(var t=new Hl,n=0,i=e.length;n<i;n++){var r=e[n];t.vertices.push(new Re(r.x,r.y,r.z||0))}return t}}),Object.assign(oh.prototype,{fromPoints:function(e){return console.warn("THREE.Path: .fromPoints() has been renamed to .setFromPoints()."),this.setFromPoints(e)}}),Bp.prototype=Object.create(Jc.prototype),_p.prototype=Object.create(Jc.prototype),Mp.prototype=Object.create(Jc.prototype),Object.assign(Mp.prototype,{initFromArray:function(){console.error("THREE.Spline: .initFromArray() has been removed.")},getControlPointsArray:function(){console.error("THREE.Spline: .getControlPointsArray() has been removed.")},reparametrizeByArcLength:function(){console.error("THREE.Spline: .reparametrizeByArcLength() has been removed.")}}),Fd.prototype.setColors=function(){console.error("THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.")},Id.prototype.update=function(){console.error("THREE.SkeletonHelper: update() no longer needs to be called.")},Object.assign(Ic.prototype,{extractUrlBase:function(e){return console.warn("THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead."),Eh.extractUrlBase(e)}}),Ic.Handlers={add:function(){console.error("THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.")},get:function(){console.error("THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.")}},Object.assign(bd.prototype,{center:function(e){return console.warn("THREE.Box2: .center() has been renamed to .getCenter()."),this.getCenter(e)},empty:function(){return console.warn("THREE.Box2: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(e){return console.warn("THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(e)},size:function(e){return console.warn("THREE.Box2: .size() has been renamed to .getSize()."),this.getSize(e)}}),Object.assign(Y.prototype,{center:function(e){return console.warn("THREE.Box3: .center() has been renamed to .getCenter()."),this.getCenter(e)},empty:function(){return console.warn("THREE.Box3: .empty() has been renamed to .isEmpty()."),this.isEmpty()},isIntersectionBox:function(e){return console.warn("THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(e)},isIntersectionSphere:function(e){return console.warn("THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(e)},size:function(e){return console.warn("THREE.Box3: .size() has been renamed to .getSize()."),this.getSize(e)}}),Object.assign(gi.prototype,{empty:function(){return console.warn("THREE.Sphere: .empty() has been renamed to .isEmpty()."),this.isEmpty()}}),xa.prototype.setFromMatrix=function(e){return console.warn("THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix()."),this.setFromProjectionMatrix(e)},Cd.prototype.center=function(e){return console.warn("THREE.Line3: .center() has been renamed to .getCenter()."),this.getCenter(e)},Object.assign(Be,{random16:function(){return console.warn("THREE.Math: .random16() has been deprecated. Use Math.random() instead."),Math.random()},nearestPowerOfTwo:function(e){return console.warn("THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo()."),Be.floorPowerOfTwo(e)},nextPowerOfTwo:function(e){return console.warn("THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo()."),Be.ceilPowerOfTwo(e)}}),Object.assign(Wn.prototype,{flattenToArrayOffset:function(e,t){return console.warn("THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(e,t)},multiplyVector3:function(e){return console.warn("THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},multiplyVector3Array:function(){console.error("THREE.Matrix3: .multiplyVector3Array() has been removed.")},applyToBufferAttribute:function(e){return console.warn("THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead."),e.applyMatrix3(this)},applyToVector3Array:function(){console.error("THREE.Matrix3: .applyToVector3Array() has been removed.")},getInverse:function(e){return console.warn("THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(e).invert()}}),Object.assign(_e.prototype,{extractPosition:function(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)},flattenToArrayOffset:function(e,t){return console.warn("THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead."),this.toArray(e,t)},getPosition:function(){return console.warn("THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead."),(new Re).setFromMatrixColumn(this,3)},setRotationFromQuaternion:function(e){return console.warn("THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion()."),this.makeRotationFromQuaternion(e)},multiplyToArray:function(){console.warn("THREE.Matrix4: .multiplyToArray() has been removed.")},multiplyVector3:function(e){return console.warn("THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector4:function(e){return console.warn("THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},multiplyVector3Array:function(){console.error("THREE.Matrix4: .multiplyVector3Array() has been removed.")},rotateAxis:function(e){console.warn("THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead."),e.transformDirection(this)},crossVector:function(e){return console.warn("THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},translate:function(){console.error("THREE.Matrix4: .translate() has been removed.")},rotateX:function(){console.error("THREE.Matrix4: .rotateX() has been removed.")},rotateY:function(){console.error("THREE.Matrix4: .rotateY() has been removed.")},rotateZ:function(){console.error("THREE.Matrix4: .rotateZ() has been removed.")},rotateByAxis:function(){console.error("THREE.Matrix4: .rotateByAxis() has been removed.")},applyToBufferAttribute:function(e){return console.warn("THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead."),e.applyMatrix4(this)},applyToVector3Array:function(){console.error("THREE.Matrix4: .applyToVector3Array() has been removed.")},makeFrustum:function(e,t,n,i,r,a){return console.warn("THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead."),this.makePerspective(e,t,i,n,r,a)},getInverse:function(e){return console.warn("THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead."),this.copy(e).invert()}}),$i.prototype.isIntersectionLine=function(e){return console.warn("THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine()."),this.intersectsLine(e)},Object.assign(X.prototype,{multiplyVector3:function(e){return console.warn("THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead."),e.applyQuaternion(this)},inverse:function(){return console.warn("THREE.Quaternion: .inverse() has been renamed to invert()."),this.invert()}}),Object.assign(Bi.prototype,{isIntersectionBox:function(e){return console.warn("THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox()."),this.intersectsBox(e)},isIntersectionPlane:function(e){return console.warn("THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane()."),this.intersectsPlane(e)},isIntersectionSphere:function(e){return console.warn("THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere()."),this.intersectsSphere(e)}}),Object.assign(cr.prototype,{area:function(){return console.warn("THREE.Triangle: .area() has been renamed to .getArea()."),this.getArea()},barycoordFromPoint:function(e,t){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),this.getBarycoord(e,t)},midpoint:function(e){return console.warn("THREE.Triangle: .midpoint() has been renamed to .getMidpoint()."),this.getMidpoint(e)},normal:function(e){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),this.getNormal(e)},plane:function(e){return console.warn("THREE.Triangle: .plane() has been renamed to .getPlane()."),this.getPlane(e)}}),Object.assign(cr,{barycoordFromPoint:function(e,t,n,i,r){return console.warn("THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord()."),cr.getBarycoord(e,t,n,i,r)},normal:function(e,t,n,i){return console.warn("THREE.Triangle: .normal() has been renamed to .getNormal()."),cr.getNormal(e,t,n,i)}}),Object.assign(sh.prototype,{extractAllPoints:function(e){return console.warn("THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead."),this.extractPoints(e)},extrude:function(e){return console.warn("THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead."),new _u(this,e)},makeGeometry:function(e){return console.warn("THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead."),new Uu(this,e)}}),Object.assign(Le.prototype,{fromAttribute:function(e,t,n){return console.warn("THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(e,t,n)},distanceToManhattan:function(e){return console.warn("THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(e)},lengthManhattan:function(){return console.warn("THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Re.prototype,{setEulerFromRotationMatrix:function(){console.error("THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.")},setEulerFromQuaternion:function(){console.error("THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.")},getPositionFromMatrix:function(e){return console.warn("THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition()."),this.setFromMatrixPosition(e)},getScaleFromMatrix:function(e){return console.warn("THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale()."),this.setFromMatrixScale(e)},getColumnFromMatrix:function(e,t){return console.warn("THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn()."),this.setFromMatrixColumn(t,e)},applyProjection:function(e){return console.warn("THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead."),this.applyMatrix4(e)},fromAttribute:function(e,t,n){return console.warn("THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(e,t,n)},distanceToManhattan:function(e){return console.warn("THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo()."),this.manhattanDistanceTo(e)},lengthManhattan:function(){return console.warn("THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Kn.prototype,{fromAttribute:function(e,t,n){return console.warn("THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute()."),this.fromBufferAttribute(e,t,n)},lengthManhattan:function(){return console.warn("THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength()."),this.manhattanLength()}}),Object.assign(Hl.prototype,{computeTangents:function(){console.error("THREE.Geometry: .computeTangents() has been removed.")},computeLineDistances:function(){console.error("THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.")},applyMatrix:function(e){return console.warn("THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}}),Object.assign(K.prototype,{getChildByName:function(e){return console.warn("THREE.Object3D: .getChildByName() has been renamed to .getObjectByName()."),this.getObjectByName(e)},renderDepth:function(){console.warn("THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.")},translate:function(e,t){return console.warn("THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead."),this.translateOnAxis(t,e)},getWorldRotation:function(){console.error("THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.")},applyMatrix:function(e){return console.warn("THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}}),Object.defineProperties(K.prototype,{eulerOrder:{get:function(){return console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order},set:function(e){console.warn("THREE.Object3D: .eulerOrder is now .rotation.order."),this.rotation.order=e}},useQuaternion:{get:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")},set:function(){console.warn("THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.")}}}),Object.assign(Z.prototype,{setDrawMode:function(){console.error("THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}),Object.defineProperties(Z.prototype,{drawMode:{get:function(){return console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode."),0},set:function(){console.error("THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.")}}}),Object.defineProperties(el.prototype,{objects:{get:function(){return console.warn("THREE.LOD: .objects has been renamed to .levels."),this.levels}}}),Object.defineProperty(cl.prototype,"useVertexTexture",{get:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")},set:function(){console.warn("THREE.Skeleton: useVertexTexture has been removed.")}}),ol.prototype.initBones=function(){console.error("THREE.SkinnedMesh: initBones() has been removed.")},Object.defineProperty(Gc.prototype,"__arcLengthDivisions",{get:function(){return console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions},set:function(e){console.warn("THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions."),this.arcLengthDivisions=e}}),ma.prototype.setLens=function(e,t){console.warn("THREE.PerspectiveCamera.setLens is deprecated. Use .setFocalLength and .filmGauge for a photographic setup."),void 0!==t&&(this.filmGauge=t),this.setFocalLength(e)},Object.defineProperties(lh.prototype,{onlyShadow:{set:function(){console.warn("THREE.Light: .onlyShadow has been removed.")}},shadowCameraFov:{set:function(e){console.warn("THREE.Light: .shadowCameraFov is now .shadow.camera.fov."),this.shadow.camera.fov=e}},shadowCameraLeft:{set:function(e){console.warn("THREE.Light: .shadowCameraLeft is now .shadow.camera.left."),this.shadow.camera.left=e}},shadowCameraRight:{set:function(e){console.warn("THREE.Light: .shadowCameraRight is now .shadow.camera.right."),this.shadow.camera.right=e}},shadowCameraTop:{set:function(e){console.warn("THREE.Light: .shadowCameraTop is now .shadow.camera.top."),this.shadow.camera.top=e}},shadowCameraBottom:{set:function(e){console.warn("THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom."),this.shadow.camera.bottom=e}},shadowCameraNear:{set:function(e){console.warn("THREE.Light: .shadowCameraNear is now .shadow.camera.near."),this.shadow.camera.near=e}},shadowCameraFar:{set:function(e){console.warn("THREE.Light: .shadowCameraFar is now .shadow.camera.far."),this.shadow.camera.far=e}},shadowCameraVisible:{set:function(){console.warn("THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.")}},shadowBias:{set:function(e){console.warn("THREE.Light: .shadowBias is now .shadow.bias."),this.shadow.bias=e}},shadowDarkness:{set:function(){console.warn("THREE.Light: .shadowDarkness has been removed.")}},shadowMapWidth:{set:function(e){console.warn("THREE.Light: .shadowMapWidth is now .shadow.mapSize.width."),this.shadow.mapSize.width=e}},shadowMapHeight:{set:function(e){console.warn("THREE.Light: .shadowMapHeight is now .shadow.mapSize.height."),this.shadow.mapSize.height=e}}}),Object.defineProperties(Q.prototype,{length:{get:function(){return console.warn("THREE.BufferAttribute: .length has been deprecated. Use .count instead."),this.array.length}},dynamic:{get:function(){return console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.usage===Gn},set:function(){console.warn("THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead."),this.setUsage(Gn)}}}),Object.assign(Q.prototype,{setDynamic:function(e){return this.setUsage(!0===e?Gn:Nn),this},copyIndicesArray:function(){console.error("THREE.BufferAttribute: .copyIndicesArray() has been removed.")},setArray:function(){console.error("THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}}),Object.assign(j.prototype,{addIndex:function(e){console.warn("THREE.BufferGeometry: .addIndex() has been renamed to .setIndex()."),this.setIndex(e)},addAttribute:function(e,t){return console.warn("THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute()."),t&&t.isBufferAttribute||t&&t.isInterleavedBufferAttribute?"index"===e?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),this.setIndex(t),this):this.setAttribute(e,t):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),this.setAttribute(e,new Q(t,arguments[2])))},addDrawCall:function(e,t,n){void 0!==n&&console.warn("THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset."),console.warn("THREE.BufferGeometry: .addDrawCall() is now .addGroup()."),this.addGroup(e,t)},clearDrawCalls:function(){console.warn("THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups()."),this.clearGroups()},computeTangents:function(){console.warn("THREE.BufferGeometry: .computeTangents() has been removed.")},computeOffsets:function(){console.warn("THREE.BufferGeometry: .computeOffsets() has been removed.")},removeAttribute:function(e){return console.warn("THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute()."),this.deleteAttribute(e)},applyMatrix:function(e){return console.warn("THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4()."),this.applyMatrix4(e)}}),Object.defineProperties(j.prototype,{drawcalls:{get:function(){return console.error("THREE.BufferGeometry: .drawcalls has been renamed to .groups."),this.groups}},offsets:{get:function(){return console.warn("THREE.BufferGeometry: .offsets has been renamed to .groups."),this.groups}}}),Object.defineProperties(Ch.prototype,{maxInstancedCount:{get:function(){return console.warn("THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount."),this.instanceCount},set:function(e){console.warn("THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount."),this.instanceCount=e}}}),Object.defineProperties(gd.prototype,{linePrecision:{get:function(){return console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),this.params.Line.threshold},set:function(e){console.warn("THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead."),this.params.Line.threshold=e}}}),Object.defineProperties(ks.prototype,{dynamic:{get:function(){return console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),this.usage===Gn},set:function(e){console.warn("THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead."),this.setUsage(e)}}}),Object.assign(ks.prototype,{setDynamic:function(e){return console.warn("THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead."),this.setUsage(!0===e?Gn:Nn),this},setArray:function(){console.error("THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers")}}),Object.assign(Cu.prototype,{getArrays:function(){console.error("THREE.ExtrudeBufferGeometry: .getArrays() has been removed.")},addShapeList:function(){console.error("THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.")},addShape:function(){console.error("THREE.ExtrudeBufferGeometry: .addShape() has been removed.")}}),Object.assign(Ps.prototype,{dispose:function(){console.error("THREE.Scene: .dispose() has been removed.")}}),Object.defineProperties(od.prototype,{dynamic:{set:function(){console.warn("THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.")}},onUpdate:{value:function(){return console.warn("THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead."),this}}}),Object.defineProperties(yr.prototype,{wrapAround:{get:function(){console.warn("THREE.Material: .wrapAround has been removed.")},set:function(){console.warn("THREE.Material: .wrapAround has been removed.")}},overdraw:{get:function(){console.warn("THREE.Material: .overdraw has been removed.")},set:function(){console.warn("THREE.Material: .overdraw has been removed.")}},wrapRGB:{get:function(){return console.warn("THREE.Material: .wrapRGB has been removed."),new Me}},shading:{get:function(){console.error("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead.")},set:function(e){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=1===e}},stencilMask:{get:function(){return console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask},set:function(e){console.warn("THREE."+this.type+": .stencilMask has been removed. Use .stencilFuncMask instead."),this.stencilFuncMask=e}}}),Object.defineProperties(ac.prototype,{metal:{get:function(){return console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead."),!1},set:function(){console.warn("THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead")}}}),Object.defineProperties(rc.prototype,{transparency:{get:function(){return console.warn("THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission."),this.transmission},set:function(e){console.warn("THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission."),this.transmission=e}}}),Object.defineProperties(pa.prototype,{derivatives:{get:function(){return console.warn("THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives},set:function(e){console.warn("THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives."),this.extensions.derivatives=e}}}),Object.assign(Ts.prototype,{clearTarget:function(e,t,n,i){console.warn("THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead."),this.setRenderTarget(e),this.clear(t,n,i)},animate:function(e){console.warn("THREE.WebGLRenderer: .animate() is now .setAnimationLoop()."),this.setAnimationLoop(e)},getCurrentRenderTarget:function(){return console.warn("THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget()."),this.getRenderTarget()},getMaxAnisotropy:function(){return console.warn("THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy()."),this.capabilities.getMaxAnisotropy()},getPrecision:function(){return console.warn("THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision."),this.capabilities.precision},resetGLState:function(){return console.warn("THREE.WebGLRenderer: .resetGLState() is now .state.reset()."),this.state.reset()},supportsFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( 'OES_texture_float' )."),this.extensions.get("OES_texture_float")},supportsHalfFloatTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( 'OES_texture_half_float' )."),this.extensions.get("OES_texture_half_float")},supportsStandardDerivatives:function(){return console.warn("THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( 'OES_standard_derivatives' )."),this.extensions.get("OES_standard_derivatives")},supportsCompressedTextureS3TC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( 'WEBGL_compressed_texture_s3tc' )."),this.extensions.get("WEBGL_compressed_texture_s3tc")},supportsCompressedTexturePVRTC:function(){return console.warn("THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( 'WEBGL_compressed_texture_pvrtc' )."),this.extensions.get("WEBGL_compressed_texture_pvrtc")},supportsBlendMinMax:function(){return console.warn("THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( 'EXT_blend_minmax' )."),this.extensions.get("EXT_blend_minmax")},supportsVertexTextures:function(){return console.warn("THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures."),this.capabilities.vertexTextures},supportsInstancedArrays:function(){return console.warn("THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( 'ANGLE_instanced_arrays' )."),this.extensions.get("ANGLE_instanced_arrays")},enableScissorTest:function(e){console.warn("THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest()."),this.setScissorTest(e)},initMaterial:function(){console.warn("THREE.WebGLRenderer: .initMaterial() has been removed.")},addPrePlugin:function(){console.warn("THREE.WebGLRenderer: .addPrePlugin() has been removed.")},addPostPlugin:function(){console.warn("THREE.WebGLRenderer: .addPostPlugin() has been removed.")},updateShadowMap:function(){console.warn("THREE.WebGLRenderer: .updateShadowMap() has been removed.")},setFaceCulling:function(){console.warn("THREE.WebGLRenderer: .setFaceCulling() has been removed.")},allocTextureUnit:function(){console.warn("THREE.WebGLRenderer: .allocTextureUnit() has been removed.")},setTexture:function(){console.warn("THREE.WebGLRenderer: .setTexture() has been removed.")},setTexture2D:function(){console.warn("THREE.WebGLRenderer: .setTexture2D() has been removed.")},setTextureCube:function(){console.warn("THREE.WebGLRenderer: .setTextureCube() has been removed.")},getActiveMipMapLevel:function(){return console.warn("THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel()."),this.getActiveMipmapLevel()}}),Object.defineProperties(Ts.prototype,{shadowMapEnabled:{get:function(){return this.shadowMap.enabled},set:function(e){console.warn("THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled."),this.shadowMap.enabled=e}},shadowMapType:{get:function(){return this.shadowMap.type},set:function(e){console.warn("THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type."),this.shadowMap.type=e}},shadowMapCullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.")}},context:{get:function(){return console.warn("THREE.WebGLRenderer: .context has been removed. Use .getContext() instead."),this.getContext()}},vr:{get:function(){return console.warn("THREE.WebGLRenderer: .vr has been renamed to .xr"),this.xr}},gammaInput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead."),!1},set:function(){console.warn("THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.")}},gammaOutput:{get:function(){return console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),!1},set:function(e){console.warn("THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead."),this.outputEncoding=!0===e?Ln:kn}},toneMappingWhitePoint:{get:function(){return console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed."),1},set:function(){console.warn("THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.")}}}),Object.defineProperties(ys.prototype,{cullFace:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.")}},renderReverseSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.")}},renderSingleSided:{get:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")},set:function(){console.warn("THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.")}}}),Object.defineProperties(Zn.prototype,{wrapS:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS},set:function(e){console.warn("THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS."),this.texture.wrapS=e}},wrapT:{get:function(){return console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT},set:function(e){console.warn("THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT."),this.texture.wrapT=e}},magFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter},set:function(e){console.warn("THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter."),this.texture.magFilter=e}},minFilter:{get:function(){return console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter},set:function(e){console.warn("THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter."),this.texture.minFilter=e}},anisotropy:{get:function(){return console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy},set:function(e){console.warn("THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy."),this.texture.anisotropy=e}},offset:{get:function(){return console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset},set:function(e){console.warn("THREE.WebGLRenderTarget: .offset is now .texture.offset."),this.texture.offset=e}},repeat:{get:function(){return console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat},set:function(e){console.warn("THREE.WebGLRenderTarget: .repeat is now .texture.repeat."),this.texture.repeat=e}},format:{get:function(){return console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format},set:function(e){console.warn("THREE.WebGLRenderTarget: .format is now .texture.format."),this.texture.format=e}},type:{get:function(){return console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type},set:function(e){console.warn("THREE.WebGLRenderTarget: .type is now .texture.type."),this.texture.type=e}},generateMipmaps:{get:function(){return console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps},set:function(e){console.warn("THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps."),this.texture.generateMipmaps=e}}}),Object.defineProperties(Yh.prototype,{load:{value:function(e){console.warn("THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.");var t=this;return(new Oh).load(e,function(e){t.setBuffer(e)}),this}},startTime:{set:function(){console.warn("THREE.Audio: .startTime is now .play( delay ).")}}}),nd.prototype.getData=function(){return console.warn("THREE.AudioAnalyser: .getData() is now .getFrequencyData()."),this.getFrequencyData()},va.prototype.updateCubeMap=function(e,t){return console.warn("THREE.CubeCamera: .updateCubeMap() is now .update()."),this.update(e,t)},va.prototype.clear=function(e,t,n,i){return console.warn("THREE.CubeCamera: .clear() is now .renderTarget.clear()."),this.renderTarget.clear(e,t,n,i)};mp={merge:function(e,t,n){var i;console.warn("THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead."),t.isMesh&&(t.matrixAutoUpdate&&t.updateMatrix(),i=t.matrix,t=t.geometry),e.merge(t,i,n)},center:function(e){return console.warn("THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead."),e.center()}};Jn.crossOrigin=void 0,Jn.loadTexture=function(e,t,n,i){console.warn("THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.");var r=new Nc,r=(r.setCrossOrigin(this.crossOrigin),r.load(e,n,void 0,i));return t&&(r.mapping=t),r},Jn.loadTextureCube=function(e,t,n,i){console.warn("THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.");var r=new Fc,r=(r.setCrossOrigin(this.crossOrigin),r.load(e,n,void 0,i));return t&&(r.mapping=t),r},Jn.loadCompressedTexture=function(){console.error("THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.")},Jn.loadCompressedTextureCube=function(){console.error("THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.")};var Tp={createMultiMaterialObject:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},detach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")},attach:function(){console.error("THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js")}};"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"124"}}));var Sp=Object.freeze({__proto__:null,ACESFilmicToneMapping:4,AddEquation:Ee,AddOperation:2,AdditiveAnimationBlendMode:2501,AdditiveBlending:ye,AlphaFormat:Mt,AlwaysDepth:je,AlwaysStencilFunc:519,AmbientLight:Ah,AmbientLightProbe:Gh,AnimationClip:Bc,AnimationLoader:kc,AnimationMixer:fd,AnimationObjectGroup:dd,AnimationUtils:dc,ArcCurve:zc,ArrayCamera:Es,ArrowHelper:$d,Audio:Yh,AudioAnalyser:nd,AudioContext:Fh,AudioListener:Xh,AudioLoader:Oh,AxesHelper:ep,AxisHelper:function(e){return console.warn("THREE.AxisHelper has been renamed to THREE.AxesHelper."),new ep(e)},BackSide:me,BasicDepthPacking:3200,BasicShadowMap:0,BinaryTextureLoader:function(e){return console.warn("THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader."),new Oc(e)},Bone:sl,BooleanKeyframeTrack:Ac,BoundingBoxHelper:function(e,t){return console.warn("THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead."),new Xd(e,t)},Box2:bd,Box3:Y,Box3Helper:Yd,BoxBufferGeometry:sa,BoxGeometry:Ql,BoxHelper:Xd,BufferAttribute:Q,BufferGeometry:j,BufferGeometryLoader:_h,ByteType:vt,Cache:Mc,Camera:fa,CameraHelper:Vd,CanvasRenderer:function(){console.error("THREE.CanvasRenderer has been removed")},CanvasTexture:Fl,CatmullRomCurve3:Jc,CineonToneMapping:3,CircleBufferGeometry:Vl,CircleGeometry:jl,ClampToEdgeWrapping:st,Clock:Qh,ClosedSplineCurve3:Bp,Color:Me,ColorKeyframeTrack:yc,CompressedTexture:Rl,CompressedTextureLoader:Lc,ConeBufferGeometry:Xl,ConeGeometry:ql,CubeCamera:va,CubeGeometry:Ql,CubeReflectionMapping:et,CubeRefractionMapping:tt,CubeTexture:ga,CubeTextureLoader:Fc,CubeUVReflectionMapping:rt,CubeUVRefractionMapping:at,CubicBezierCurve:Kc,CubicBezierCurve3:Zc,CubicInterpolant:fc,CullFaceBack:ce,CullFaceFront:he,CullFaceFrontBack:3,CullFaceNone:ue,Curve:Gc,CurvePath:ah,CustomBlending:xe,CustomToneMapping:5,CylinderBufferGeometry:Wl,CylinderGeometry:Jl,Cylindrical:sd,DataTexture:ya,DataTexture2DArray:Ha,DataTexture3D:Qa,DataTextureLoader:Oc,DataUtils:ip,DecrementStencilOp:7683,DecrementWrapStencilOp:34056,DefaultLoadingManager:Sc,DepthFormat:kt,DepthStencilFormat:Lt,DepthTexture:Ol,DirectionalLight:gh,DirectionalLightHelper:zd,DiscreteInterpolant:vc,DodecahedronBufferGeometry:Kl,DodecahedronGeometry:Zl,DoubleSide:ve,DstAlphaFactor:Ge,DstColorFactor:ze,DynamicBufferAttribute:function(e,t){return console.warn("THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead."),new Q(e,t).setUsage(Gn)},DynamicCopyUsage:35050,DynamicDrawUsage:Gn,DynamicReadUsage:35049,EdgesGeometry:iu,EdgesHelper:function(e,t){return console.warn("THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead."),new Bl(new iu(e.geometry),new vl({color:void 0!==t?t:16777215}))},EllipseCurve:Uc,EqualDepth:qe,EqualStencilFunc:514,EquirectangularReflectionMapping:nt,EquirectangularRefractionMapping:it,Euler:ki,EventDispatcher:zn,ExtrudeBufferGeometry:Cu,ExtrudeGeometry:_u,Face3:gr,Face4:function(e,t,n,i,r,a,o){return console.warn("THREE.Face4 has been removed. A THREE.Face3 will be created instead."),new gr(e,t,n,r,a,o)},FaceColors:1,FileLoader:Pc,FlatShading:1,Float16BufferAttribute:Sr,Float32Attribute:function(e,t){return console.warn("THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead."),new ne(e,t)},Float32BufferAttribute:ne,Float64Attribute:function(e,t){return console.warn("THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead."),new Ir(e,t)},Float64BufferAttribute:Ir,FloatType:bt,Fog:Ds,FogExp2:Is,Font:Lh,FontLoader:Rh,FrontSide:fe,Frustum:xa,GLBufferAttribute:vd,GLSL1:"100",GLSL3:Un,GammaEncoding:3007,Geometry:Hl,GeometryUtils:mp,GreaterDepth:Ye,GreaterEqualDepth:Xe,GreaterEqualStencilFunc:518,GreaterStencilFunc:516,GridHelper:Fd,Group:Cs,HalfFloatType:xt,HemisphereLight:uh,HemisphereLightHelper:Rd,HemisphereLightProbe:Nh,IcosahedronBufferGeometry:Mu,IcosahedronGeometry:Tu,ImageBitmapLoader:Ph,ImageLoader:Rc,ImageUtils:Jn,ImmediateRenderObject:Bd,IncrementStencilOp:7682,IncrementWrapStencilOp:34055,InstancedBufferAttribute:Bh,InstancedBufferGeometry:Ch,InstancedInterleavedBuffer:md,InstancedMesh:ml,Int16Attribute:function(e,t){return console.warn("THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead."),new Br(e,t)},Int16BufferAttribute:Br,Int32Attribute:function(e,t){return console.warn("THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead."),new Mr(e,t)},Int32BufferAttribute:Mr,Int8Attribute:function(e,t){return console.warn("THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead."),new xr(e,t)},Int8BufferAttribute:xr,IntType:yt,InterleavedBuffer:ks,InterleavedBufferAttribute:Fs,Interpolant:pc,InterpolateDiscrete:Tn,InterpolateLinear:Sn,InterpolateSmooth:2302,InvertStencilOp:5386,JSONLoader:function(){console.error("THREE.JSONLoader has been removed.")},KeepStencilOp:7680,KeyframeTrack:gc,LOD:el,LatheBufferGeometry:Su,LatheGeometry:Iu,Layers:Fi,LensFlare:function(){console.error("THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js")},LessDepth:We,LessEqualDepth:Je,LessEqualStencilFunc:515,LessStencilFunc:513,Light:lh,LightProbe:bh,Line:xl,Line3:Cd,LineBasicMaterial:vl,LineCurve:$c,LineCurve3:eh,LineDashedMaterial:cc,LineLoop:_l,LinePieces:1,LineSegments:Bl,LineStrip:0,LinearEncoding:kn,LinearFilter:U,LinearInterpolant:mc,LinearMipMapLinearFilter:ft,LinearMipMapNearestFilter:1007,LinearMipmapLinearFilter:pt,LinearMipmapNearestFilter:dt,LinearToneMapping:1,Loader:Ic,LoaderUtils:Eh,LoadingManager:Tc,LogLuvEncoding:3003,LoopOnce:2200,LoopPingPong:2202,LoopRepeat:2201,LuminanceAlphaFormat:Dt,LuminanceFormat:It,MOUSE:le,Material:yr,MaterialLoader:xh,Math:Be,MathUtils:Be,Matrix3:Wn,Matrix4:_e,MaxEquation:Ie,Mesh:Z,MeshBasicMaterial:L,MeshDepthMaterial:ms,MeshDistanceMaterial:vs,MeshFaceMaterial:function(e){return console.warn("THREE.MeshFaceMaterial has been removed. Use an Array instead."),e},MeshLambertMaterial:lc,MeshMatcapMaterial:uc,MeshNormalMaterial:sc,MeshPhongMaterial:ac,MeshPhysicalMaterial:rc,MeshStandardMaterial:ic,MeshToonMaterial:oc,MinEquation:Se,MirroredRepeatWrapping:lt,MixOperation:1,MultiMaterial:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];return console.warn("THREE.MultiMaterial has been removed. Use an Array instead."),e.isMultiMaterial=!0,(e.materials=e).clone=function(){return e.slice()},e},MultiplyBlending:be,MultiplyOperation:Ze,NearestFilter:ut,NearestMipMapLinearFilter:1005,NearestMipMapNearestFilter:1004,NearestMipmapLinearFilter:ht,NearestMipmapNearestFilter:ct,NeverDepth:Ve,NeverStencilFunc:512,NoBlending:ge,NoColors:0,NoToneMapping:$e,NormalAnimationBlendMode:2500,NormalBlending:Ae,NotEqualDepth:Ke,NotEqualStencilFunc:517,NumberKeyframeTrack:wc,Object3D:K,ObjectLoader:Th,ObjectSpaceNormalMap:On,OctahedronBufferGeometry:Du,OctahedronGeometry:Pu,OneFactor:Pe,OneMinusDstAlphaFactor:Ue,OneMinusDstColorFactor:He,OneMinusSrcAlphaFactor:Ne,OneMinusSrcColorFactor:Fe,OrthographicCamera:mh,PCFShadowMap:de,PCFSoftShadowMap:2,PMREMGenerator:up,ParametricBufferGeometry:ku,ParametricGeometry:Lu,Particle:function(e){return console.warn("THREE.Particle has been renamed to THREE.Sprite."),new Ys(e)},ParticleBasicMaterial:function(e){return console.warn("THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial."),new Ml(e)},ParticleSystem:function(e,t){return console.warn("THREE.ParticleSystem has been renamed to THREE.Points."),new Pl(e,t)},ParticleSystemMaterial:function(e){return console.warn("THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial."),new Ml(e)},Path:oh,PerspectiveCamera:ma,Plane:$i,PlaneBufferGeometry:Ba,PlaneGeometry:Ru,PlaneHelper:Kd,PointCloud:Cp,PointCloudMaterial:function(e){return console.warn("THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial."),new Ml(e)},PointLight:fh,PointLightHelper:Dd,Points:Pl,PointsMaterial:Ml,PolarGridHelper:Od,PolyhedronBufferGeometry:Yl,PolyhedronGeometry:Fu,PositionalAudio:td,PropertyBinding:hd,PropertyMixer:id,QuadraticBezierCurve:th,QuadraticBezierCurve3:nh,Quaternion:X,QuaternionKeyframeTrack:xc,QuaternionLinearInterpolant:bc,REVISION:"124",RGBADepthPacking:Rn,RGBAFormat:St,RGBAIntegerFormat:Ut,RGBA_ASTC_10x10_Format:cn,RGBA_ASTC_10x5_Format:sn,RGBA_ASTC_10x6_Format:ln,RGBA_ASTC_10x8_Format:un,RGBA_ASTC_12x10_Format:hn,RGBA_ASTC_12x12_Format:dn,RGBA_ASTC_4x4_Format:Zt,RGBA_ASTC_5x4_Format:$t,RGBA_ASTC_5x5_Format:en,RGBA_ASTC_6x5_Format:tn,RGBA_ASTC_6x6_Format:nn,RGBA_ASTC_8x5_Format:rn,RGBA_ASTC_8x6_Format:an,RGBA_ASTC_8x8_Format:on,RGBA_BPTC_Format:pn,RGBA_ETC2_EAC_Format:Kt,RGBA_PVRTC_2BPPV1_Format:qt,RGBA_PVRTC_4BPPV1_Format:Jt,RGBA_S3TC_DXT1_Format:Ht,RGBA_S3TC_DXT3_Format:Qt,RGBA_S3TC_DXT5_Format:Vt,RGBDEncoding:3006,RGBEEncoding:3002,RGBEFormat:Pt,RGBFormat:Tt,RGBIntegerFormat:Gt,RGBM16Encoding:3005,RGBM7Encoding:3004,RGB_ETC1_Format:Xt,RGB_ETC2_Format:Yt,RGB_PVRTC_2BPPV1_Format:Wt,RGB_PVRTC_4BPPV1_Format:jt,RGB_S3TC_DXT1_Format:zt,RGFormat:Ot,RGIntegerFormat:Nt,RawShaderMaterial:nc,Ray:Bi,Raycaster:gd,RectAreaLight:yh,RedFormat:Rt,RedIntegerFormat:Ft,ReinhardToneMapping:2,RepeatWrapping:ot,ReplaceStencilOp:7681,ReverseSubtractEquation:Te,RingBufferGeometry:Ou,RingGeometry:Nu,SRGB8_ALPHA8_ASTC_10x10_Format:Bn,SRGB8_ALPHA8_ASTC_10x5_Format:xn,SRGB8_ALPHA8_ASTC_10x6_Format:En,SRGB8_ALPHA8_ASTC_10x8_Format:Cn,SRGB8_ALPHA8_ASTC_12x10_Format:_n,SRGB8_ALPHA8_ASTC_12x12_Format:Mn,SRGB8_ALPHA8_ASTC_4x4_Format:fn,SRGB8_ALPHA8_ASTC_5x4_Format:mn,SRGB8_ALPHA8_ASTC_5x5_Format:vn,SRGB8_ALPHA8_ASTC_6x5_Format:gn,SRGB8_ALPHA8_ASTC_6x6_Format:An,SRGB8_ALPHA8_ASTC_8x5_Format:yn,SRGB8_ALPHA8_ASTC_8x6_Format:wn,SRGB8_ALPHA8_ASTC_8x8_Format:bn,Scene:Ps,SceneUtils:Tp,ShaderChunk:_a,ShaderLib:Ma,ShaderMaterial:pa,ShadowMaterial:tc,Shape:sh,ShapeBufferGeometry:Gu,ShapeGeometry:Uu,ShapePath:kh,ShapeUtils:bu,ShortType:gt,Skeleton:cl,SkeletonHelper:Id,SkinnedMesh:ol,SmoothShading:2,Sphere:gi,SphereBufferGeometry:zu,SphereGeometry:Hu,Spherical:t,SphericalHarmonics3:wh,Spline:Mp,SplineCurve:ih,SplineCurve3:_p,SpotLight:dh,SpotLightHelper:ad,Sprite:Ys,SpriteMaterial:Os,SrcAlphaFactor:Oe,SrcAlphaSaturateFactor:Qe,SrcColorFactor:ke,StaticCopyUsage:35046,StaticDrawUsage:Nn,StaticReadUsage:35045,StereoCamera:Hh,StreamCopyUsage:35042,StreamDrawUsage:35040,StreamReadUsage:35041,StringKeyframeTrack:Ec,SubtractEquation:Ce,SubtractiveBlending:we,TOUCH:{ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},TangentSpaceNormalMap:Fn,TetrahedronBufferGeometry:Qu,TetrahedronGeometry:Vu,TextBufferGeometry:ju,TextGeometry:Wu,Texture:Xn,TextureLoader:Nc,TorusBufferGeometry:Ju,TorusGeometry:qu,TorusKnotBufferGeometry:Xu,TorusKnotGeometry:Yu,Triangle:cr,TriangleFanDrawMode:2,TriangleStripDrawMode:1,TrianglesDrawMode:0,TubeBufferGeometry:Ku,TubeGeometry:Zu,UVMapping:300,Uint16Attribute:function(e,t){return console.warn("THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead."),new _r(e,t)},Uint16BufferAttribute:_r,Uint32Attribute:function(e,t){return console.warn("THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead."),new Tr(e,t)},Uint32BufferAttribute:Tr,Uint8Attribute:function(e,t){return console.warn("THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead."),new Er(e,t)},Uint8BufferAttribute:Er,Uint8ClampedAttribute:function(e,t){return console.warn("THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead."),new Cr(e,t)},Uint8ClampedBufferAttribute:Cr,Uniform:od,UniformsLib:D,UniformsUtils:ca,UnsignedByteType:mt,UnsignedInt248Type:_t,UnsignedIntType:wt,UnsignedShort4444Type:Et,UnsignedShort5551Type:Ct,UnsignedShort565Type:Bt,UnsignedShortType:At,VSMShadowMap:pe,Vector2:Le,Vector3:Re,Vector4:Kn,VectorKeyframeTrack:Cc,Vertex:function(e,t,n){return console.warn("THREE.Vertex has been removed. Use THREE.Vector3 instead."),new Re(e,t,n)},VertexColors:2,VideoTexture:Ll,WebGL1Renderer:Ss,WebGLCubeRenderTarget:Aa,WebGLMultisampleRenderTarget:$n,WebGLRenderTarget:Zn,WebGLRenderTargetCube:function(e,t,n){return console.warn("THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options )."),new Aa(e,n)},WebGLRenderer:Ts,WebGLUtils:xs,WireframeGeometry:$u,WireframeHelper:function(e,t){return console.warn("THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead."),new Bl(new $u(e.geometry),new vl({color:void 0!==t?t:16777215}))},WrapAroundEnding:Pn,XHRLoader:function(e){return console.warn("THREE.XHRLoader has been renamed to THREE.FileLoader."),new Pc(e)},ZeroCurvatureEnding:In,ZeroFactor:De,ZeroSlopeEnding:Dn,ZeroStencilOp:0,sRGBEncoding:Ln}),Ip=[],Dp=[],Pp=[],kp=.1,Lp=function(t,e){var n;return"string"==typeof t||"number"==typeof t?n=Ip.find(function(e){return e.ids.includes(t)}):(n=Ip.find(function(e){return ee.closeTo(e.x,t.x,kp)&&ee.closeTo(e.y,t.y,kp)}))?n.addPoint(t.id):n=new Rp(t.x,t.y,{record:!0,id:t.id},e),n||console.log("no point!"),n},Rp=function(){y(r,Le);var i=C(r);function r(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};return te(this,r),e=i.call(this,e,t),n.record&&(e.id=n.id,null==e.id&&(e.id="add_"+Ip.length),e.ids=[e.id],Ip.push(G(e))),e.type=n.type||"",e.lines=[],e}return A(r,[{key:"addPoint",value:function(e){this.ids.push(e)}},{key:"searchLineByFactor",value:function(i,r,t){var a,o=this,e=this.lines.filter(function(e){return e.searchTime<2});if(0!=e.length)return 1==e.length||1==(e=e.filter(function(e){return e!=t})).length?e[0]:(e.forEach(function(e){var t=e.getVector(),n=(e.points[1]==o&&t.negate(),ee.getVec2Angle(i,t));new Re(i.x,i.y,0).cross(new Re(t.x,t.y,0)).z<0&&(n*=-1),(!a||"min"==r&&n<a.factor||"max"==r&&n>a.factor)&&(a={line:e,factor:n})}),a.line)}}]),r}(),Fp=0,Op=function(){function a(t){var n=this;if(te(this,a),t.points[0]!=t.points[1]){if(this.points=t.points,this.type=t.type||"line","line"==this.type){var e=Dp.find(function(e){return e.points.includes(t.points[0])&&e.points.includes(t.points[1])});if(e)return null!=t.id&&e.ids.push(t.id),e;this.id=null==t.id?"line"+Fp++:t.id,this.ids=[this.id],t.dontWriteToPoint||this.points.forEach(function(e){e.lines.push(n)}),t.isChild||Dp.push(this),this.searchTime=0}this.children=[],this.parents=[],this.match=[]}}return A(a,[{key:"getAngleInfo",value:function(){t=this.points,(e={}).angle=t[1].clone().sub(t[0]).angle(),ee.closeTo(e.angle,2*Math.PI)?e.angle-=2*Math.PI:(e.angle>Math.PI||ee.closeTo(e.angle,Math.PI))&&(e.angle-=Math.PI,e.reverse=!0);var e,t=e;this.angle=t.angle,this.reverse=t.reverse}},{key:"getIntersectWithLine",value:function(e,t){var n=this,i=e.points.find(function(e){return n.points.includes(e)});return i?{point:i,type:"joint"}:(i=ee.isLineIntersect(e.points,this.points,!1,t))?{point:i,type:"intersect"}:void 0}},{key:"writeToPoint",value:function(){var t=this;this.points.forEach(function(e){e.lines.includes(t)||e.lines.push(t)})}},{key:"checkIfParent",value:function(t){return this==t||this.parents.find(function(e){return e.checkIfParent(t)})}},{key:"splitByPoint",value:function(e){var t,n=this,i=new a({points:[e,this.points[0]],dontWriteToPoint:!0,hasntsure:!0}),e=new a({points:[e,this.points[1]],dontWriteToPoint:!0,hasntsure:!0});if(i.points&&e.points){if(!(this.checkIfParent(i)||this.checkIfParent(e)||i.checkIfParent(this)||e.checkIfParent(this)))return(t=function(e){n.children.push(e),e.parents.push(n),Dp.includes(e)||Dp.push(e),e.writeToPoint()})(i),t(e),-1<(t=this.points[0].lines.indexOf(this))&&this.points[0].lines.splice(t,1),-1<(t=this.points[1].lines.indexOf(this))&&this.points[1].lines.splice(t,1),[i,e];console.warn("splitByPoint 发现parent和children一样")}else console.warn("splitByPoint 线有点相同")}},{key:"splitByPoints",value:function(n){var i=this,r=((n=n.map(function(e){return{dis:e.distanceTo(i.points[0]),point:e}})).sort(function(e,t){return e.dis-t.dis}),[]),e=(n.forEach(function(e,t){e=new a({points:[e.point,0==t?i.points[0]:n[t-1].point],group:i.group,dontWriteToPoint:!0,hasntsure:!0});r.push(e)}),new a({points:[n[n.length-1].point,this.points[1]],group:this.group,dontWriteToPoint:!0,hasntsure:!0}));r.push(e),r.find(function(e){return!e.points||i.checkIfParent(e)||e.checkIfParent(i)})?console.error("splitByPoints return"):(r.forEach(function(e){i.children.push(e),e.parents.push(i),Dp.includes(e)||Dp.push(e),e.writeToPoint(),e.writeToPoint()}),-1<(e=this.points[0].lines.indexOf(this))&&this.points[0].lines.splice(e,1),-1<(e=this.points[1].lines.indexOf(this))&&this.points[1].lines.splice(e,1))}},{key:"getAllSlices",value:function(){var n=[];return function e(t){0==t.children.length?n.push(t):t.children.forEach(e)}(this),n}},{key:"getVector",value:function(){return this.points[1].clone().sub(this.points[0])}},{key:"getLength",value:function(){return this.points[0].distanceTo(this.points[1])}},{key:"getCenter",value:function(){return this.points[1].clone().add(this.points[0]).multiplyScalar(.5)}}]),a}(),Np=function(t,n){var e=t.filter(function(e){return!n.includes(e)}),i=n.filter(function(e){return!t.includes(e)});return e.concat(i)};function Gp(t,n){return Dp.find(function(e){return e.points.includes(t)&&e.points.includes(n)})}function Up(e,t){if(e instanceof Hp&&(e=e.points),t instanceof Hp&&(t=t.points),e.length!=t.length)return!1;if(e.lines&&t.lines){if(0==Np(e.lines,t.lines).length)return!0}else if(Qp(e,t))return!0}var zp=0,Hp=A(function e(t){te(this,e),this.id=zp++,this.type=t.type||"normal",this.points=t.points,this.lines=t.lines,Pp.push(this),this.child=[],this.parent=[],this.smallNeibours=[];t=ee.getArea(this.points);this.area=Math.abs(t),this.isClockwise=t<0}),Qp=function(e,t){for(var n,i,r=[],a=0,o=e.length;a<o;a++)-1<t.indexOf(e[a])&&r.push(e[a]);for(var s=0,l=t.length;s<l;s++){var u=r.indexOf(t[s]);if(-1==u)return!1;if(0==s)i=u;else if(1==s){if((n=u-i)==l-1?n=-1:n==1-l&&(n=1),-1!=n&&1!=n)return!1}else if(u!=(i+n*s+l)%l)return!1}return{sameAxis:0<n}},Vp=function e(t,n,i){if(0==n.children.length){if(ee.ifPointAtLineBound(t,n.points,i))return n}else for(var r=0;r<n.children.length;r++){var a=e(t,n.children[r],i);if(a)return a}};function jp(){var e,g=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(Ip=[],Dp=[],Pp=[],Fp=zp=0,g.points=g.points||[],g.lines=g.lines||[],(e=g).points.forEach(function(e){Zp.expandByPoint(new Le(e.x,e.y))}),kp=null!=e.precision?e.precision:(f=Zp.getSize(new Le),Be.clamp(Math.max(f.x,f.y)/70,.2,2)),e.points.forEach(function(e){return Lp(e)}),e.lines.forEach(function(e){new Op({points:[Lp(e.p1),Lp(e.p2)],id:e.id})}),!g.dontSliceLines)for(var t=Dp.length,n=function n(e,t){if(e!=t){null==e.angle&&e.getAngleInfo(),null==t.angle&&t.getAngleInfo();var i,r=e.getIntersectWithLine(t,kp);if(r)"intersect"==r.type?(i=Lp(r.point,"whenGetSliceLines"),a=Vp(i,e),o=Vp(i,t),a=(a=a||Vp(i,e,kp))||Vp(i,e,2*kp),o=(o=o||Vp(i,t,kp))||Vp(i,t,2*kp),a&&o?a.points.find(function(e){return e==i})&&o.points.find(function(e){return e==i})||(a.points.find(function(e){return e==i})?o:o.points.find(function(e){return e==i})?a:(a.splitByPoint(i),o)).splitByPoint(i):(console.warn("atWhichChildLine仍旧找不到 :"+e.id+","+t.id+", pointId: "+i.id),a||console.warn("找不到line1"),o||console.warn("找不到line2"))):(i=r.point,ee.closeTo(e.angle,t.angle)&&(s=e.getAllSlices(),l=t.getAllSlices(),1<s.length||1<l.length?s.forEach(function(t){l.forEach(function(e){n(t,e)})}):(a=e.points.find(function(e){return e!=i}),o=t.points.find(function(e){return e!=i}),ee.ifPointAtLineBound(a,t.points)?t.splitByPoint(a):ee.ifPointAtLineBound(o,e.points)&&e.splitByPoint(o))));else if(ee.closeTo(e.angle,t.angle)){var r=e.getVector(),a=e.points[0].clone().sub(t.points[0]),o=ee.getVec2Cos(r,a);if(ee.closeTo(o,-1,1e-4)||ee.closeTo(o,1,1e-4)){var s=e.getAllSlices(),l=t.getAllSlices();if(1<s.length||1<l.length)s.forEach(function(t){l.forEach(function(e){n(t,e)})});else{r=e.points[0],a=e.reverse==t.reverse?t.points[0]:t.points[1],o=e.points[1],s=e.reverse==t.reverse?t.points[1]:t.points[0],a=a.clone().sub(o),s=s.clone().sub(r);if(a.length()<s.length()){var u=r.clone().sub(o);if(1.57<=ee.getVec2Angle(a,u))return}else{a=o.clone().sub(r);if(1.57<=ee.getVec2Angle(s,a))return}u=function(e,t){var n=ee.ifPointAtLineBound(e.points[0],t.points),i=ee.ifPointAtLineBound(e.points[1],t.points);return n&&i?(t.splitByPoints(e.points),!0):n||i?(i=n?e.points[0]:e.points[1],n=n?e.points[1]:e.points[0],n=t.points[0].distanceTo(n)<t.points[1].distanceTo(n)?t.points[0]:t.points[1],e.splitByPoint(n),t.splitByPoint(i),!0):void 0};u(e,t)||u(t,e)}}}}},i=0;i<t;i++)for(var r=Dp[i],a=i+1;a<t;a++)n(r,Dp[a]);for(var o=function e(t,n,i,r){if(u=i.includes("big")?n?(u=n.points[n.points.length-1],a=t.clone().sub(u),t.searchLineByFactor(a,"min",Gp(t,u))):(a=i.includes("Left")?new Le(1,0):new Le(-1,0),t.searchLineByFactor(a,"min")):n?(u=n.points[n.points.length-1],a=t.clone().sub(u),t.searchLineByFactor(a,"max",Gp(t,u))):(a=new Le(1,0),t.searchLineByFactor(a,"min"))){u.searchTime++,r.includes(u)||r.push(u);var a=u.points.find(function(e){return t!=e}),o=n?n.points.concat([t]):[t],n=n?n.lines.concat([u]):[u];if(a!=o[0])return e(a,{lines:n,points:o},i,r);var s=o,l=n,u=i;if(!g.onlyGetOutRing||"small"!=u){if("small"!=u&&!g.onlyGetOutRing)return s;for(var c=[];s.length;){for(var h=[],d=!1,p=0;p<s.length;p++){if(h.includes(s[p])){var f=h.indexOf(s[p]),m=s.slice(f,p),v=l.slice(f,p);s.splice(f,p-f),l.splice(f,p-f),2<m.length&&(Pp.find(function(e){return Up(m,e)})||c.push(new Hp({points:m,lines:v}))),d=!0;break}h.push(s[p]),d=!1}if(!d){2<s.length&&(Pp.find(function(e){return Up(s,e)})||c.push(new Hp({points:s,lines:l})));break}}"small"!=u&&c.forEach(function(e){return e.isOutRing=!0})}}};;){var s=[],l=null;if(Ip.forEach(function(e){e.lines.find(function(e){return e.searchTime<2})&&(!l||e.x<l.x)&&(l=e)}),!l)break;o(l,null,"bigLeft",s);for(s=s.filter(function(e){return e.searchTime<2});0<s.length;)if("break"===function(){var t=[];if(s.forEach(function(e){return e.points.forEach(function(e){t.includes(e)||t.push(e)})}),l=null,t.forEach(function(e){e.lines.find(function(e){return e.searchTime<2})&&(!l||e.x<l.x)&&(l=e)}),!l)return"break";o(l,null,"small",s),s=s.filter(function(e){return e.searchTime<2})}())break}for(var u=Pp.length,c=0;c<u;c++)for(var h=Pp[c],d=c+1;d<u;d++){var p=Pp[d];(function(e,t){return e.filter(function(e){return t.includes(e)})})(h.lines,p.lines).length&&(h.smallNeibours.push(p),p.smallNeibours.push(h))}Pp.forEach(function(e){for(var t=0;t<u;t++){var n=Pp[t];if(e!=n&&!e.smallNeibours.includes(n)){for(var i=void 0,r=0;r<e.points.length&&(i=ee.isPointInArea(n.points,null,e.points[r]))&&i.atLine;r++);if(i){if(i.atLine){var a=ee.getCenterOfGravityPoint(e.points);if(!ee.isPointInArea(n.points,null,a))continue}n.child.push(e),e.parent.push(n)}}}});var f=Pp.filter(function(e){return!e.isClockwise});return 0<f.length&&f.forEach(function(n){var e,i;0<n.smallNeibours.length&&Np(n.lines,(e=n.smallNeibours.concat(n.child).map(function(e){return e.lines}),i=[],e.forEach(function(e){e.forEach(function(e){var t=i.indexOf(e);-1<t?i.splice(t,1):i.push(e)})}),i)).every(function(t){return n.child.find(function(e){return e.lines.includes(t)})})&&(console.log("%c删除非最小环 ring"+n.id,"color:#00f"),console.log(n),Pp.splice(Pp.indexOf(n),1),n.child.forEach(function(e){var t=e.parent.indexOf(n);-1<t&&e.parent.splice(t,1)}),n.parent.forEach(function(e){var t=e.child.indexOf(n);-1<t&&e.child.splice(t,1)}),n.smallNeibours.forEach(function(e){var t=e.smallNeibours.indexOf(n);-1<t&&e.smallNeibours.splice(t,1)}))}),Pp.forEach(function(t){t.parent.length&&(t.closetParent=t.parent.find(function(e){return e.parent.length==t.parent.length-1}),t.closetParent.closetChilds||(t.closetParent.closetChilds=[]),t.closetParent.closetChilds.push(t))}),Pp.map(function(e){return{id:e.id,points:e.points.map(function(e){return{id:e.ids[0],x:e.x,y:e.y}}),area:e.area,closetParent:e.closetParent&&e.closetParent.id,closetChilds:e.closetChilds&&e.closetChilds.map(function(e){return e.id})}})}var Wp,Jp,qp,Xp,Yp,Kp,Zp=new bd,ee={getBaseLog:function(e,t){return Math.log(t)/Math.log(e)},convertVector:{ZupToYup:function(e){return new Re(e.x,e.z,-e.y)},YupToZup:function(e){return new Re(e.x,-e.z,e.y)}},convertQuaternion:{ZupToYup:function(e){var t=new ki(-Math.PI/2,0,0),t=(new X).setFromEuler(t);return e.clone().premultiply(t)},YupToZup:function(e){var t=new ki(Math.PI/2,0,0),t=(new X).setFromEuler(t);return e.clone().premultiply(t)}},convertVisionQuaternion:function(e){return new X(e.x,e.z,-e.y,e.w).multiply((new X).setFromAxisAngle(new Re(0,1,0),Be.degToRad(90)))},invertVisionQuaternion:function(e){e=e.clone().multiply((new X).setFromAxisAngle(new Re(0,1,0),Be.degToRad(-90)));return new X(e.x,-e.z,e.y,e.w)},getVec2Angle:function(e,t){return Math.acos(Be.clamp(this.getVec2Cos(e,t),-1,1))},getVec2Cos:function(e,t){return e.dot(t)/e.length()/t.length()},getAngle:function(e,t,n){var i=e.angleTo(t),e=e.clone().cross(t);return"string"==typeof n?e[n]<0&&(i*=-1):e.dot(n)<0&&(i*=-1),i},closeTo:function(t,n){function i(e,t){return Math.abs(e-t)<r}var e,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1e-6;return"number"==typeof t?i(t,n):(e=function(e){return null==t[e]||i(t[e],n[e])})("x")&&e("y")&&e("z")&&e("w")},toPrecision:function(e,t){function n(e,t){return t=Math.pow(10,t),Math.round(e*t)/t}if(e instanceof Array){for(var i=0;i<e.length;i++)e[i]=n(e[i],t);return e}if(e instanceof Object){for(var i in e)e[i]=n(e[i],t);return e}return n(e,t)},isEmptyQuaternion:function(e){return 0===Math.abs(e.x)&&0===Math.abs(e.y)&&0===Math.abs(e.z)&&0===Math.abs(e.w)},projectPositionToCanvas:function(e,t,n){(n=n||new Re).copy(e);var e=.5*$("#player").width(),i=.5*$("#player").height();return n.project(t),n.x=n.x*e+e,n.y=-n.y*i+i,n},handelPadResize:!1,getOffset:function(e,t,n){var i="left"==e?t.offsetLeft:t.offsetTop;for(n=n||$("body")[0];(t=t.offsetParent)&&t!=n;)i+="left"==e?t.offsetLeft:t.offsetTop;return i},constrainedTurn:function(e){e%=2*Math.PI;return e>Math.PI?e-2*Math.PI:e<-Math.PI?e+2*Math.PI:e},getFOVDotThreshold:function(e){return Math.cos(Be.degToRad(e/2))},transform2DForwardVectorByCubeFace:function(e,t,n,i){switch(e){case GLCubeFaces.GL_TEXTURE_CUBE_MAP_POSITIVE_X:n.set(1,t.y,t.x);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:n.set(-1,t.y,-t.x);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:n.set(-t.x,1,-t.y);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:n.set(-t.x,-1,t.y);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:n.set(-t.x,t.y,1);break;case GLCubeFaces.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:n.set(t.x,t.y,-1)}i&&n.normalize()},getFootPoint:function(e,t,n,i){var r,a;return t.equals(n)?t.clone():(e=e.clone().sub(t),r=(a=t.clone().sub(n)).length(),e=e.dot(a)/r,a=t.clone().add(a.multiplyScalar(e/r)),i&&0<a.clone().sub(t).dot(a.clone().sub(n))?(a.distanceTo(t)<a.distanceTo(n)?t:n).clone():a)},getCenterOfGravityPoint:function(e){for(var t=0,n=0,i=0,r=1;r<=e.length;r++){var a=e[r%e.length].x,o=e[r%e.length].y,s=e[r-1].x,l=e[r-1].y,u=(a*l-o*s)/2;t+=u,n+=u*(a+s)/3,i+=u*(o+l)/3}return{x:n/=t,y:i/=t}},getBound:function(e){for(var t=new bd,n=0,i=e.length;n<i;n++)t.expandByPoint(e[n]);return t},isPointInArea:function(e,t,n,i){var r=this,a=this.getBound(e);if(n.x<a.min.x||n.x>a.max.x||n.y<a.min.y||n.y>a.max.y)return!1;for(var o=!1,s=n.x,l=n.y,u=0,c=e.length-1;u<e.length;c=u++){var h=e[u].x,d=e[u].y,p=e[c].x,f=e[c].y;if((h-s)*(f-l)==(h-s)*(d-l)&&s>=Math.min(h,p)&&s<=Math.max(h,p)&&l>=Math.min(d,f)&&l<=Math.max(d,f))return{atLine:!0};l<d!=l<f&&s<(p-h)*(l-d)/(f-d)+h&&(o=!o)}return o&&t?!t.some(function(e){return r.isPointInArea(e,null,n,i)}):o},getArea:function(e){for(var t=e.length,n=0,i=t-1,r=0;r<t;i=r++)n+=e[i].x*e[r].y-e[r].x*e[i].y;return-.5*n},isInBetween:function(e,t,n,i){return e<=t&&t<=n||n<=t&&t<=e||this.closeTo(e,t,i)||this.closeTo(t,n,i)},ifPointAtLineBound:function(e,t,n){return ee.isInBetween(t[0].x,e.x,t[1].x,n)&&ee.isInBetween(t[0].y,e.y,t[1].y,n)},isLineIntersect:function(e,t,n,i){var r=e[1].y-e[0].y,a=e[0].x-e[1].x,o=r*e[0].x+a*e[0].y,s=t[1].y-t[0].y,l=t[0].x-t[1].x,u=s*t[0].x+l*t[0].y,c=r*l-s*a;return 0!=c&&(l=(l*o-a*u)/c,a=(r*u-s*o)/c,n||ee.ifPointAtLineBound({x:l,y:a},e,i)&&ee.ifPointAtLineBound({x:l,y:a},t,i)?{x:l,y:a}:void 0)},getNormal2d:function(){var e,t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=n.vec?(r=n.vec.x,n.vec.y):(r=n.p1.x-n.p2.x,n.p1.y-n.p2.y);if(0!=n)t=-r*(e=1)/n;else{if(0==r)return console.log("两个点一样"),null;e=-n*(t=1)/r}var i=new Re(e,0,t),r=new Re(r,0,n);return 0<i.cross(r).y&&(e*=-1,t*=-1),new Le(e,t).normalize()},getQuaBetween2Vector:function(e,t,n){var i=e.angleTo(t),e=e.clone().cross(t).normalize();return 0==e.length()?(new X).setFromAxisAngle(n,i):(new X).setFromAxisAngle(e,i)},getQuaByAim:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re,n=new Re(0,1,0);return(new X).setFromUnitVectors(n,e.clone().sub(t).normalize())},getAimByQua:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Re;return new Re(0,0,-1).applyQuaternion(e).add(t)},getScaleForConstantSize:(Jp=new Re,qp=new Re,Xp=new Re,Yp=new Re,Kp=new Re,function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return Wp=t.width2d||(e="OrthographicCamera"==t.camera.type?200/t.camera.zoom:t.position.distanceTo(t.camera.position),t.maxSize-(t.maxSize-t.minSize)*Be.smoothstep(e,t.nearBound,t.farBound)),Jp.copy(t.position).project(t.camera),qp.set(t.resolution.x/2,t.resolution.y/2,1).multiply(Jp),Xp.set(Wp/2,0,0).add(qp),Yp.set(2/t.resolution.x,2/t.resolution.y,1).multiply(Xp),Kp.copy(Yp).unproject(t.camera),Kp.distanceTo(t.position)}),getCrossPointAtRect:function(e,t,n,i,r,a){var o=(t.x-e.x)/(t.y-e.y),t=t.x>=e.x?n+r:r,n=t;return((r=1/o*(n-e.x)+e.y)<a||a+i<r)&&(n=o*((r=r<a?a:a+i)-e.y)+e.x),new Le(n,r)},getDirFromUV:function(e){var t=Math.cos(e.y*Math.PI),e=2*Math.PI*e.x-Math.PI,n=(Math.PI,-Math.PI/2<=e&&e<Math.PI/2?1:-1),e=Math.tan(e),i=Math.sqrt((1-t*t)/(1+e*e)),e=e*i;return i*n<0&&(i*=-1,e*=-1),this.convertVector.YupToZup(new Re(e*=-1,t,i))},getUVfromDir:function(e){(e=this.convertVector.ZupToYup(e)).x*=-1;var t=Math.atan2(e.x,e.z)/(2*Math.PI)+.5,e=Math.acos(e.y)/Math.PI;return new Le(t,e)},getDirByLonLat:function(e,t){var n=new Re,t=Be.degToRad(90-t),e=Be.degToRad(e);return n.x=Math.sin(t)*Math.cos(e),n.y=Math.cos(t),n.z=Math.sin(t)*Math.sin(e),n},projectPointAtPlane:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return(e=new $i).setFromCoplanarPoints.apply(e,J(t.facePoints)).projectPoint(t.point,new Re)},getPolygonsMixedRings:function(e,t){var n=[],r=[],a=0;return e.forEach(function(e){return n.push.apply(n,J(e.map(function(e){return(new Le).copy(e)})))}),e.forEach(function(e,t){for(var n=e.length,i=0;i<n;)r.push({p1:i+a,p2:(i+1)%n+a}),i++;a+=n}),n.forEach(function(e,t){e.id=t}),jp({points:n,lines:r,onlyGetOutRing:t}).filter(function(e){return null==e.closetParent})},getQuaFromPosAim:function(e,t){e=(new _e).lookAt(e,t,new Re(0,0,1));return(new X).setFromRotationMatrix(e)},getBoundByPoints:function(e,t){var n=new Y,e=(e.forEach(function(e){n.expandByPoint(e)}),n.getCenter(new Re));return t&&(t=(new Y).setFromCenterAndSize(e,t),n.union(t)),{bounding:n,size:n.getSize(new Re),center:e}}};function $p(e,t){e=(e=window.navigator.userAgent.match(e))?e[1].split(t):[];return{major:parseInt(e[0])||0,minor:parseInt(e[1])||0,patch:parseInt(e[2])||0}}Potree.math=ee;var ef,tf,nf,rf,af,of,sf={isFullscreen:function(){return document.fullscreenElement||document.mozFullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},supportsFullscreen:function(){return document.fullscreenEnabled||document.mozFullscreenEnabled||document.mozFullScreenEnabled||document.webkitFullscreenEnabled||document.msFullscreenEnabled},isPointerLocked:function(){return document.pointerLockElement||document.mozPointerLockElement||document.webkitPointerLockElement},requestFullscreen:function(e,t){e.requestFullscreen?e.requestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT):e.msRequestFullscreen&&e.msRequestFullscreen(),t&&$(document).on("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange",sf.requestPointerLock)},requestPointerLock:function(){var e;if(document.fullscreenElement)e=document.fullscreenElement();else if(document.mozFullscreenElement)e=document.mozFullscreenElement();else if(document.mozFullScreenElement)e=document.mozFullScreenElement();else{if(!document.webkitFullscreenElement)return;e=document.webkitFullscreenElement()}e.requestPointerLock=e.requestPointerLock||e.mozRequestPointerLock||e.webkitRequestPointerLock,e.requestPointerLock(),$(document).off("fullscreenchange webkitfullscreenchange mozfullscreenchange MSFullscreenChange",this)},exitPointerLock:function(){document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock,document.exitPointerLock()},exitFullscreen:function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},details:function(){var e=navigator.userAgent.match("(Firefox|Chrome|Safari)/([\\d]+)");return e?{name:e[1],version:parseInt(e[2]),platform:navigator.platform}:{}},is:function(e){return this.details()&&this.details().name===e},inIframe:function(){return window.parent!==window},aspectRatio:function(e){e=(e=e||$("#player")).width()/e.height();return isFinite(e)?e:0},userAgent:function(){return window.navigator.userAgent},isMobile:function(){var e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|android|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))},isLandscape:function(){return this.isMobile&&1<this.aspectRatio()},isSmallScreen:function(){return screen.width/window.devicePixelRatio<240},detectIE:function(){return-1!==window.navigator.userAgent.indexOf("MSIE ")||!!navigator.userAgent.match(/Trident.*rv\:11\./)},detectSafari:function(){return-1!==window.navigator.userAgent.indexOf("Safari")&&!this.detectOpera()&&!this.detectChrome()},detectFirefox:function(){return-1!==window.navigator.userAgent.indexOf("Firefox")},detectChrome:function(){return-1!==window.navigator.userAgent.indexOf("Chrome")&&!this.detectOpera()},detectOpera:function(){return-1!==window.navigator.userAgent.indexOf("OPR")},detectIOS:function(){return this.detectIPhone()||this.detectIPad()||this.detectIPod()},detectIPad:function(){var e=window.navigator.userAgent;return/iPad/.test(e)},detectIPod:function(){var e=window.navigator.userAgent;return/iPod/.test(e)},detectIPhone:function(){var e=window.navigator.userAgent;return/iPhone/.test(e)},detectAndroid:function(){return-1!==window.navigator.userAgent.indexOf("Android")},detectAndroidMobile:function(){var e=window.navigator.userAgent;return this.detectAndroid()&&-1!==e.indexOf("Mobile")},detectSamsungNative:function(){var e=window.navigator.userAgent;return-1!==e.indexOf("SM-G900H")||-1!==e.indexOf("GT-I9500")||-1!==e.indexOf("SM-N900")},detectSamsungS6:function(){return-1!==window.navigator.userAgent.indexOf("SM-G92")},detectHUAWEI5X:function(){return-1!==window.navigator.userAgent.indexOf("KIW-TL00H")},detectWebVR:function(){return!(!window.navigator.getVRDisplays||!window.VRDisplay)},getVRDisplay:function(){var t=$.Deferred();return this.detectWebVR()?(navigator.getVRDisplays().then(function(e){1<=e.length&&t.resolve(e[0]),t.reject(null)}),t):t.reject(null)},iosVersion:function(){if(this.detectIOS())return $p(/((?:\d+\_?){1,3}) like Mac OS/,"_");throw new DeviceMismatchException("Did not detect an iDevice")},androidVersion:function(){if(this.detectAndroid())return $p(/Android ((?:\d+\.?){1,3})/,".");throw new DeviceMismatchException("Did not detect an Android based device")},valueFromCookie:function(e,t){var e=new RegExp(e+"=([0-9a-f]+)(; ?|$)").exec(document.cookie);return e?(e=e[1],"boolean"==typeof t?"true"===e||"1"===e:"number"==typeof t?parseFloat(e):e):t},valueFromHash:function(e,t){var e=new RegExp("[#&?]"+e+"=([^#&?]*)").exec(window.location.href);return e?(e=e[1],"boolean"==typeof t?"true"===e||"1"===e:"number"==typeof t?parseFloat(e):window.decodeURIComponent(e)):t},getProjectNum:function(){var e;return window.__ProjectNum&&"__ProjectNum__"!=window.__ProjectNum?window.__ProjectNum:-1!=(e=-1!=(e=window.location.href.substring(window.location.href.indexOf("=")+1)).indexOf("&")?e.substring(0,e.indexOf("&")):e).indexOf("#")?e.substring(0,e.indexOf("#")):e},urlHasValue:function(e,t){if("m"===e&&window.__ProjectNum&&"__ProjectNum__"!=window.__ProjectNum)return window.__ProjectNum;var n=window.location.search.substr(1).split("&");if(t){for(var i=0;i<n.length;i++){var r=n[i].split("=");if(2===r.length&&r[0]===e)return r[1]}return""}for(var a=0;a<n.length;a++)if(n[a].split("=")[0]==e)return!0;return!1},urlQueryValue:function(e){return this.urlHasValue(e,!0)||""},urlHashValue:function(e){for(var t=window.location.hash.substr(1).replace("/?","").split("&"),n=0;n<t.length;n++){var i=t[n].split("=");if(2===i.length&&i[0]===e)return i[1]}return""},urlIsHasHash:function(e){return window.location.hash.substr(1).replace("/?","").split("&").includes(e)},islongPhone:function(){var e=screen.height/screen.width;return this.isMobile()&&(1.99<e||e<.502512)},detectWeixin:function(){return"micromessenger"==window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i)},detectWeixinMiniProgram:function(){return window.navigator.userAgent.match("miniProgram")},detectEdge:function(){return-1<window.navigator.userAgent.indexOf("Edge")},detectApp:function(){return this.urlHasValue("app")},isTabHidden:function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return document.hidden;for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return document[e[t]+"Hidden"];return!1}},b=(Ts.prototype.paramThreeToGL=function(e){var t,n=this.extensions,i=this.getContext();if(e===ot)return i.REPEAT;if(e===st)return i.CLAMP_TO_EDGE;if(e===lt)return i.MIRRORED_REPEAT;if(e===ut)return i.NEAREST;if(1004===e)return i.NEAREST_MIPMAP_NEAREST;if(1005===e)return i.NEAREST_MIPMAP_LINEAR;if(e===U)return i.LINEAR;if(1007===e)return i.LINEAR_MIPMAP_NEAREST;if(e===ft)return i.LINEAR_MIPMAP_LINEAR;if(e===mt)return i.UNSIGNED_BYTE;if(e===Et)return i.UNSIGNED_SHORT_4_4_4_4;if(e===Ct)return i.UNSIGNED_SHORT_5_5_5_1;if(e===Bt)return i.UNSIGNED_SHORT_5_6_5;if(e===vt)return i.BYTE;if(e===gt)return i.SHORT;if(e===At)return i.UNSIGNED_SHORT;if(e===yt)return i.INT;if(e===wt)return i.UNSIGNED_INT;if(e===bt)return i.FLOAT;if(null!==(t=n.get("OES_texture_half_float"))&&e===xt)return t.HALF_FLOAT_OES;if(e===Mt)return i.ALPHA;if(e===Tt)return i.RGB;if(e===St)return i.RGBA;if(e===It)return i.LUMINANCE;if(e===Dt)return i.LUMINANCE_ALPHA;if(e===Ee)return i.FUNC_ADD;if(e===Ce)return i.FUNC_SUBTRACT;if(e===Te)return i.FUNC_REVERSE_SUBTRACT;if(e===De)return i.ZERO;if(e===Pe)return i.ONE;if(e===ke)return i.SRC_COLOR;if(e===Fe)return i.ONE_MINUS_SRC_COLOR;if(e===Oe)return i.SRC_ALPHA;if(e===Ne)return i.ONE_MINUS_SRC_ALPHA;if(e===Ge)return i.DST_ALPHA;if(e===Ue)return i.ONE_MINUS_DST_ALPHA;if(e===ze)return i.DST_COLOR;if(e===He)return i.ONE_MINUS_DST_COLOR;if(e===Qe)return i.SRC_ALPHA_SATURATE;if(null!==(t=n.get("WEBGL_compressed_texture_s3tc"))){if(e===zt)return t.COMPRESSED_RGB_S3TC_DXT1_EXT;if(e===Ht)return t.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(e===Qt)return t.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(e===Vt)return t.COMPRESSED_RGBA_S3TC_DXT5_EXT}if(null!==(t=n.get("WEBGL_compressed_texture_pvrtc"))){if(e===jt)return t.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(e===Wt)return t.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(e===Jt)return t.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(e===qt)return t.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(null!==(t=n.get("WEBGL_compressed_texture_etc1"))&&e===Xt)return t.COMPRESSED_RGB_ETC1_WEBGL;if(null!==(t=n.get("EXT_blend_minmax"))){if(e===Se)return t.MIN_EXT;if(e===Ie)return t.MAX_EXT}return 0},zn.prototype.addEventListener=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=(void 0===this._listeners&&(this._listeners={}),this._listeners);void 0===i[e]&&(i[e]=[]),i[e].some(function(e){return e.listener==t})||(i[e].push({listener:t,importance:n}),i[e]=i[e].sort(function(e,t){return t.importance-e.importance}))},zn.prototype.hasEventListener=function(e,t){var n;return void 0!==this._listeners&&void 0!==(n=this._listeners)[e]&&n[e].some(function(e){return e.listener==t})},zn.prototype.removeEventListener=function(e,t){var n;void 0!==this._listeners&&void 0!==(e=this._listeners[e])&&(n=e.find(function(e){return e.listener==t}))&&e.splice(e.indexOf(n),1)},zn.prototype.removeEventListeners=function(e){this._listeners&&void 0!==this._listeners[e]&&delete this._listeners[e]},zn.prototype.removeAllListeners=function(){this._listeners={}},zn.prototype.dispatchEvent=function(e){if("string"==typeof e&&(e={type:e}),void 0!==this._listeners){var t=this._listeners[e.type];if(void 0!==t){e.target=this;var n,i=q(t.slice(0));try{for(i.s();!(n=i.n()).done;){var r=n.value.listener.call(this,e);if(r&&r.stopContinue)break}}catch(e){i.e(e)}finally{i.f()}}}},zn.prototype.traverse=function(e){var t=e(this);if(!t||!t.stopContinue)for(var n=this.children,i=0,r=n.length;i<r;i++)n[i].traverse(e)},K.prototype.traverse=function(e){var t=e(this);if(!t||!t.stopContinue)for(var n=this.children,i=0,r=n.length;i<r;i++)n[i].traverse(e)},{}),lf=(b.RADIANS_PER_DEGREE=Math.PI/180,b.DEGREES_PER_RADIAN=180/Math.PI,b.Vector3=function(e,t,n){this.x=e||0,this.y=t||0,this.z=n||0},b.Matrix4=function(){this.elements=new Float32Array([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),0<arguments.length&&console.error("MathLight.Matrix4: the constructor no longer reads arguments. use .set() instead.")},b.Matrix4.prototype={identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},copy:function(e){return this.elements.set(e.elements),this},applyToVector3:function(e){var t=e.x,n=e.y,i=e.z,r=this.elements;return e.x=r[0]*t+r[4]*n+r[8]*i+r[12],e.y=r[1]*t+r[5]*n+r[9]*i+r[13],e.z=r[2]*t+r[6]*n+r[10]*i+r[14],this},getInverse:function(e,t){var n=this.elements,e=e.elements,i=e[0],r=e[1],a=e[2],o=e[3],s=e[4],l=e[5],u=e[6],c=e[7],h=e[8],d=e[9],p=e[10],f=e[11],m=e[12],v=e[13],g=e[14],e=e[15],A=d*g*c-v*p*c+v*u*f-l*g*f-d*u*e+l*p*e,y=m*p*c-h*g*c-m*u*f+s*g*f+h*u*e-s*p*e,w=h*v*c-m*d*c+m*l*f-s*v*f-h*l*e+s*d*e,b=m*d*u-h*v*u-m*l*p+s*v*p+h*l*g-s*d*g,x=i*A+r*y+a*w+o*b;if(0==x){var E="MathLight.Matrix4.getInverse(): can't invert matrix, determinant is 0";if(t)throw new Error(E);return console.warn(E),this.identity()}t=1/x;return n[0]=A*t,n[1]=(v*p*o-d*g*o-v*a*f+r*g*f+d*a*e-r*p*e)*t,n[2]=(l*g*o-v*u*o+v*a*c-r*g*c-l*a*e+r*u*e)*t,n[3]=(d*u*o-l*p*o-d*a*c+r*p*c+l*a*f-r*u*f)*t,n[4]=y*t,n[5]=(h*g*o-m*p*o+m*a*f-i*g*f-h*a*e+i*p*e)*t,n[6]=(m*u*o-s*g*o-m*a*c+i*g*c+s*a*e-i*u*e)*t,n[7]=(s*p*o-h*u*o+h*a*c-i*p*c-s*a*f+i*u*f)*t,n[8]=w*t,n[9]=(m*d*o-h*v*o-m*r*f+i*v*f+h*r*e-i*d*e)*t,n[10]=(s*v*o-m*l*o+m*r*c-i*v*c-s*r*e+i*l*e)*t,n[11]=(h*l*o-s*d*o-h*r*c+i*d*c+s*r*f-i*l*f)*t,n[12]=b*t,n[13]=(h*v*a-m*d*a+m*r*p-i*v*p-h*r*g+i*d*g)*t,n[14]=(m*l*a-s*v*a-m*r*u+i*v*u+s*r*g-i*l*g)*t,n[15]=(s*d*a-h*l*a+h*r*u-i*d*u-s*r*p+i*l*p)*t,this},makeRotationFromQuaternion:function(e){var t=this.elements,n=e.x,i=e.y,r=e.z,e=e.w,a=n+n,o=i+i,s=r+r,l=n*a,u=n*o,n=n*s,c=i*o,i=i*s,r=r*s,a=e*a,o=e*o,e=e*s;return t[0]=1-(c+r),t[4]=u-e,t[8]=n+o,t[1]=u+e,t[5]=1-(l+r),t[9]=i-a,t[2]=n-o,t[6]=i+a,t[10]=1-(l+c),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}},b.Quaternion=function(e,t,n,i){this._x=e||0,this._y=t||0,this._z=n||0,this._w=void 0!==i?i:1},b.Quaternion.prototype={get x(){return this._x},set x(e){this._x=e},get y(){return this._y},set y(e){this._y=e},get z(){return this._z},set z(e){this._z=e},get w(){return this._w},set w(e){this._w=e},copy:function(e){this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w},inverse:function(){return this.conjugate().normalize()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(this._x=this._x*(e=1/e),this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this},setFromAxisAngle:function(e,t){var t=t/2,n=Math.sin(t);return this._x=e.x*n,this._y=e.y*n,this._z=e.z*n,this._w=Math.cos(t),this},setFromUnitVectors:function(e,t){return void 0===ef&&(ef=new b.Vector3),(tf=b.dot(e,t)+1)<1e-6?(tf=0,Math.abs(e.x)>Math.abs(e.z)?b.setVector(ef,-e.y,e.x,0):b.setVector(ef,0,-e.z,e.y)):b.cross(e,t,ef),this._x=ef.x,this._y=ef.y,this._z=ef.z,this._w=tf,this.normalize()},multiply:function(e){return this.multiplyQuaternions(this,e)},premultiply:function(e){return this.multiplyQuaternions(e,this)},multiplyQuaternions:function(e,t){var n=e._x,i=e._y,r=e._z,e=e._w,a=t._x,o=t._y,s=t._z,t=t._w;return this._x=n*t+e*a+i*s-r*o,this._y=i*t+e*o+r*a-n*s,this._z=r*t+e*s+n*o-i*a,this._w=e*t-n*a-i*o-r*s,this}},b.convertWorkshopVector=function(e){return new b.Vector3(-e.x,e.y,e.z)},b.convertWorkshopQuaternion=function(e){return new b.Quaternion(-e.x,e.y,e.z,-e.w).multiply(new b.Quaternion(Math.sqrt(2)/2,Math.sqrt(2)/2,0,0))},b.convertWorkshopOrthoZoom=function(e){return-1===e?-1:e*($("#player").width()/$("#player").height())},b.convertWorkshopPanoramaQuaternion=function(e){return new b.Quaternion(e.x,-e.y,-e.z,e.w).normalize().multiply((new b.Quaternion).setFromAxisAngle(new b.Vector3(0,1,0),270*b.RADIANS_PER_DEGREE))},b.normalize=function(e){var t=e.x*e.x+e.y*e.y+e.z*e.z,t=Math.sqrt(t);e.x/=t,e.y/=t,e.z/=t},b.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z},b.cross=function(e,t,n){var i=e.x,r=e.y,e=e.z;n.x=r*t.z-e*t.y,n.y=e*t.x-i*t.z,n.z=i*t.y-r*t.x},b.setVector=function(e,t,n,i){e.x=t,e.y=n,e.z=i},b.copyVector=function(e,t){t.x=e.x,t.y=e.y,t.z=e.z},b.addVector=function(e,t){e.x+=t.x,e.y+=t.y,e.z+=t.z},b.subVector=function(e,t){e.x-=t.x,e.y-=t.y,e.z-=t.z},b.applyQuaternionToVector=function(e,t){var n=t.x,i=t.y,r=t.z,a=e.x,o=e.y,s=e.z,e=e.w,l=e*n+o*r-s*i,u=e*i+s*n-a*r,c=e*r+a*i-o*n,n=-a*n-o*i-s*r;t.x=l*e+n*-a+u*-s-c*-o,t.y=u*e+n*-o+c*-a-l*-s,t.z=c*e+n*-s+l*-o-u*-a},{clampVFOV:function(e,t,n,i){return t<lf.getHFOVFromVFOV(e,n,i)?lf.getVFOVFromHFOV(t,n,i):e},getHFOVForCamera:function(e,t){return lf.getHFOVByScreenPrecent(e.fov,e.aspect,t)},getHFOVByScreenPrecent:function(e,t,n){t=2*Math.atan(t*Math.tan(e*b.RADIANS_PER_DEGREE/2));return n?t:t*b.DEGREES_PER_RADIAN}}),uf={config:{withCredentials:!(b.angleBetweenVectors=function(e,t){return Math.acos(b.dot(e,t))}),customHeaders:[{header:null,value:null}]},createXMLHttpRequest:function(){var e,t,n=new XMLHttpRequest;return this.config.customHeaders&&Array.isArray(this.config.customHeaders)&&0<this.config.customHeaders.length&&(e=n.open,t=this.config.customHeaders,n.open=function(){e.apply(this,[].slice.call(arguments)),t.forEach(function(e){e.header&&e.value&&n.setRequestHeader(e.header,e.value)})}),n}},cf=function(){y(a,K);var r=C(a);function a(e){te(this,a),t=r.call(this);var t,n=new Xn,i=(n.minFilter=U,n.magFilter=U,new Os({map:n,depthTest:!1,depthWrite:!1}));return t.texture=n,t.material=i,t.sprite=new Ys(t.material),t.add(t.sprite),t.borderThickness=4,t.fontface="Arial",t.fontsize=28,t.borderColor={r:0,g:0,b:0,a:1},t.backgroundColor={r:255,g:255,b:255,a:1},t.textColor={r:255,g:255,b:255,a:1},t.text="",t.setText(e),t}return A(a,[{key:"setText",value:function(e){this.text!==e&&(this.text=e,this.update())}},{key:"setTextColor",value:function(e){this.textColor=e,this.update()}},{key:"setBorderColor",value:function(e){this.borderColor=e,this.update()}},{key:"setBackgroundColor",value:function(e){this.backgroundColor=e,this.update()}},{key:"update",value:function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font="Bold "+this.fontsize+"px "+this.fontface;var n=t.measureText(this.text).width,i=10+n+2*this.borderThickness,r=1.4*this.fontsize+2*this.borderThickness,n=(t.canvas.width=i,t.canvas.height=r,t.font="Bold "+this.fontsize+"px "+this.fontface,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.borderThickness,this.roundRect(t,this.borderThickness/2,this.borderThickness/2,n+this.borderThickness+10,1.4*this.fontsize+this.borderThickness,6),t.strokeStyle="rgba(0, 0, 0, 1.0)",t.strokeText(this.text,this.borderThickness+5,this.fontsize+this.borderThickness),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.borderThickness+5,this.fontsize+this.borderThickness),new Xn(e));n.minFilter=U,n.magFilter=U,n.needsUpdate=!0,this.sprite.material.map=n,this.texture=n,this.sprite.scale.set(.01*i,.01*r,1)}},{key:"roundRect",value:function(e,t,n,i,r,a){e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+i-a,n),e.quadraticCurveTo(t+i,n,t+i,n+a),e.lineTo(t+i,n+r-a),e.quadraticCurveTo(t+i,n+r,t+i-a,n+r),e.lineTo(t+a,n+r),e.quadraticCurveTo(t,n+r,t,n+r-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath(),e.fill(),e.stroke()}}]),a}(),hf=function(){y(n,K);var t=C(n);function n(){var i,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return te(this,n),"Volume"===(i=t.call(this)).constructor.name&&console.warn("Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead."),i._clip=e.clip||!1,i._visible=!0,i.showVolumeLabel=!0,i._modifiable=e.modifiable||!0,i.label=new cf("0"),i.label.setBorderColor({r:0,g:255,b:0,a:0}),i.label.setBackgroundColor({r:0,g:255,b:0,a:0}),i.label.material.depthTest=!1,i.label.material.depthWrite=!1,i.label.material.transparent=!0,i.label.position.y-=.5,i.add(i.label),i.label.updateMatrixWorld=function(){var e=new Re;e.setFromMatrixPosition(i.matrixWorld),i.label.position.copy(e),i.label.updateMatrix(),i.label.matrixWorld.copy(i.label.matrix),i.label.matrixWorldNeedsUpdate=!1;for(var t=0,n=i.label.children.length;t<n;t++)i.label.children[t].updateMatrixWorld(!0)},i.addEventListener("select",function(e){}),i.addEventListener("deselect",function(e){}),i}return A(n,[{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",object:this}))}},{key:"getVolume",value:function(){console.warn("override this in subclass")}},{key:"update",value:function(){}},{key:"raycast",value:function(e,t){}},{key:"clip",get:function(){return this._clip},set:function(e){this._clip!==e&&(this._clip=e,this.update(),this.dispatchEvent({type:"clip_changed",object:this}))}},{key:"modifieable",get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}]),n}(),df=function(){y(a,hf);var r=C(a);function a(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,a),(e=r.call(this,e)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="box_"+e.constructor.counter,new Ql(1,1,1)),n=(t.computeBoundingBox(),new Hl),i=Re;return n.vertices.push(new i(-.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,-.5),new i(.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,-.5),new i(.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,-.5,.5),new i(.5,.5,.5),new i(.5,-.5,-.5),new i(.5,.5,-.5),new i(-.5,-.5,-.5),new i(-.5,.5,-.5)),e.material=new L({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),e.box=new Z(t,e.material),e.box.geometry.computeBoundingBox(),e.boundingBox=e.box.geometry.boundingBox,e.add(e.box),e.frame=new Bl(n,new vl({color:0})),e.add(e.frame),e.update(),e}return A(a,[{key:"update",value:function(){this.boundingBox=this.box.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new gi),this._clip?(this.box.visible=!1,this.label.visible=!1):(this.box.visible=!0,this.label.visible=this.showVolumeLabel)}},{key:"raycast",value:function(e,t){var n=[];this.box.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)}}]),a}(),pf=function(){y(E,hf);var x=C(E);function E(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,E),(e=x.call(this,e)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="sphere_"+e.constructor.counter,new Hu(1,32,32)),n=(t.computeBoundingBox(),e.material=new L({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),e.sphere=new Z(t,e.material),e.sphere.visible=!1,e.sphere.geometry.computeBoundingBox(),e.boundingBox=e.sphere.geometry.boundingBox,e.add(e.sphere),e.label.visible=!1,new Hl),i=0;i<8;i++)for(var r=i/8*Math.PI*2,a=Math.cos(r),o=Math.sin(r),s=0;s<=64;s++){var l=s/64*Math.PI*2,u=l+2*Math.PI/64,c=Math.sin(l),l=Math.cos(l),h=Math.sin(u),u=Math.cos(u),l=new Re(a*l,o*l,c),c=(n.vertices.push(l),new Re(a*u,o*u,h));n.vertices.push(c)}for(var d=0;d<=6;d++){var p=(1-(p=d/6))*(-Math.PI/2)+p*(Math.PI/2),f=Math.sin(p);console.log(p,f);for(var m=0;m<=64;m++){var v=m/64*Math.PI*2,g=v+2*Math.PI/64,A=Math.cos(v),v=Math.sin(v),y=Math.cos(g),g=Math.sin(g),w=Math.sqrt(1-f*f),A=new Re(A*w,v*w,f),v=(n.vertices.push(A),new Re(y*w,g*w,f));n.vertices.push(v)}}e.frame=new Bl(n,new vl({color:0})),e.add(e.frame);var b=new L({wireframe:!0,color:0});return e.frame=new Z(t,b),e.update(),e}return A(E,[{key:"update",value:function(){this.boundingBox=this.sphere.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new gi)}},{key:"raycast",value:function(e,t){var n=[];this.sphere.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return 4/3*Math.PI*this.scale.x*this.scale.y*this.scale.z}}]),E}(),ff=function(){y(n,K);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="Profile_"+e.constructor.counter,e.points=[],e.spheres=[],e.edges=[],e.boxes=[],e.width=1,e.height=20,e._modifiable=!0,e.sphereGeometry=new Hu(.4,10,10),e.color=new Me(16711680),e.lineColor=new Me(16711680),e}return A(n,[{key:"createSphereMaterial",value:function(){return new lc({color:16711680,depthTest:!1,depthWrite:!1})}},{key:"getSegments",value:function(){for(var e=[],t=0;t<this.points.length-1;t++){var n=this.points[t].clone(),i=this.points[t+1].clone();e.push({start:n,end:i})}return e}},{key:"getSegmentMatrices",value:function(){var e,t=[],n=q(this.getSegments());try{for(n.s();!(e=n.n()).done;){var i=e.value,r=i.start,a=i.end,o=new K,s=r.clone().setZ(0).distanceTo(a.clone().setZ(0)),l=(o.scale.set(s,1e4,this.width),o.up.set(0,0,1),(new Re).addVectors(r,a).multiplyScalar(.5)),u=(new Re).subVectors(a,r),c=new Re(u.y,-u.x,0);o.position.set(0,0,0),o.lookAt(c),o.position.copy(l),o.updateMatrixWorld(),t.push(o.matrixWorld)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"addMarker",value:function(e){var t,n,i=this,r=(this.points.push(e),new Z(this.sphereGeometry,this.createSphereMaterial()));this.add(r),this.spheres.push(r),1<this.points.length&&((t=new Hl).vertices.push(new Re,new Re),t.colors.push(this.lineColor,this.lineColor,this.lineColor),(n=new vl({vertexColors:2,linewidth:2,transparent:!0,opacity:.4})).depthTest=!1,(t=new xl(t,n)).visible=!1,this.add(t),this.edges.push(t),(n=new Z(new Ql(1,1,1),new L({color:16711680,transparent:!0,opacity:.2}))).visible=!1,this.add(n),this.boxes.push(n));r.addEventListener("drag",function(e){var t=ie.getMousePointCloudIntersection(e.drag.end,e.viewer.scene.getActiveCamera(),e.viewer,e.viewer.scene.pointclouds);t&&-1!==(e=i.spheres.indexOf(e.drag.object))&&i.setPosition(e,t.location)}),r.addEventListener("drop",function(e){e=i.spheres.indexOf(e.drag.object);-1!==e&&i.dispatchEvent({type:"marker_dropped",profile:i,index:e})}),r.addEventListener("mouseover",function(e){return e.object.material.emissive.setHex(8947848)}),r.addEventListener("mouseleave",function(e){return e.object.material.emissive.setHex(0)}),this.dispatchEvent({type:"marker_added",profile:this,sphere:r}),this.setPosition(this.points.length-1,e)}},{key:"removeMarker",value:function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0===e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.boxes[t]),this.boxes.splice(t,1),this.spheres.splice(e,1),this.update(),this.dispatchEvent({type:"marker_removed",profile:this})}},{key:"setPosition",value:function(e,t){var n=this.points[e],t=(n.copy(t),{type:"marker_moved",profile:this,index:e,position:n.clone()});this.dispatchEvent(t),this.update()}},{key:"setWidth",value:function(e){this.width=e,this.dispatchEvent({type:"width_changed",profile:this,width:e}),this.update()}},{key:"getWidth",value:function(){return this.width}},{key:"update",value:function(){var e;if(0!==this.points.length)if(1===this.points.length)e=this.points[0],this.spheres[0].position.copy(e);else{for(var t=this.points[0].clone(),n=this.points[0].clone(),i=new Re,r=this.points.length-1,a=0;a<=r;a++){var o=this.points[a],s=this.spheres[a],l=0===a?r:a-1,u=this.points[l],c=this.edges[l],h=this.edges[a],l=this.boxes[l];s.position.copy(o),this._modifiable?s.visible=!0:s.visible=!1,c&&(c.geometry.vertices[1].copy(o),c.geometry.verticesNeedUpdate=!0,c.geometry.computeBoundingSphere()),h&&(h.geometry.vertices[0].copy(o),h.geometry.verticesNeedUpdate=!0,h.geometry.computeBoundingSphere()),l&&(s=o,h=(c=u).clone().setZ(0).distanceTo(s.clone().setZ(0)),l.scale.set(h,1e6,this.width),l.up.set(0,0,1),u=(new Re).addVectors(c,s).multiplyScalar(.5),h=(new Re).subVectors(s,c),s=new Re(h.y,-h.x,0),l.position.set(0,0,0),l.lookAt(s),l.position.copy(u)),i.add(o),t.min(o),n.max(o)}i.multiplyScalar(1/this.points.length);for(var d=0;d<this.boxes.length;d++)this.boxes[d].position.z=t.z+(n.z-t.z)/2}}},{key:"raycast",value:function(e,t){for(var n=0;n<this.points.length;n++)this.spheres[n].raycast(e,t);for(var i=0;i<t.length;i++){var r=t[i];r.distance=e.ray.origin.distanceTo(r.point)}t.sort(function(e,t){return e.distance-t.distance})}},{key:"modifiable",get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}]),n}(),mf=new Y,vf=new Re,gf=function(){y(n,Ch);var t=C(n);function n(){var e;te(this,n),(e=t.call(this)).isLineSegmentsGeometry=!0,e.type="LineSegmentsGeometry";return e.setIndex([0,2,1,2,3,1,2,4,3,4,5,3,4,6,5,6,7,5]),e.setAttribute("position",new ne([-1,2,0,1,2,0,-1,1,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,1,-1,0],3)),e.setAttribute("uv",new ne([-1,2,1,2,-1,1,1,1,-1,-1,1,-1,-1,-2,1,-2],2)),e}return A(n,[{key:"applyMatrix4",value:function(e){var t=this.attributes.instanceStart,n=this.attributes.instanceEnd;return void 0!==t&&(t.applyMatrix4(e),n.applyMatrix4(e),t.needsUpdate=!0),null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this}},{key:"setPositions",value:function(e){e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));var t,e=new md(t,6,1);return this.setAttribute("instanceStart",new Fs(e,3,0)),this.setAttribute("instanceEnd",new Fs(e,3,3)),this.computeBoundingBox(),this.computeBoundingSphere(),this}},{key:"setColors",value:function(e){e instanceof Float32Array?t=e:Array.isArray(e)&&(t=new Float32Array(e));var t,e=new md(t,6,1);return this.setAttribute("instanceColorStart",new Fs(e,3,0)),this.setAttribute("instanceColorEnd",new Fs(e,3,3)),this}},{key:"fromWireframeGeometry",value:function(e){return this.setPositions(e.attributes.position.array),this}},{key:"fromEdgesGeometry",value:function(e){return this.setPositions(e.attributes.position.array),this}},{key:"fromMesh",value:function(e){return this.fromWireframeGeometry(new $u(e.geometry)),this}},{key:"fromLineSegments",value:function(e){e=e.geometry;return this.setPositions(e.attributes.position.array),this}},{key:"computeBoundingBox",value:function(){null===this.boundingBox&&(this.boundingBox=new Y);var e=this.attributes.instanceStart,t=this.attributes.instanceEnd;void 0!==e&&void 0!==t&&(this.boundingBox.setFromBufferAttribute(e),mf.setFromBufferAttribute(t),this.boundingBox.union(mf))}},{key:"computeBoundingSphere",value:function(){null===this.boundingSphere&&(this.boundingSphere=new gi),null===this.boundingBox&&this.computeBoundingBox();var e=this.attributes.instanceStart,t=this.attributes.instanceEnd;if(void 0!==e&&void 0!==t){for(var n=this.boundingSphere.center,i=(this.boundingBox.getCenter(n),0),r=0,a=e.count;r<a;r++)vf.fromBufferAttribute(e,r),i=Math.max(i,n.distanceToSquared(vf)),vf.fromBufferAttribute(t,r),i=Math.max(i,n.distanceToSquared(vf));this.boundingSphere.radius=Math.sqrt(i),isNaN(this.boundingSphere.radius)&&console.error("THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.",this)}}},{key:"toJSON",value:function(){}},{key:"applyMatrix",value:function(e){return console.warn("THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4()."),this.applyMatrix4(e)}}]),n}(),Af=(D.line={worldUnits:{value:1},lineWidth:{value:1},resolution:{value:new Le(1,1)},viewportOffset:{value:new Le(0,0)},devicePixelRatio:{value:window.devicePixelRatio},dashScale:{value:1},dashSize:{value:1},dashOffset:{value:0},gapSize:{value:1},opacity:{value:1},backColor:{type:"v3",value:new Me("#ddd")},clipDistance:{type:"f",value:4},occlusionDistance:{type:"f",value:1},maxClipFactor:{type:"f",value:1},depthTexture:{value:null},nearPlane:{value:.1},farPlane:{value:1e5}},Ma.line={uniforms:ca.merge([D.common,D.fog,D.line]),vertexShader:"\n\t\t#include <common>\n\t\t#include <color_pars_vertex>\n\t\t#include <fog_pars_vertex>\n\t\t#include <logdepthbuf_pars_vertex>\n\t\t#include <clipping_planes_pars_vertex>\n\n\t\tuniform float lineWidth;\n\t\tuniform vec2 resolution;\n uniform float devicePixelRatio; //add\n \n \n\t\tattribute vec3 instanceStart;\n\t\tattribute vec3 instanceEnd;\n\n\t\tattribute vec3 instanceColorStart;\n\t\tattribute vec3 instanceColorEnd;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashScale;\n\t\t\tattribute float instanceDistanceStart;\n\t\t\tattribute float instanceDistanceEnd;\n\t\t\tvarying float vLineDistance;\n\n\t\t#endif\n\n\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\n\n\t\t\t// trim end segment so it terminates between the camera plane and the near plane\n\n\t\t\t// conservative estimate of the near plane\n\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\n\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\n\t\t\tfloat nearEstimate = - 0.5 * b / a;\n\n\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\n\n\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#ifdef USE_COLOR\n\n\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\n\n\t\t\t#endif\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\tfloat aspect = resolution.x / resolution.y;\n\n\t\t\t// camera space\n\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\n\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\tworldStart = start.xyz;\n\t\t\t\tworldEnd = end.xyz;\n\n\t\t\t#else\n\n\t\t\t\tvUv = uv;\n\n\t\t\t#endif\n\n\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\n\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\n\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\n\t\t\t// perhaps there is a more elegant solution -- WestLangley\n\n\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\n\n\t\t\tif ( perspective ) {\n\n\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( start, end );\n\n\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\n\n\t\t\t\t\ttrimSegment( end, start );\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// clip space\n\t\t\tvec4 clipStart = projectionMatrix * start;\n\t\t\tvec4 clipEnd = projectionMatrix * end;\n\n\t\t\t// ndc space\n\t\t\tvec3 ndcStart = clipStart.xyz / clipStart.w;\n\t\t\tvec3 ndcEnd = clipEnd.xyz / clipEnd.w;\n\n\t\t\t// direction\n\t\t\tvec2 dir = ndcEnd.xy - ndcStart.xy;\n\n\t\t\t// account for clip-space aspect ratio\n\t\t\tdir.x *= aspect;\n\t\t\tdir = normalize( dir );\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// get the offset direction as perpendicular to the view vector\n\t\t\t\tvec3 worldDir = normalize( end.xyz - start.xyz );\n\t\t\t\tvec3 offset;\n\t\t\t\tif ( position.y < 0.5 ) {\n\n\t\t\t\t\toffset = normalize( cross( start.xyz, worldDir ) );\n\n\t\t\t\t} else {\n\n\t\t\t\t\toffset = normalize( cross( end.xyz, worldDir ) );\n\n\t\t\t\t}\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\tfloat forwardOffset = dot( worldDir, vec3( 0.0, 0.0, 1.0 ) );\n\n\t\t\t\t// don't extend the line if we're rendering dashes because we\n\t\t\t\t// won't be rendering the endcaps\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t// extend the line bounds to encompass endcaps\n\t\t\t\t\tstart.xyz += - worldDir * lineWidth * 0.5;\n\t\t\t\t\tend.xyz += worldDir * lineWidth * 0.5;\n\n\t\t\t\t\t// shift the position of the quad so it hugs the forward edge of the line\n\t\t\t\t\toffset.xy -= dir * forwardOffset;\n\t\t\t\t\toffset.z += 0.5;\n\n\t\t\t\t#endif\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y > 1.0 || position.y < 0.0 ) {\n\n\t\t\t\t\toffset.xy += dir * 2.0 * forwardOffset;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for lineWidth\n\t\t\t\toffset *= lineWidth * 0.5;\n\n\t\t\t\t// set the world position\n\t\t\t\tworldPos = ( position.y < 0.5 ) ? start : end;\n\t\t\t\tworldPos.xyz += offset;\n\n\t\t\t\t// project the worldpos\n\t\t\t\tvec4 clip = projectionMatrix * worldPos;\n\n\t\t\t\t// shift the depth of the projected points so the line\n\t\t\t\t// segments overlap neatly\n\t\t\t\tvec3 clipPose = ( position.y < 0.5 ) ? ndcStart : ndcEnd;\n\t\t\t\tclip.z = clipPose.z * clip.w;\n\n\t\t\t#else\n\n\t\t\t\tvec2 offset = vec2( dir.y, - dir.x );\n\t\t\t\t// undo aspect ratio adjustment\n\t\t\t\tdir.x /= aspect;\n\t\t\t\toffset.x /= aspect;\n\n\t\t\t\t// sign flip\n\t\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\n\n\t\t\t\t// endcaps\n\t\t\t\tif ( position.y < 0.0 ) {\n\n\t\t\t\t\toffset += - dir;\n\n\t\t\t\t} else if ( position.y > 1.0 ) {\n\n\t\t\t\t\toffset += dir;\n\n\t\t\t\t}\n\n\t\t\t\t// adjust for lineWidth\n\t\t\t\toffset *= lineWidth;\n\n\t\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\n\t\t\t\toffset /= resolution.y * devicePixelRatio;\n\n\t\t\t\t// select end\n\t\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\n\n\t\t\t\t// back to clip space\n\t\t\t\toffset *= clip.w;\n\n\t\t\t\tclip.xy += offset;\n\n\t\t\t#endif\n\n\t\t\tgl_Position = clip;\n\n\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\n\n\t\t\t#include <logdepthbuf_vertex>\n\t\t\t#include <clipping_planes_vertex>\n\t\t\t#include <fog_vertex>\n\n\t\t}\n\t\t",fragmentShader:"\n\t\tuniform vec3 diffuse;\n\t\tuniform float opacity;\n\t\tuniform float lineWidth;\n uniform vec3 backColor;\n uniform float occlusionDistance;\n uniform float clipDistance;\n uniform float maxClipFactor;\n\t\t#ifdef USE_DASH\n\n\t\t\tuniform float dashOffset;\n\t\t\tuniform float dashSize;\n\t\t\tuniform float gapSize;\n\n\t\t#endif\n\n\n //加\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n uniform sampler2D depthTexture;\n uniform float nearPlane;\n uniform float farPlane; \n uniform vec2 resolution;\n uniform vec2 viewportOffset;\n #endif\n\n\n\n\t\tvarying float vLineDistance;\n\n\t\t#ifdef WORLD_UNITS\n\n\t\t\tvarying vec4 worldPos;\n\t\t\tvarying vec3 worldStart;\n\t\t\tvarying vec3 worldEnd;\n\n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tvarying vec2 vUv;\n\n\t\t\t#endif\n\n\t\t#else\n\n\t\t\tvarying vec2 vUv;\n\n\t\t#endif\n\n\t\t#include <common>\n\t\t#include <color_pars_fragment>\n\t\t#include <fog_pars_fragment>\n\t\t#include <logdepthbuf_pars_fragment>\n\t\t#include <clipping_planes_pars_fragment>\n\n\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n float convertToLinear(float zValue)\n {\n float z = zValue * 2.0 - 1.0;\n return (2.0 * nearPlane * farPlane) / (farPlane + nearPlane - z * (farPlane - nearPlane));\n }\n #endif\n\n\n\n\t\tvec2 closestLineToLine(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\n\n\t\t\tfloat mua;\n\t\t\tfloat mub;\n\n\t\t\tvec3 p13 = p1 - p3;\n\t\t\tvec3 p43 = p4 - p3;\n\n\t\t\tvec3 p21 = p2 - p1;\n\n\t\t\tfloat d1343 = dot( p13, p43 );\n\t\t\tfloat d4321 = dot( p43, p21 );\n\t\t\tfloat d1321 = dot( p13, p21 );\n\t\t\tfloat d4343 = dot( p43, p43 );\n\t\t\tfloat d2121 = dot( p21, p21 );\n\n\t\t\tfloat denom = d2121 * d4343 - d4321 * d4321;\n\n\t\t\tfloat numer = d1343 * d4321 - d1321 * d4343;\n\n\t\t\tmua = numer / denom;\n\t\t\tmua = clamp( mua, 0.0, 1.0 );\n\t\t\tmub = ( d1343 + d4321 * ( mua ) ) / d4343;\n\t\t\tmub = clamp( mub, 0.0, 1.0 );\n\n\t\t\treturn vec2( mua, mub );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\t#include <clipping_planes_fragment>\n\n\t\t\t/*#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n\n\t\t\t\tif ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\n\n\t\t\t#endif*/\n \n\t\t\t#ifdef USE_DASH\n\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\n \n \n bool unvisible = mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize;\n //加\n #ifdef DASH_with_depth\n \n #else \n if (unvisible) discard; // todo - FIX\n #endif\n\t\t\t#endif\n \n\n\t\t\tfloat alpha = opacity;\n\n\t\t\t#ifdef WORLD_UNITS\n\n\t\t\t\t// Find the closest points on the view ray and the line segment\n\t\t\t\tvec3 rayEnd = normalize( worldPos.xyz ) * 1e5;\n\t\t\t\tvec3 lineDir = worldEnd - worldStart;\n\t\t\t\tvec2 params = closestLineToLine( worldStart, worldEnd, vec3( 0.0, 0.0, 0.0 ), rayEnd );\n\n\t\t\t\tvec3 p1 = worldStart + lineDir * params.x;\n\t\t\t\tvec3 p2 = rayEnd * params.y;\n\t\t\t\tvec3 delta = p1 - p2;\n\t\t\t\tfloat len = length( delta );\n\t\t\t\tfloat norm = len / lineWidth;\n\n\t\t\t\t#ifndef USE_DASH\n\n\t\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t\tfloat dnorm = fwidth( norm );\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 0.5 - dnorm, 0.5 + dnorm, norm );\n\n\t\t\t\t\t#else\n\n\t\t\t\t\t\tif ( norm > 0.5 ) {\n\n\t\t\t\t\t\t\tdiscard;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t#endif\n\n\t\t\t\t#endif\n\n\t\t\t#else\n\n\t\t\t\t#ifdef USE_ALPHA_TO_COVERAGE\n\n\t\t\t\t\t// artifacts appear on some hardware if a derivative is taken within a conditional\n\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\tfloat len2 = a * a + b * b;\n\t\t\t\t\tfloat dlen = fwidth( len2 );\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\talpha = 1.0 - smoothstep( 1.0 - dlen, 1.0 + dlen, len2 );\n\n\t\t\t\t\t}\n\n\t\t\t\t#else\n\n\t\t\t\t\tif ( abs( vUv.y ) > 1.0 ) {\n\n\t\t\t\t\t\tfloat a = vUv.x;\n\t\t\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\n\t\t\t\t\t\tfloat len2 = a * a + b * b;\n\n\t\t\t\t\t\tif ( len2 > 1.0 ) discard;\n\n\t\t\t\t\t}\n\n\t\t\t\t#endif\n\n\t\t\t#endif\n\n\t\t\tvec4 diffuseColor = vec4( diffuse, alpha );\n\n\n //加\n #if defined(GL_EXT_frag_depth) && defined(useDepth) \n \n float mixFactor = 0.0;\n float clipFactor = 0.0;\n\n float fragDepth = convertToLinear(gl_FragCoord.z);\n //gl_FragCoord大小为 viewport client大小 \n vec2 depthTxtCoords = vec2(gl_FragCoord.x - viewportOffset.x, gl_FragCoord.y - viewportOffset.y) / resolution;\n\n float textureDepth = convertToLinear(texture2D(depthTexture, depthTxtCoords).r);\n\n float delta = fragDepth - textureDepth;\n\n if (delta > 0.0)\n {\n \n mixFactor = clamp(delta / occlusionDistance, 0.0, 1.0);\n clipFactor = clamp(delta / clipDistance, 0.0, maxClipFactor);\n }\n \n if (clipFactor == 1.0)\n {\n discard;\n }\n \n vec4 backColor_ = vec4(backColor, opacity); //vec4(0.8,0.8,0.8, 0.8*opacity);\n \n #ifdef DASH_with_depth \n // 只在被遮住的部分显示虚线, 所以若同时是虚线不可见部分和被遮住时, a为0\n if(unvisible) backColor_.a = 0.0;\n #endif \n \n //vec4 diffuseColor = vec4(mix(diffuse, backColor_, mixFactor), opacity*(1.0 - clipFactor));\n \n \n \n diffuseColor = mix(diffuseColor, backColor_ , mixFactor); \n \n \n diffuseColor.a *= (1.0 - clipFactor); \n \n #endif\n\n\n\n\t\t\t#include <logdepthbuf_fragment>\n\t\t\t#include <color_fragment>\n\n\t\t\t//gl_FragColor = vec4( diffuseColor.rgb, alpha );\n\t\t\tgl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a );\n\t\t\t#include <tonemapping_fragment>\n\t\t\t#include <encodings_fragment>\n\t\t\t#include <fog_fragment>\n\t\t\t#include <premultiplied_alpha_fragment>\n\n\t\t}\n\t\t"},function(){y(r,pa);var i=C(r);function r(e){function t(e){var t=(e=e.viewport).offset||new Le;n.uniforms.resolution.value.copy(e.resolution),n.uniforms.viewportOffset.value.copy(t),n.uniforms.devicePixelRatio.value=window.devicePixelRatio,n.lineWidth=n.lineWidth_}te(this,r),(n=i.call(this,{type:"LineMaterial",uniforms:ca.clone(Ma.line.uniforms),vertexShader:Ma.line.vertexShader,fragmentShader:Ma.line.fragmentShader,clipping:!0})).isLineMaterial=!0,n.lineWidth_=0,n.supportExtDepth=e.supportExtDepth,n.depthTestWhenPick=!1,e.color&&(n.color=new Me(e.color)),e.backColor&&(n.uniforms.backColor.value=new Me(e.backColor)),e.clipDistance&&(n.uniforms.clipDistance.value=e.clipDistance),e.occlusionDistance&&(n.uniforms.occlusionDistance.value=e.occlusionDistance),e.maxClipFactor&&(n.uniforms.maxClipFactor.value=e.maxClipFactor),Object.defineProperties(G(n),{color:{enumerable:!0,get:function(){return this.uniforms.diffuse.value},set:function(e){this.uniforms.diffuse.value=e}},worldUnits:{enumerable:!0,get:function(){return"WORLD_UNITS"in this.defines},set:function(e){!0===e?this.defines.WORLD_UNITS="":delete this.defines.WORLD_UNITS}},lineWidth:{enumerable:!0,get:function(){return this.lineWidth_},set:function(e){this.uniforms.lineWidth.value=e*window.devicePixelRatio,this.lineWidth_=e}},dashed:{enumerable:!0,get:function(){return Boolean("USE_DASH"in this.defines)},set:function(e){Boolean(e)!==Boolean("USE_DASH"in this.defines)&&(this.needsUpdate=!0),!0===e?this.defines.USE_DASH="":delete this.defines.USE_DASH}},dashScale:{enumerable:!0,get:function(){return this.uniforms.dashScale.value},set:function(e){this.uniforms.dashScale.value=e}},dashSize:{enumerable:!0,get:function(){return this.uniforms.dashSize.value},set:function(e){this.uniforms.dashSize.value=e}},dashOffset:{enumerable:!0,get:function(){return this.uniforms.dashOffset.value},set:function(e){this.uniforms.dashOffset.value=e}},gapSize:{enumerable:!0,get:function(){return this.uniforms.gapSize.value},set:function(e){this.uniforms.gapSize.value=e}},opacity:{enumerable:!0,get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms.opacity.value=e}},resolution:{enumerable:!0,get:function(){return this.uniforms.resolution.value},set:function(e){this.uniforms.resolution.value.copy(e)}},alphaToCoverage:{enumerable:!0,get:function(){return Boolean("USE_ALPHA_TO_COVERAGE"in this.defines)},set:function(e){Boolean(e)!==Boolean("USE_ALPHA_TO_COVERAGE"in this.defines)&&(this.needsUpdate=!0),!0===e?(this.defines.USE_ALPHA_TO_COVERAGE="",this.extensions.derivatives=!0):(delete this.defines.USE_ALPHA_TO_COVERAGE,this.extensions.derivatives=!1)}},useDepth:{enumerable:!0,get:function(){return"useDepth"in this.defines},set:function(e){(e=e&&!!this.supportExtDepth)!=this.useDepth&&(e?(this.defines.useDepth="",this.updateDepthParams()):delete this.defines.useDepth,this.needsUpdate=!0)}},dashWithDepth:{enumerable:!0,get:function(){return"DASH_with_depth"in this.defines},set:function(e){(e=e&&!!this.supportExtDepth)!=this.dashWithDepth&&(e?this.defines.DASH_with_depth="":delete this.defines.DASH_with_depth,this.needsUpdate=!0)}}}),n.setValues(e);var n,e=viewer.mainViewport;return t({viewport:e}),viewer.addEventListener("resize",function(e){t(e)}),n.supportExtDepth&&(n.updateDepthParams(),viewer.addEventListener("render.begin",function(e){e.viewport.camera.isPerspectiveCamera&&n.updateDepthParams(e)})),n}return A(r,[{key:"updateDepthParams",value:function(){var e,t;this.useDepth&&(t=(e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).viewport||viewer.mainViewport).camera,this.uniforms.depthTexture.value=viewer.getPRenderer().getRtEDL(e).depthTexture,this.uniforms.nearPlane.value=t.near,this.uniforms.farPlane.value=t.far)}}]),r}()),yf=new Re,wf=new Re,bf=new Kn,xf=new Kn,Ef=new Kn,Cf=new Re,Bf=new _e,_f=new Cd,Mf=new Re,Tf=new Y,Sf=new gi,If=new Kn;function Df(e,t,n){return If.set(0,0,-t,1).applyMatrix4(e.projectionMatrix),If.multiplyScalar(1/If.w),If.x=of/n.width,If.y=of/n.height,If.applyMatrix4(e.projectionMatrixInverse),If.multiplyScalar(1/If.w),Math.abs(Math.max(If.x,If.y))}var Pf=function(){y(i,Z);var n=C(i);function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new gf,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Af({color:16777215*Math.random()});return te(this,i),(e=n.call(this,e,t)).isLineSegments2=!0,e.type="LineSegments2",e}return A(i,[{key:"computeLineDistances",value:function(){for(var e=this.geometry,t=e.attributes.instanceStart,n=e.attributes.instanceEnd,i=new Float32Array(2*t.count),r=0,a=0,o=t.count;r<o;r++,a+=2)yf.fromBufferAttribute(t,r),wf.fromBufferAttribute(n,r),i[a]=0===a?0:i[a-1],i[a+1]=i[a]+yf.distanceTo(wf);var s=new md(i,2,1);return e.setAttribute("instanceDistanceStart",new Fs(s,1,0)),e.setAttribute("instanceDistanceEnd",new Fs(s,1,1)),this}},{key:"raycast",value:function(e,t){var n=this.material.worldUnits,i=e.camera,r=(null!==i||n||console.error('LineSegments2: "Raycaster.camera" needs to be set in order to raycast against LineSegments2 while worldUnits is set to false.'),void 0!==e.params.Line2&&e.params.Line2.threshold||0),e=(nf=e.ray,this.matrixWorld),a=this.geometry,o=this.material;if((of=o.lineWidth+r,rf=a.attributes.instanceStart,af=a.attributes.instanceEnd,null===a.boundingSphere&&a.computeBoundingSphere(),Sf.copy(a.boundingSphere).applyMatrix4(e),r=n?.5*of:Df(i,Math.max(i.near,Sf.distanceToPoint(nf.origin)),o.resolution),Sf.radius+=r,!1!==nf.intersectsSphere(Sf))&&(null===a.boundingBox&&a.computeBoundingBox(),Tf.copy(a.boundingBox).applyMatrix4(e),r=n?.5*of:Df(i,Math.max(i.near,Tf.distanceToPoint(nf.origin)),o.resolution),Tf.expandByScalar(r),!1!==nf.intersectsBox(Tf)))if(n)for(var s=this,l=t,u=0,c=rf.count;u<c;u++){_f.start.fromBufferAttribute(rf,u),_f.end.fromBufferAttribute(af,u);var h=new Re,d=new Re;nf.distanceSqToSegment(_f.start,_f.end,d,h),d.distanceTo(h)<.5*of&&l.push({point:d,pointOnLine:h,distance:nf.origin.distanceTo(d),object:s,face:null,faceIndex:u,uv:null,uv2:null})}else{var p=this,a=i,f=t,m=a.projectionMatrix,v=p.material.resolution,g=p.matrixWorld,e=p.geometry,A=e.attributes.instanceStart,y=e.attributes.instanceEnd,w=-a.near;nf.at(1,Ef),Ef.w=1,Ef.applyMatrix4(a.matrixWorldInverse),Ef.applyMatrix4(m),Ef.multiplyScalar(1/Ef.w),Ef.x*=v.x/2,Ef.y*=v.y/2,Ef.z=0,Cf.copy(Ef),Bf.multiplyMatrices(a.matrixWorldInverse,g);for(var b,x,E,C,B=0,_=A.count;B<_;B++)bf.fromBufferAttribute(A,B),xf.fromBufferAttribute(y,B),bf.w=1,xf.w=1,bf.applyMatrix4(Bf),xf.applyMatrix4(Bf),bf.z>w&&xf.z>w||(bf.z>w?(b=bf.z-xf.z,b=(bf.z-w)/b,bf.lerp(xf,b)):xf.z>w&&(b=xf.z-bf.z,x=(xf.z-w)/b,xf.lerp(bf,x)),bf.applyMatrix4(m),xf.applyMatrix4(m),bf.multiplyScalar(1/bf.w),xf.multiplyScalar(1/xf.w),bf.x*=v.x/2,bf.y*=v.y/2,xf.x*=v.x/2,xf.y*=v.y/2,_f.start.copy(bf),_f.start.z=0,_f.end.copy(xf),_f.end.z=0,x=_f.closestPointToPointParameter(Cf,!0),_f.at(x,Mf),E=-1<=(E=Be.lerp(bf.z,xf.z,x))&&E<=1,C=Cf.distanceTo(Mf)<.5*of,E&&C&&(_f.start.fromBufferAttribute(A,B),_f.end.fromBufferAttribute(y,B),_f.start.applyMatrix4(g),_f.end.applyMatrix4(g),E=new Re,C=new Re,nf.distanceSqToSegment(_f.start,_f.end,C,E),f.push({point:C,pointOnLine:E,distance:nf.origin.distanceTo(C),object:p,face:null,faceIndex:B,uv:null,uv2:null})))}}}]),i}(),kf=function(){y(r,gf);var t=C(r);function r(){var e;return te(this,r),(e=t.call(this)).isLineGeometry=!0,e.type="LineGeometry",e}return A(r,[{key:"setPositions",value:function(e){for(var t=e.length-3,n=new Float32Array(2*t),i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return k(_(r.prototype),"setPositions",this).call(this,n),this}},{key:"setColors",value:function(e){for(var t=e.length-3,n=new Float32Array(2*t),i=0;i<t;i+=3)n[2*i]=e[i],n[2*i+1]=e[i+1],n[2*i+2]=e[i+2],n[2*i+3]=e[i+3],n[2*i+4]=e[i+4],n[2*i+5]=e[i+5];return k(_(r.prototype),"setColors",this).call(this,n),this}},{key:"fromLine",value:function(e){e=e.geometry;return this.setPositions(e.attributes.position.array),this}}]),r}(),Lf=function(){y(i,Pf);var n=C(i);function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new kf,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Af({color:16777215*Math.random()});return te(this,i),(e=n.call(this,e,t)).isLine2=!0,e.type="Line2",e}return A(i)}();function Rf(){var e=new kf,t=(e.setPositions([0,0,0,0,0,0]),new Af({color:16711680,linewidth:2,resolution:new Le(1e3,1e3),gapSize:1,dashed:!0}));return t.depthTest=!1,new Lf(e,t)}function Ff(){var e={label:null,center:null,target:null,north:null,centerToNorth:null,centerToTarget:null,centerToTargetground:null,targetgroundToTarget:null,circle:null,node:null},t=new Hu(1,32,32),n=new sc,i=new cf("");return i.setTextColor({r:140,g:250,b:140,a:1}),i.setBorderColor({r:0,g:0,b:0,a:1}),i.setBackgroundColor({r:0,g:0,b:0,a:1}),i.fontsize=16,i.material.depthTest=!1,i.material.opacity=1,e.label=i,e.center=new Z(t,n),e.target=new Z(t,n),e.north=new Z(t,n),e.centerToNorth=Rf(),e.centerToTarget=Rf(),e.centerToTargetground=Rf(),e.targetgroundToTarget=Rf(),e.circle=function(){for(var e=[],t=0;t<=128;t++){var n=2*Math.PI*(t/128),i=2*Math.PI*(t+1)/128,n=new Re(Math.cos(n),Math.sin(n),0),i=new Re(Math.cos(i),Math.sin(i),0);e.push.apply(e,J(n.toArray()).concat(J(i.toArray())))}var r=new kf,a=(r.setPositions(e),new Af({color:16711680,dashSize:5,gapSize:2,linewidth:2,resolution:new Le(1e3,1e3)}));return a.depthTest=!1,(r=new Lf(r,a)).computeLineDistances(),r}(),e.node=new K,e.node.add(e.centerToNorth,e.centerToTarget,e.centerToTargetground,e.targetgroundToTarget,e.circle,e.label,e.center,e.target,e.north),e}var Of,Nf,Gf=function(){y(r,K);var i=C(r);function r(){var e,t,n;return te(this,r),(e=i.call(this)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="Measure_"+e.constructor.counter,e.points=[],e._showDistances=!0,e._showCoordinates=!1,e._showArea=!1,e._closed=!0,e._showAngles=!1,e._showCircle=!1,e._showHeight=!1,e._showEdges=!0,e._showAzimuth=!1,e.maxMarkers=Number.MAX_SAFE_INTEGER,e.sphereGeometry=new Hu(.4,10,10),e.color=new Me(16711680),e.spheres=[],e.edges=[],e.sphereLabels=[],e.edgeLabels=[],e.angleLabels=[],e.coordinateLabels=[],e.heightEdge=((t=new kf).setPositions([0,0,0,0,0,0]),(n=new Af({color:65280,dashSize:5,gapSize:2,linewidth:2,resolution:new Le(1e3,1e3)})).depthTest=!1,(t=new Lf(t,n)).visible=!1,t),e.heightLabel=((n=new cf("")).setTextColor({r:140,g:250,b:140,a:1}),n.setBorderColor({r:0,g:0,b:0,a:1}),n.setBackgroundColor({r:0,g:0,b:0,a:1}),n.fontsize=16,n.material.depthTest=!1,n.material.opacity=1,n.visible=!1,n),e.areaLabel=((t=new cf("")).setTextColor({r:140,g:250,b:140,a:1}),t.setBorderColor({r:0,g:0,b:0,a:1}),t.setBackgroundColor({r:0,g:0,b:0,a:1}),t.fontsize=16,t.material.depthTest=!1,t.material.opacity=1,t.visible=!1,t),e.circleRadiusLabel=((n=new cf("")).setTextColor({r:140,g:250,b:140,a:1}),n.setBorderColor({r:0,g:0,b:0,a:1}),n.setBackgroundColor({r:0,g:0,b:0,a:1}),n.fontsize=16,n.material.depthTest=!1,n.material.opacity=1,n.visible=!1,n),e.circleRadiusLine=((t=new kf).setPositions([0,0,0,0,0,0]),(n=new Af({color:16711680,linewidth:2,resolution:new Le(1e3,1e3),gapSize:1,dashed:!0})).depthTest=!1,(t=new Lf(t,n)).visible=!1,t),e.circleLine=function(){for(var e=[],t=0;t<=128;t++){var n=2*Math.PI*(t/128),i=2*Math.PI*(t+1)/128,n=new Re(Math.cos(n),Math.sin(n),0),i=new Re(Math.cos(i),Math.sin(i),0);e.push.apply(e,J(n.toArray()).concat(J(i.toArray())))}var r=new kf,a=(r.setPositions(e),new Af({color:16711680,dashSize:5,gapSize:2,linewidth:2,resolution:new Le(1e3,1e3)}));return a.depthTest=!1,(r=new Lf(r,a)).visible=!1,r.computeLineDistances(),r}(),e.circleCenter=((n=new Z(new Hu(1,32,32),new sc)).visible=!1,n),e.azimuth=Ff(),e.add(e.heightEdge),e.add(e.heightLabel),e.add(e.areaLabel),e.add(e.circleRadiusLabel),e.add(e.circleRadiusLine),e.add(e.circleLine),e.add(e.circleCenter),e.add(e.azimuth.node),e}return A(r,[{key:"createSphereMaterial",value:function(){return new lc({color:this.color,depthTest:!1,depthWrite:!1})}},{key:"addMarker",value:function(e){var u=this,t=(null!=e.x?e={position:e}:e instanceof Array&&(e={position:re(Re,J(e))}),this.points.push(e),new Z(this.sphereGeometry,this.createSphereMaterial())),n=(this.add(t),this.spheres.push(t),new kf),i=(n.setPositions([0,0,0,0,0,0]),new Af({color:16711680,linewidth:2,resolution:new Le(1e3,1e3)})),n=(i.depthTest=!1,new Lf(n,i)),i=(n.visible=!0,this.add(n),this.edges.push(n),new cf),n=(i.setBorderColor({r:0,g:0,b:0,a:1}),i.setBackgroundColor({r:0,g:0,b:0,a:1}),i.material.depthTest=!1,i.visible=!1,i.fontsize=16,this.edgeLabels.push(i),this.add(i),new cf),i=(n.setBorderColor({r:0,g:0,b:0,a:1}),n.setBackgroundColor({r:0,g:0,b:0,a:1}),n.fontsize=16,n.material.depthTest=!1,n.material.opacity=1,n.visible=!1,this.angleLabels.push(n),this.add(n),new cf),n=(i.setBorderColor({r:0,g:0,b:0,a:1}),i.setBackgroundColor({r:0,g:0,b:0,a:1}),i.fontsize=16,i.material.depthTest=!1,i.material.opacity=1,i.visible=!1,this.coordinateLabels.push(i),this.add(i),t.addEventListener("drag",function(e){var t=ie.getMousePointCloudIntersection(e.drag.end,e.viewer.scene.getActiveCamera(),e.viewer,e.viewer.scene.pointclouds,{pickClipped:!0});if(t){e=u.spheres.indexOf(e.drag.object);if(-1!==e){for(var n=u.points[e],i=0,r=Object.keys(n);i<r.length;i++){var a=r[i];t.point[a]||delete n[a]}var o,s=q(Object.keys(t.point).filter(function(e){return"position"!==e}));try{for(s.s();!(o=s.n()).done;){var l=o.value;n[l]=t.point[l]}}catch(e){s.e(e)}finally{s.f()}u.setPosition(e,t.location)}}}),t.addEventListener("drop",function(e){e=u.spheres.indexOf(e.drag.object);-1!==e&&u.dispatchEvent({type:"marker_dropped",measurement:u,index:e})}),t.addEventListener("mouseover",function(e){return e.object.material.emissive.setHex(8947848)}),t.addEventListener("mouseleave",function(e){return e.object.material.emissive.setHex(0)}),{type:"marker_added",measurement:this,sphere:t});this.dispatchEvent(n),this.setMarker(this.points.length-1,e)}},{key:"removeMarker",value:function(e){this.points.splice(e,1),this.remove(this.spheres[e]);var t=0===e?0:e-1;this.remove(this.edges[t]),this.edges.splice(t,1),this.remove(this.edgeLabels[t]),this.edgeLabels.splice(t,1),this.coordinateLabels.splice(e,1),this.remove(this.angleLabels[e]),this.angleLabels.splice(e,1),this.spheres.splice(e,1),this.update(),this.dispatchEvent({type:"marker_removed",measurement:this})}},{key:"setMarker",value:function(e,t){this.points[e]=t;e={type:"marker_moved",measure:this,index:e,position:t.position.clone()};this.dispatchEvent(e),this.update()}},{key:"setPosition",value:function(e,t){this.points[e].position.copy(t);e={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(e),this.update()}},{key:"getArea",value:function(){for(var e=0,t=this.points.length-1,n=0;n<this.points.length;n++){var i=this.points[n].position,r=this.points[t].position;e+=(r.x+i.x)*(i.y-r.y),t=n}return Math.abs(e/2)}},{key:"getTotalDistance",value:function(){if(0===this.points.length)return 0;for(var e,t=0,n=1;n<this.points.length;n++){var i=this.points[n-1].position,r=this.points[n].position;t+=i.distanceTo(r)}return this.closed&&1<this.points.length&&(e=this.points[0].position,t+=this.points[this.points.length-1].position.distanceTo(e)),t}},{key:"getAngleBetweenLines",value:function(e,t,n){t=(new Re).subVectors(t.position,e.position),n=(new Re).subVectors(n.position,e.position);return 0===Math.sqrt(t.lengthSq()*n.lengthSq())?0:t.angleTo(n)}},{key:"getAngle",value:function(e){var t,n;return this.points.length<3||e>=this.points.length?0:(t=0===e?this.points[this.points.length-1]:this.points[e-1],n=this.points[e],e=this.points[(e+1)%this.points.length],this.getAngleBetweenLines(n,t,e))}},{key:"update",value:function(){if(0!==this.points.length)if(1===this.points.length)m=this.points[0].position,this.spheres[0].position.copy(m),v=this.coordinateLabels[0],m=m.toArray().map(function(e){return ie.addCommas(e.toFixed(2))}).join(" / "),v.setText(m),v.visible=this.showCoordinates;else{for(var e=this.points.length-1,t=new Re,n=0;n<=e;n++){var i=this.points[n];t.add(i.position)}t.divideScalar(this.points.length);for(var r=0;r<=e;r++){var a=r,o=this.points[a],s=this.points[e<r+1?0:r+1],l=this.points[0===r?e:r-1],u=this.spheres[a],u=(u.position.copy(o.position),u.material.color=this.color,this.edges[a]),u=(u.material.color=this.color,u.position.copy(o.position),u.geometry.setPositions([0,0,0].concat(J(s.position.clone().sub(o.position).toArray()))),u.geometry.verticesNeedUpdate=!0,u.geometry.computeBoundingSphere(),u.computeLineDistances(),u.visible=a<e||this.closed,this.showEdges||(u.visible=!1),this.edgeLabels[r]),c=(new Re).add(o.position),h=(c.add(s.position),c=c.multiplyScalar(.5),o.position.distanceTo(s.position)),c=(u.position.copy(c),""),d=(null!=this.lengthUnit&&null!=this.lengthUnitDisplay&&(h=h/this.lengthUnit.unitspermeter*this.lengthUnitDisplay.unitspermeter,c=this.lengthUnitDisplay.code),ie.addCommas(h.toFixed(2))),d=(u.setText("".concat(d," ").concat(c)),u.visible=this.showDistances&&(a<e||this.closed)&&2<=this.points.length&&0<h,this.angleLabels[r]),c=this.getAngleBetweenLines(o,l,s),u=s.position.clone().sub(l.position),h=(u.multiplyScalar(.5),u=l.position.clone().add(u).sub(o.position).normalize(),Math.min(o.position.distanceTo(l.position),o.position.distanceTo(s.position))),l=(h/=9,o.position.clone().add(u.multiplyScalar(h))),s=(d.position.copy(l),ie.addCommas((c*(180/Math.PI)).toFixed(1))+"°");d.setText(s),d.visible=this.showAngles&&(a<e||this.closed)&&3<=this.points.length&&0<c}var p,f,m=this.heightEdge,v=(m.visible=this.showHeight,this.heightLabel.visible=this.showHeight,this.showHeight&&(y=(v=this.points.slice().sort(function(e,t){return e.position.z-t.position.z}))[0].position.clone(),v=v[v.length-1].position.clone(),f=y.z,A=(g=v.z)-f,f=new Re(v.x,v.y,f),v=new Re(v.x,v.y,g),m.position.copy(y),m.geometry.setPositions([0,0,0].concat(J(f.clone().sub(y).toArray()),J(f.clone().sub(y).toArray()),J(v.clone().sub(y).toArray()))),m.geometry.verticesNeedUpdate=!0,m.geometry.computeBoundingSphere(),m.computeLineDistances(),g=f.clone().add(v).multiplyScalar(.5),this.heightLabel.position.copy(g),y="",null!=this.lengthUnit&&null!=this.lengthUnitDisplay&&(A=A/this.lengthUnit.unitspermeter*this.lengthUnitDisplay.unitspermeter,y=this.lengthUnitDisplay.code),m=ie.addCommas(A.toFixed(2)),f="".concat(m," ").concat(y),this.heightLabel.setText(f)),this.circleRadiusLabel),g=this.circleRadiusLine,A=this.circleLine,m=this.circleCenter,y=3===this.points.length,w=(v.visible=this.showCircle&&y,g.visible=this.showCircle&&y,A.visible=this.showCircle&&y,m.visible=this.showCircle&&y,this.showCircle&&y&&(f=this.points[0].position,y=this.points[1].position,p=this.points[2].position,b=y.clone().sub(f),b=p.clone().sub(f).clone().cross(b).normalize(),w=(f=(p=Potree.Utils.computeCircleCenter(f,y,p)).distanceTo(f))/20,m.position.copy(p),m.scale.set(w,w,w),g.geometry.setPositions([0,0,0].concat(J(y.clone().sub(p).toArray()))),g.geometry.verticesNeedUpdate=!0,g.geometry.computeBoundingSphere(),g.position.copy(p),g.computeLineDistances(),m=p.clone().add(b),A.position.copy(p),A.scale.set(f,f,f),A.lookAt(m),v.visible=!0,v.position.copy(p.clone().add(y).multiplyScalar(.5)),v.setText("".concat(f.toFixed(3)))),this.areaLabel.position.copy(t),this.areaLabel.visible=this.showArea&&3<=this.points.length,this.getArea()),g="",b=(null!=this.lengthUnit&&null!=this.lengthUnitDisplay&&(w=w/Math.pow(this.lengthUnit.unitspermeter,2)*Math.pow(this.lengthUnitDisplay.unitspermeter,2),g=this.lengthUnitDisplay.code),ie.addCommas(w.toFixed(1))),A="".concat(b," ").concat(g,"²");this.areaLabel.setText(A)}}},{key:"raycast",value:function(e,t){for(var n=0;n<this.points.length;n++)this.spheres[n].raycast(e,t);for(var i=0;i<t.length;i++){var r=t[i];r.distance=e.ray.origin.distanceTo(r.point)}t.sort(function(e,t){return e.distance-t.distance})}},{key:"showCoordinates",get:function(){return this._showCoordinates},set:function(e){this._showCoordinates=e,this.update()}},{key:"showAngles",get:function(){return this._showAngles},set:function(e){this._showAngles=e,this.update()}},{key:"showCircle",get:function(){return this._showCircle},set:function(e){this._showCircle=e,this.update()}},{key:"showAzimuth",get:function(){return this._showAzimuth},set:function(e){this._showAzimuth=e,this.update()}},{key:"showEdges",get:function(){return this._showEdges},set:function(e){this._showEdges=e,this.update()}},{key:"showHeight",get:function(){return this._showHeight},set:function(e){this._showHeight=e,this.update()}},{key:"showArea",get:function(){return this._showArea},set:function(e){this._showArea=e,this.update()}},{key:"closed",get:function(){return this._closed},set:function(e){this._closed=e,this.update()}},{key:"showDistances",get:function(){return this._showDistances},set:function(e){this._showDistances=e,this.update()}}]),r}(),Uf=function(){y(r,K);var i=C(r);function r(e){var t,n;return te(this,r),(n=i.call(this)).constructor.counter=void 0===n.constructor.counter?0:n.constructor.counter+1,n.name="polygon_clip_volume_"+n.constructor.counter,n.camera=e.clone(),(t=n.camera.rotation).set.apply(t,J(e.rotation.toArray())),n.camera.rotation.order=e.rotation.order,n.camera.updateMatrixWorld(),n.camera.updateProjectionMatrix(),n.camera.matrixWorldInverse.copy(n.camera.matrixWorld).invert(),n.viewMatrix=n.camera.matrixWorldInverse.clone(),n.projMatrix=n.camera.projectionMatrix.clone(),n.markers=[],n.initialized=!1,n}return A(r,[{key:"addMarker",value:function(){function t(e){var t=e.viewer.renderer.getSize(new Le),e=new Re(e.drag.end.x/t.width*2-1,e.drag.end.y/t.height*-2+1,0);i.position.copy(e)}function n(e){r()}var i=new Z,r=function(e){i.removeEventListener("drag",t),i.removeEventListener("drop",n)};i.addEventListener("drag",t),i.addEventListener("drop",n),this.markers.push(i)}},{key:"removeLastMarker",value:function(){0<this.markers.length&&this.markers.splice(this.markers.length-1,1)}}]),r}(),ie=function(){function g(){te(this,g)}var t,n,i;return A(g,null,[{key:"loadShapefileFeatures",value:(i=d(V().mark(function e(t,n){var i,r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],r=function(){n(i)},e.next=4,shapefile.open(t);case 4:a=e.sent;case 5:return e.next=8,a.read();case 8:if((o=e.sent).done)return r(),e.abrupt("break",15);e.next=12;break;case 12:o.value&&"Feature"===o.value.type&&void 0!==o.value.geometry&&i.push(o.value),e.next=5;break;case 15:case"end":return e.stop()}},e)})),function(e,t){return i.apply(this,arguments)})},{key:"toString",value:function(e){return null!=e.x?e.x.toFixed(2)+", "+e.y.toFixed(2)+", "+e.z.toFixed(2):""+e}},{key:"normalizeURL",value:function(e){e=new URL(e);return e.protocol+"//"+e.hostname+e.pathname.replace(/\/+/g,"/")}},{key:"pathExists",value:function(e){var t=uf.createXMLHttpRequest();return t.open("GET",e,!1),t.send(null),200===t.status}},{key:"debugSphere",value:function(e,t,n,i){var r=new Hu(1,8,8),i=void 0!==i?new L({color:i}):new sc,r=new Z(r,i);return r.position.copy(t),r.scale.set(n,n,n),e.add(r),r}},{key:"debugLine",value:function(e,t,n,i){var i=new vl({color:i}),r=new Hl,a=new Re(0,0,0),n=n.clone().sub(t),a=(r.vertices.push(a,n),new xl(r,i));return a.position.copy(t),e.add(a),{node:a,set:function(e,t){r.vertices[0].copy(e),r.vertices[1].copy(t),r.verticesNeedUpdate=!0}}}},{key:"debugCircle",value:function(e,t,n,i,r){for(var r=new vl({color:r}),a=new Hl,o=0;o<=32;o++){var s=2*Math.PI*(o/32),l=2*Math.PI*(o+1)/32,s=new Re(Math.cos(s),Math.sin(s),0),l=new Re(Math.cos(l),Math.sin(l),0);a.vertices.push(s,l)}r=new xl(a,r);r.position.copy(t),r.scale.set(n,n,n),e.add(r)}},{key:"debugBox",value:function(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:new _e,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:16776960,a=[[t.min.x,t.min.y,t.min.z],[t.min.x,t.min.y,t.max.z],[t.min.x,t.max.y,t.min.z],[t.min.x,t.max.y,t.max.z],[t.max.x,t.min.y,t.min.z],[t.max.x,t.min.y,t.max.z],[t.max.x,t.max.y,t.min.z],[t.max.x,t.max.y,t.max.z]].map(function(e){return re(Re,J(e))}),o=t.getCenter(new Re),o=[{position:[t.min.x,o.y,o.z],color:16711680},{position:[t.max.x,o.y,o.z],color:8912896},{position:[o.x,t.min.y,o.z],color:65280},{position:[o.x,t.max.y,o.z],color:34816},{position:[o.x,o.y,t.min.z],color:255},{position:[o.x,o.y,t.max.z],color:136}],s=q(a);try{for(s.s();!(n=s.n()).done;){var l=n.value.clone().applyMatrix4(i);g.debugSphere(e,l,.1,16711680)}}catch(e){s.e(e)}finally{s.f()}for(var u=0,c=[[0,4],[4,5],[5,1],[1,0],[2,6],[6,7],[7,3],[3,2],[0,2],[4,6],[5,7],[1,3]];u<c.length;u++){var h=c[u],d=a[h[0]].clone().applyMatrix4(i),h=a[h[1]].clone().applyMatrix4(i);g.debugLine(e,d,h,r)}for(var p=0,f=o;p<f.length;p++){var m=f[p],v=re(Re,J(m.position)).applyMatrix4(i);g.debugSphere(e,v,.1,m.color)}}},{key:"debugPlane",value:function(e,t){t=new Kd(t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,3<arguments.length&&void 0!==arguments[3]?arguments[3]:255);e.add(t)}},{key:"computeTransformedBoundingBox",value:function(e,t){e=[new Re(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new Re(e.min.x,e.min.y,e.min.z).applyMatrix4(t),new Re(e.max.x,e.min.y,e.min.z).applyMatrix4(t),new Re(e.min.x,e.max.y,e.min.z).applyMatrix4(t),new Re(e.min.x,e.min.y,e.max.z).applyMatrix4(t),new Re(e.min.x,e.max.y,e.max.z).applyMatrix4(t),new Re(e.max.x,e.max.y,e.min.z).applyMatrix4(t),new Re(e.max.x,e.min.y,e.max.z).applyMatrix4(t),new Re(e.max.x,e.max.y,e.max.z).applyMatrix4(t)],t=new Y;return t.setFromPoints(e),t}},{key:"addCommas",value:function(e){for(var e=(e+="").split("."),t=e[0],e=1<e.length?"."+e[1]:"",n=/(\d+)(\d{3})/;n.test(t);)t=t.replace(n,"$1,$2");return t+e}},{key:"removeCommas",value:function(e){return e.replace(/,/g,"")}},{key:"createWorker",value:function(e){e=new Blob([e],{type:"application/javascript"});return new Worker(URL.createObjectURL(e))}},{key:"moveTo",value:function(e,t,n){var i=e.view,e=e.getActiveCamera(),r=TWEEN.Easing.Quartic.Out,t=new TWEEN.Tween(i.position).to(t,500),t=(t.easing(r),t.start(),e.position.distanceTo(n)),a=(new Re).addVectors(e.position,e.getWorldDirection(new Re).clone().multiplyScalar(t)),e=new TWEEN.Tween(a).to(n,500);e.easing(r),e.onUpdate(function(){i.lookAt(a)}),e.onComplete(function(){i.lookAt(a)}),e.start()}},{key:"loadSkybox",value:function(e){for(var t=new K,n=new ma(75,window.innerWidth/window.innerHeight,1,1e5),i=(n.up.set(0,0,1),new Ps),r=".jpg",a=[e+"px"+r,e+"nx"+r,e+"py"+r,e+"ny"+r,e+"pz"+r,e+"nz"+r],o=[],s=0;s<6;s++)!function(e){var t=new L({map:null,side:me,depthTest:!1,depthWrite:!1,color:4343126});o.push(t),(new Nc).load(a[e],function(e){t.map=e,t.needsUpdate=!0,t.color.setHex(16777215)},function(e){},function(e){console.log("An error happened",e)})}(s);e=new Z(new Ql(700,700,700),o);return i.add(e),i.traverse(function(e){return e.frustumCulled=!1}),i.rotation.x=Math.PI/2,t.children.push(n),n.parent=t,{camera:n,scene:i,parent:t}}},{key:"createGrid",value:function(e,t,n,i){for(var i=new vl({color:i||8947848}),r=new Hl,a=0;a<=t;a++)r.vertices.push(new Re(-n*e/2,a*n-n*t/2,0)),r.vertices.push(new Re(n*e/2,a*n-n*t/2,0));for(var o=0;o<=e;o++)r.vertices.push(new Re(o*n-n*e/2,-n*t/2,0)),r.vertices.push(new Re(o*n-n*e/2,n*t/2,0));i=new Bl(r,i);return i.receiveShadow=!0,i}},{key:"createBackgroundTexture",value:function(e,t){function n(e,t){return 1/(2*Math.PI)*Math.exp(-(e*e+t*t)/2)}for(var i=new Uint8Array(3*(e*t)),r=[1,1.5,1.7],a=n(0,0),o=0;o<e;o++)for(var s=0;s<t;s++){var l=o+e*s,u=n(2*(o/e*2-1),2*(s/t*2-1))/a,c=(.5*u+.5)*(c=(Math.random()+Math.random()+Math.random())/3)*.03;c*=.4,i[3*l+0]=255*(u/15+.05+c)*r[0],i[3*l+1]=255*(u/15+.05+c)*r[1],i[3*l+2]=255*(u/15+.05+c)*r[2]}var h=new ya(i,e,t,Tt);return h.needsUpdate=!0,h}},{key:"getMousePointCloudIntersection",value:function(e,t,n,i){var r,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},o=n.renderer,s={x:e.x/o.domElement.clientWidth*2-1,y:2*-(e.y/o.domElement.clientHeight)+1},l={},a=(a.pickClipped&&(l.pickClipped=a.pickClipped),l.x=e.x,l.y=o.domElement.clientHeight-e.y,new gd),u=(a.setFromCamera(s,t),a.ray),c=null,h=1/0,d=null,p=null,f=q(i);try{for(f.s();!(r=f.n()).done;){var m,v=r.value,g=v.pick(n,t,u,l);g&&(m=t.position.distanceTo(g.position))<h&&(h=m,c=v,d=g.position,p=g)}}catch(e){f.e(e)}finally{f.f()}return c?{location:d,distance:h,pointcloud:c,point:p}:null}},{key:"pixelsArrayToImage",value:function(e,t,n){var i=document.createElement("canvas"),r=(i.width=t,i.height=n,i.getContext("2d"));e=new e.constructor(e);for(var a=0;a<e.length;a++)e[4*a+3]=255;t=r.createImageData(t,n),t.data.set(e),r.putImageData(t,0,0),n=new Image;return n.src=i.toDataURL(),n}},{key:"pixelsArrayToDataUrl",value:function(e,t,n){var i=document.createElement("canvas"),r=(i.width=t,i.height=n,i.getContext("2d"));e=new e.constructor(e);for(var a=0;a<e.length;a++)e[4*a+3]=255;t=r.createImageData(t,n);return t.data.set(e),r.putImageData(t,0,0),i.toDataURL()}},{key:"pixelsArrayToCanvas",value:function(e,t,n){for(var i=document.createElement("canvas"),r=(i.width=t,i.height=n,i.getContext("2d")),a=(e=new e.constructor(e),4*t),o=0;o<parseInt(n/2);o++){var s=n-o-1,l=e.slice(o*a,o*a+a),u=e.slice(s*a,s*a+a);e.set(u,o*a),e.set(l,s*a)}t=r.createImageData(t,n);return t.data.set(e),r.putImageData(t,0,0),i}},{key:"removeListeners",value:function(e,t){void 0!==e._listeners&&e._listeners[t]&&delete e._listeners[t]}},{key:"mouseToRay",value:function(e,t,n,i){n={x:e.x/n*2-1,y:-e.y/i*2+1},e=new Re(n.x,n.y,.5),i=t.position.clone(),e.unproject(t),n=(new Re).subVectors(e,i).normalize();return new Bi(i,n)}},{key:"projectedRadius",value:function(e,t,n,i,r){if(t instanceof mh)return g.projectedRadiusOrtho(e,t.projectionMatrix,i,r);if(t instanceof ma)return g.projectedRadiusPerspective(e,t.fov*Math.PI/180,n,r);throw new Error("invalid parameters")}},{key:"projectedRadiusPerspective",value:function(e,t,n,i){return e*(1/Math.tan(t/2)/n*i/2)}},{key:"projectedRadiusOrtho",value:function(e,t,n,i){var r=new Kn(0),e=new Kn(e);return r.applyMatrix4(t),e.applyMatrix4(t),r=new Re(r.x,r.y,r.z),e=new Re(e.x,e.y,e.z),r.x=.5*(r.x+1)*n,r.y=.5*(r.y+1)*i,e.x=.5*(e.x+1)*n,e.y=.5*(e.y+1)*i,r.distanceTo(e)}},{key:"topView",value:function(e,t){e.position.set(0,1,0),e.rotation.set(-Math.PI/2,0,0),e.zoomTo(t,1)}},{key:"frontView",value:function(e,t){e.position.set(0,0,1),e.rotation.set(0,0,0),e.zoomTo(t,1)}},{key:"leftView",value:function(e,t){e.position.set(-1,0,0),e.rotation.set(0,-Math.PI/2,0),e.zoomTo(t,1)}},{key:"rightView",value:function(e,t){e.position.set(1,0,0),e.rotation.set(0,Math.PI/2,0),e.zoomTo(t,1)}},{key:"findClosestGpsTime",value:function(e,t){var n,i=performance.now(),r=[],a=q(t.scene.pointclouds);try{for(a.s();!(n=a.n()).done;){var o,s=n.value,l=(r.push(s.root),q(s.root.children));try{for(l.s();!(o=l.n()).done;){var u=o.value;u&&r.push(u)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){a.e(e)}finally{a.f()}for(var c=null,h=1/0,d=1/0,p=0,f=r;p<f.length;p++){var m=f[p];if(null!=m.geometryNode&&null!=m.geometryNode.geometry&&null!=m.sceneNode)for(var v=m.geometryNode.geometry.attributes["gps-time"],g=v.potree.range,A=0;A<v.array.length;A++){var y=v.array[A]*(g[1]-g[0])+g[0],y=Math.abs(e-y);y<d&&(h=A,d=y,c=m)}}t=c.geometryNode.geometry,t=new Re(t.attributes.position.array[3*h+0],t.attributes.position.array[3*h+1],t.attributes.position.array[3*h+2]);t.applyMatrix4(c.sceneNode.matrixWorld);i=performance.now()-i;return console.log("duration: ".concat(i.toFixed(3),"ms")),{node:c,index:h,position:t}}},{key:"frustumSphereIntersection",value:function(e,t){for(var n=e.planes,i=t.center,r=-t.radius,a=Number.MAX_VALUE,o=0;o<6;o++){var s=n[o].distanceToPoint(i);if(s<r)return 0;a=Math.min(a,s)}return a>=t.radius?2:1}},{key:"generateDataTexture",value:function(e,t,n){for(var i=e*t,r=new Uint8Array(4*e*t),a=Math.floor(255*n.r),o=Math.floor(255*n.g),s=Math.floor(255*n.b),l=0;l<i;l++)r[3*l]=a,r[3*l+1]=o,r[3*l+2]=s;n=new ya(r,e,t,St);return n.needsUpdate=!0,n.magFilter=ut,n}},{key:"getParameterByName",value:function(e){e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");e=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(document.location.search);return null===e?null:decodeURIComponent(e[1].replace(/\+/g," "))}},{key:"setParameter",value:function(e,t){e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var n=new RegExp("([\\?&])("+e+"=([^&#]*))").exec(document.location.search),i=window.location.href;i=null===n?(0===window.location.search.length?i+="?":i+="&",i+e+"="+t):i.replace(n[2],e+"="+t),window.history.replaceState({},"",i)}},{key:"createChildAABB",value:function(e,t){var n=e.min.clone(),e=e.max.clone(),i=(new Re).subVectors(e,n);return 0<(1&t)?n.z+=i.z/2:e.z-=i.z/2,0<(2&t)?n.y+=i.y/2:e.y-=i.y/2,0<(4&t)?n.x+=i.x/2:e.x-=i.x/2,new Y(n,e)}},{key:"clipboardCopy",value:function(e){var t=document.createElement("textarea");t.style.position="fixed",t.style.top=0,t.style.left=0,t.style.width="2em",t.style.height="2em",t.style.padding=0,t.style.border="none",t.style.outline="none",t.style.boxShadow="none",t.style.background="transparent",t.value=e,document.body.appendChild(t),t.select();try{document.execCommand("copy")?console.log("copied text to clipboard"):console.log("copy to clipboard failed")}catch(e){console.log("error while trying to copy to clipboard")}document.body.removeChild(t)}},{key:"getMeasurementIcon",value:function(e){return e instanceof Gf?!e.showDistances||e.showArea||e.showAngles?e.showDistances&&e.showArea&&!e.showAngles?"".concat(Potree.resourcePath,"/icons/area.svg"):1===e.maxMarkers?"".concat(Potree.resourcePath,"/icons/point.svg"):e.showDistances||e.showArea||!e.showAngles?e.showHeight?"".concat(Potree.resourcePath,"/icons/height.svg"):"".concat(Potree.resourcePath,"/icons/distance.svg"):"".concat(Potree.resourcePath,"/icons/angle.png"):"".concat(Potree.resourcePath,"/icons/distance.svg"):e instanceof ff?"".concat(Potree.resourcePath,"/icons/profile.svg"):e instanceof hf?"".concat(Potree.resourcePath,"/icons/volume.svg"):e instanceof Uf?"".concat(Potree.resourcePath,"/icons/clip-polygon.svg"):void 0}},{key:"lineToLineIntersection",value:function(e,t,n,i){function r(e,t,n,i){return(a[e].x-a[t].x)*(a[n].x-a[i].x)+(a[e].y-a[t].y)*(a[n].y-a[i].y)+(a[e].z-a[t].z)*(a[n].z-a[i].z)}var a=[e,t,n,i],o=(r(0,2,3,2)*r(3,2,1,0)-r(0,2,1,0)*r(3,2,3,2))/(r(1,0,1,0)*r(3,2,3,2)-r(3,2,1,0)*r(3,2,1,0)),s=(r(0,2,3,2)+o*r(3,2,1,0))/r(3,2,3,2),t=t.clone().sub(e),i=i.clone().sub(n),e=e.clone().add(t.multiplyScalar(o)),t=n.clone().add(i.multiplyScalar(s));return e.clone().add(t).multiplyScalar(.5)}},{key:"computeCircleCenter",value:function(e,t,n){var i=t.clone().sub(e),r=n.clone().sub(e),a=r.clone().cross(i).normalize(),i=i.clone().cross(a).normalize(),r=r.clone().cross(a).normalize(),a=e.clone().add(t).multiplyScalar(.5),t=e.clone().add(n).multiplyScalar(.5),e=a,n=a.clone().add(i),a=t,i=t.clone().add(r);return g.lineToLineIntersection(e,n,a,i)}},{key:"getNorthVec",value:function(e,t,n){var i,r,a;return n?(proj4.defs("pointcloud",n),a=(n=proj4("pointcloud","WGS84")).forward(e.toArray()),r=n.forward([e.x,e.y+t]),i=Math.sqrt(Math.pow(r[0]-a[0],2)+Math.pow(r[1]-a[1],2)),r=[a[0],a[1]+i],a=n.inverse(r),re(Re,J(a).concat([e.z])).sub(e)):new Re(0,1,0).multiplyScalar(t)}},{key:"computeAzimuth",value:function(e,t,n){var i;return-(n?(i=(n=n.includes("EPSG")?proj4(n,"WGS84"):(proj4.defs("pointcloud",n),proj4("pointcloud","WGS84"))).forward(e.toArray()),n=[(n=n.forward(t.toArray()))[0]-i[0],n[1]-i[1]],Math.atan2(n[1],n[0])-Math.PI/2):(i=[t.x-e.x,t.y-e.y],Math.atan2(i[1],i[0])-Math.PI/2))}},{key:"loadScript",value:(n=d(V().mark(function e(n){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(e){var t;document.getElementById(n)?e():((t=document.createElement("script")).id=n,t.onload=function(){e()},t.src=n,document.body.appendChild(t))}));case 1:case"end":return e.stop()}},e)})),function(e){return n.apply(this,arguments)})},{key:"createSvgGradient",value:function(e){var t="".concat(Math.random(),"_").concat(Date.now()),n="http://www.w3.org/2000/svg",i=document.createElementNS(n,"svg"),r=(i.setAttributeNS(null,"width","2em"),i.setAttributeNS(null,"height","3em"),document.createElementNS(n,"defs")),a=document.createElementNS(n,"linearGradient");a.setAttributeNS(null,"id",t),a.setAttributeNS(null,"gradientTransform","rotate(90)");for(var o=e.length-1;0<=o;o--){var s=e[o],l=parseInt(100-100*s[0]),s=N(s[1].toArray().map(function(e){return parseInt(255*e)}),3),u=s[0],c=s[1],s=s[2],h=document.createElementNS(n,"stop");h.setAttributeNS(null,"offset","".concat(l,"%")),h.setAttributeNS(null,"stop-color","rgb(".concat(u,", ").concat(c,", ").concat(s,")")),a.appendChild(h)}r.appendChild(a),i.appendChild(r);r=document.createElementNS(n,"rect");return r.setAttributeNS(null,"width","100%"),r.setAttributeNS(null,"height","100%"),r.setAttributeNS(null,"fill",'url("#'.concat(t,'")')),r.setAttributeNS(null,"stroke","black"),r.setAttributeNS(null,"stroke-width","0.1em"),i.appendChild(r),i}},{key:"waitAny",value:(t=d(V().mark(function e(n){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(t){n.map(function(e){e.then(function(){t()})})}));case 1:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}]),g}(),zf=(ie.screenPass=new function(){this.screenScene=new Ps,this.screenQuad=new Z(new Ba(2,2,1)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new fa,this.render=function(e,t,n){this.screenQuad.material=t,void 0===n?e.render(this.screenScene,this.camera):e.render(this.screenScene,this.camera,n)}},function(){function n(e){te(this,n);var t=-1===(this.version=e).indexOf(".")?e.length:e.indexOf(".");this.versionMajor=parseInt(e.substr(0,t)),this.versionMinor=parseInt(e.substr(t+1)),0===this.versionMinor.length&&(this.versionMinor=0)}return A(n,[{key:"newerThan",value:function(e){e=new n(e);return this.versionMajor>e.versionMajor||this.versionMajor===e.versionMajor&&this.versionMinor>e.versionMinor}},{key:"equalOrHigher",value:function(e){e=new n(e);return this.versionMajor>e.versionMajor||this.versionMajor===e.versionMajor&&this.versionMinor>=e.versionMinor}},{key:"upTo",value:function(e){return!this.newerThan(e)}}]),n}()),Hf=function(){function i(e,t,n){te(this,i),this.version="string"==typeof e?new zf(e):e,this.boundingBox=t,this.scale=n}return A(i,[{key:"load",value:function(t){var n=this;if(!t.loaded){var i=t.getURL(),r=(this.version.equalOrHigher("1.4")&&(i+=".bin"),uf.createXMLHttpRequest());r.open("GET",i,!0),r.responseType="arraybuffer",r.overrideMimeType("text/plain; charset=x-user-defined"),r.onreadystatechange=function(){if(4===r.readyState){if(200!==r.status&&0!==r.status||null===r.response)throw new Error("Failed to load file! HTTP status: ".concat(r.status,", file: ").concat(i));var e=r.response;n.parse(t,e)}};try{r.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}}},{key:"parse",value:function(o,e){var s=o.pcoGeometry.pointAttributes,t=e.byteLength/o.pcoGeometry.pointAttributes.byteSize,l=(this.version.upTo("1.5")&&(o.numPoints=t),Potree.scriptPath+"/workers/BinaryDecoderWorker.js"),u=Potree.workerPool.getWorker(l),t=(u.onmessage=function(e){var t,n=e.data,r=n.attributeBuffers,i=new Y((new Re).fromArray(n.tightBoundingBox.min),(new Re).fromArray(n.tightBoundingBox.max)),a=(Potree.workerPool.returnWorker(l,u),new j);for(t in r)!function(e){var t,n=r[e].buffer,i=r[e].attribute;"POSITION_CARTESIAN"===e?a.setAttribute("position",new Q(new Float32Array(n),3)):"rgba"===e?a.setAttribute("rgba",new Q(new Uint8Array(n),4,!0)):"NORMAL_SPHEREMAPPED"===e||"NORMAL_OCT16"===e||"NORMAL"===e?a.setAttribute("normal",new Q(new Float32Array(n),3)):"INDICES"===e?((t=new Q(new Uint8Array(n),4)).normalized=!0,a.setAttribute("indices",t)):"SPACING"===e?(t=new Q(new Float32Array(n),1),a.setAttribute("spacing",t)):((t=new Q(new Float32Array(n),1)).potree={offset:r[e].offset,scale:r[e].scale,preciseBuffer:r[e].preciseBuffer,range:i.range},a.setAttribute(e,t),(n=s.attributes.find(function(e){return e.name===i.name})).range[0]=Math.min(n.range[0],i.range[0]),n.range[1]=Math.max(n.range[1],i.range[1]),0===o.getLevel()&&(n.initialRange=i.range))}(t);i.max.sub(i.min),i.min.set(0,0,0);e=e.data.buffer.byteLength/s.byteSize;o.numPoints=e,o.geometry=a,o.mean=re(Re,J(n.mean)),o.tightBoundingBox=i,o.loaded=!0,o.loading=!1,o.estimatedSpacing=n.estimatedSpacing,Potree.numNodesLoading--},{buffer:e,pointAttributes:s,version:this.version.version,min:[o.boundingBox.min.x,o.boundingBox.min.y,o.boundingBox.min.z],offset:[o.pcoGeometry.offset.x,o.pcoGeometry.offset.y,o.pcoGeometry.offset.z],scale:this.scale,spacing:o.spacing,hasChildren:o.hasChildren,name:o.name});u.postMessage(t,[t.buffer])}}]),i}(),nd=document.createElement("canvas"),Qf=null===(Of=nd.getContext("webgl")||nd.getContext("experimental-webgl"))?null:(Xh=Of.getShaderPrecisionFormat(Of.VERTEX_SHADER,Of.HIGH_FLOAT),Yd=Of.getShaderPrecisionFormat(Of.VERTEX_SHADER,Of.MEDIUM_FLOAT),Vd=Of.getShaderPrecisionFormat(Of.FRAGMENT_SHADER,Of.HIGH_FLOAT),ql=Of.getShaderPrecisionFormat(Of.FRAGMENT_SHADER,Of.MEDIUM_FLOAT),Xh=0<Xh.precision&&0<Vd.precision,Vd=0<Yd.precision&&0<ql.precision,{SHADER_INTERPOLATION:{isSupported:function(){return Of.getExtension("EXT_frag_depth")&&8<=Of.getParameter(Of.MAX_VARYING_VECTORS)}},SHADER_SPLATS:{isSupported:function(){return Of.getExtension("EXT_frag_depth")&&Of.getExtension("OES_texture_float")&&8<=Of.getParameter(Of.MAX_VARYING_VECTORS)}},SHADER_EDL:{isSupported:function(){return Of.getExtension("EXT_frag_depth")&&Of.getExtension("OES_texture_float")&&8<=Of.getParameter(Of.MAX_VARYING_VECTORS)}},precision:Xh?"highp":Vd?"mediump":"lowp"}),Vf={DATA_TYPE_DOUBLE:{ordinal:0,name:"double",size:8},DATA_TYPE_FLOAT:{ordinal:1,name:"float",size:4},DATA_TYPE_INT8:{ordinal:2,name:"int8",size:1},DATA_TYPE_UINT8:{ordinal:3,name:"uint8",size:1},DATA_TYPE_INT16:{ordinal:4,name:"int16",size:2},DATA_TYPE_UINT16:{ordinal:5,name:"uint16",size:2},DATA_TYPE_INT32:{ordinal:6,name:"int32",size:4},DATA_TYPE_UINT32:{ordinal:7,name:"uint32",size:4},DATA_TYPE_INT64:{ordinal:8,name:"int64",size:8},DATA_TYPE_UINT64:{ordinal:9,name:"uint64",size:8}},jf=0;for(Nf in Vf)Vf[jf]=Vf[Nf],jf++;var w=A(function e(t,n,i){te(this,e),this.name=t,this.type=n,this.numElements=i,this.byteSize=this.numElements*this.type.size,this.description="",this.range=[1/0,-1/0]}),Wf=(w.POSITION_CARTESIAN=new w("POSITION_CARTESIAN",Vf.DATA_TYPE_FLOAT,3),w.RGBA_PACKED=new w("COLOR_PACKED",Vf.DATA_TYPE_INT8,4),w.COLOR_PACKED=w.RGBA_PACKED,w.RGB_PACKED=new w("COLOR_PACKED",Vf.DATA_TYPE_INT8,3),w.NORMAL_FLOATS=new w("NORMAL_FLOATS",Vf.DATA_TYPE_FLOAT,3),w.INTENSITY=new w("INTENSITY",Vf.DATA_TYPE_UINT16,1),w.CLASSIFICATION=new w("CLASSIFICATION",Vf.DATA_TYPE_UINT8,1),w.NORMAL_SPHEREMAPPED=new w("NORMAL_SPHEREMAPPED",Vf.DATA_TYPE_UINT8,2),w.NORMAL_OCT16=new w("NORMAL_OCT16",Vf.DATA_TYPE_UINT8,2),w.NORMAL=new w("NORMAL",Vf.DATA_TYPE_FLOAT,3),w.RETURN_NUMBER=new w("RETURN_NUMBER",Vf.DATA_TYPE_UINT8,1),w.NUMBER_OF_RETURNS=new w("NUMBER_OF_RETURNS",Vf.DATA_TYPE_UINT8,1),w.SOURCE_ID=new w("SOURCE_ID",Vf.DATA_TYPE_UINT16,1),w.INDICES=new w("INDICES",Vf.DATA_TYPE_UINT32,1),w.SPACING=new w("SPACING",Vf.DATA_TYPE_FLOAT,1),w.GPS_TIME=new w("GPS_TIME",Vf.DATA_TYPE_DOUBLE,1),function(){function i(e){if(te(this,i),this.attributes=[],this.byteSize=0,this.size=0,this.vectors=[],null!=e)for(var t=0;t<e.length;t++){var n=e[t],n=w[n];this.attributes.push(n),this.byteSize+=n.byteSize,this.size++}}return A(i,[{key:"add",value:function(e){this.attributes.push(e),this.byteSize+=e.byteSize,this.size++}},{key:"addVector",value:function(e){this.vectors.push(e)}},{key:"hasNormals",value:function(){for(var e in this.attributes){e=this.attributes[e];if(e===w.NORMAL_SPHEREMAPPED||e===w.NORMAL_FLOATS||e===w.NORMAL||e===w.NORMAL_OCT16)return!0}return!1}}]),i}()),Jf=function(){function e(){te(this,e),this.boundingBox=new Y,this.numPoints=0,this.data={}}return A(e,[{key:"add",value:function(e){var t,n=this.numPoints,i=n+e.numPoints,r=Object.keys(this.data),a=Object.keys(e.data),o=q(new Set([].concat(r,a)));try{for(o.s();!(t=o.n()).done;){var s,l,u,c,h,d=t.value;r.includes(d)&&a.includes(d)?((s=new this.data[d].constructor(this.data[d].length+e.data[d].length)).set(this.data[d],0),s.set(e.data[d],this.data[d].length),this.data[d]=s):r.includes(d)&&!a.includes(d)?(l=this.data[d].length/this.numPoints,(u=new this.data[d].constructor(l*i)).set(this.data[d],0),this.data[d]=u):!r.includes(d)&&a.includes(d)&&(c=e.data[d].length/e.numPoints,(h=new e.data[d].constructor(c*i)).set(e.data[d],c*n),this.data[d]=h)}}catch(e){o.e(e)}finally{o.f()}this.numPoints=i,this.boundingBox.union(e.boundingBox)}}]),e}(),qf=function(){function e(){te(this,e)}return A(e,null,[{key:"toString",value:function(e){var t,n="",i=Object.keys(e.data).filter(function(e){return"normal"!==e}).sort(function(e,t){return"position"===e?-1:"position"===t?1:"rgba"===e?-1:"rgba"===t?1:void 0}),r=[],a=q(i);try{for(a.s();!(t=a.n()).done;){var o=t.value,s=e.data[o].length/e.numPoints;if("position"===o)r=r.concat(["x","y","z"]);else if("rgba"===o)r=r.concat(["r","g","b","a"]);else if(1<s)for(var l=0;l<s;l++)r.push("".concat(o,"_").concat(l));else r.push(o)}}catch(e){a.e(e)}finally{a.f()}for(var n=r.join(", ")+"\n",u=0;u<e.numPoints;u++){var c,h=[],d=q(i);try{for(d.s();!(c=d.n()).done;){var p=c.value,f=e.data[p].length/e.numPoints,m=e.data[p].subarray(f*u,f*u+f).join(", ");h.push(m)}}catch(e){d.e(e)}finally{d.f()}n+=h.join(", ")+"\n"}return n}}]),e}(),Xf=function(){function e(){te(this,e)}return A(e,null,[{key:"toLAS",value:function(e){for(var t=e.boundingBox,n=t.min.clone(),i=t.min.distanceTo(t.max),r=new Re(.001,.001,.001),r=1e6<i?new Re(.01,.01,.01):new Re(.001,.001,.001),i=function(e,t,n){for(var i=new Uint8Array(n),r=0;r<e.length;r++){var a=e.charCodeAt(r);i[t+r]=a}},a=new ArrayBuffer(227+28*e.numPoints),o=new DataView(a),s=new Uint8Array(a),l=(i("LASF",0,a),s[24]=1,s[25]=2,i("Potree 1.7",58,a),o.setUint16(94,227,!0),o.setUint32(96,227,!0),s[104]=2,o.setUint16(105,28,!0),o.setUint32(107,e.numPoints,!0),o.setFloat64(131,r.x,!0),o.setFloat64(139,r.y,!0),o.setFloat64(147,r.z,!0),o.setFloat64(155,n.x,!0),o.setFloat64(163,n.y,!0),o.setFloat64(171,n.z,!0),o.setFloat64(179,t.max.x,!0),o.setFloat64(187,t.min.x,!0),o.setFloat64(195,t.max.y,!0),o.setFloat64(203,t.min.y,!0),o.setFloat64(211,t.max.z,!0),o.setFloat64(219,t.min.z,!0),227),u=0;u<e.numPoints;u++){var c=e.data.position[3*u+0],h=e.data.position[3*u+1],d=e.data.position[3*u+2],c=parseInt((c-n.x)/r.x),h=parseInt((h-n.y)/r.y),d=parseInt((d-n.z)/r.z),c=(o.setUint32(l+0,c,!0),o.setUint32(l+4,h,!0),o.setUint32(l+8,d,!0),e.data.intensity&&o.setUint16(l+12,e.data.intensity[u],!0),0);e.data.returnNumber&&(c+=e.data.returnNumber[u]),e.data.numberOfReturns&&(c+=e.data.numberOfReturns[u]<<3),o.setUint8(l+14,c),e.data.classification&&o.setUint8(l+15,e.data.classification[u]),e.data.pointSourceID&&o.setUint16(l+18,e.data.pointSourceID[u]),e.data.rgba&&(h=e.data.rgba,o.setUint16(l+20,255*h[4*u+0],!0),o.setUint16(l+22,255*h[4*u+1],!0),o.setUint16(l+24,255*h[4*u+2],!0)),l+=28}return a}}]),e}(),Yf=function(){function e(){te(this,e),this._listeners={}}return A(e,[{key:"addEventListener",value:function(e,t){var n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}},{key:"hasEventListener",value:function(e,t){var n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}},{key:"removeEventListener",value:function(e,t){e=this._listeners[e];void 0!==e&&-1!==(t=e.indexOf(t))&&e.splice(t,1)}},{key:"removeEventListeners",value:function(e){void 0!==this._listeners[e]&&delete this._listeners[e]}},{key:"dispatchEvent",value:function(e){var t=this._listeners[e.type];if(void 0!==t){e.target=this;var n,i=q(t.slice(0));try{for(i.s();!(n=i.n()).done;)n.value.call(this,e)}catch(e){i.e(e)}finally{i.f()}}}}]),e}(),Kf=function(){y(n,Yf);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).needsTransformUpdate=!0,e}return A(n,[{key:"getChildren",value:function(){throw new Error("override function")}},{key:"getBoundingBox",value:function(){throw new Error("override function")}},{key:"isLoaded",value:function(){throw new Error("override function")}},{key:"isGeometryNode",value:function(){throw new Error("override function")}},{key:"isTreeNode",value:function(){throw new Error("override function")}},{key:"getLevel",value:function(){throw new Error("override function")}},{key:"getBoundingSphere",value:function(){throw new Error("override function")}}]),n}(),Zf=function(){y(t,K);var e=C(t);function t(){return te(this,t),e.call(this)}return A(t,[{key:"initialized",value:function(){return null!==this.root}}]),t}(),$f=A(function e(){te(this,e),this.url=null,this.octreeDir=null,this.spacing=0,this.boundingBox=null,this.root=null,this.nodes=null,this.pointAttributes=null,this.hierarchyStepSize=-1,this.loader=null}),em=function(){y(_,Kf);var r=C(_);function _(e,t,n){var i;return te(this,_),(i=r.call(this)).id=_.IDCount++,i.name=e,i.index=parseInt(e.charAt(e.length-1)),i.pcoGeometry=t,i.geometry=null,i.boundingBox=n,i.boundingSphere=n.getBoundingSphere(new gi),i.children={},i.numPoints=0,i.level=null,i.loaded=!1,i.oneTimeDisposeHandlers=[],i}return A(_,[{key:"isGeometryNode",value:function(){return!0}},{key:"getLevel",value:function(){return this.level}},{key:"isTreeNode",value:function(){return!1}},{key:"isLoaded",value:function(){return this.loaded}},{key:"getBoundingSphere",value:function(){return this.boundingSphere}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"getURL",value:function(){var e="",t=this.pcoGeometry.loader.version;return t.equalOrHigher("1.5")?e=this.pcoGeometry.octreeDir+"/"+this.getHierarchyPath()+"/"+this.name:(t.equalOrHigher("1.4")||t.upTo("1.3"))&&(e=this.pcoGeometry.octreeDir+"/"+this.name),e}},{key:"getHierarchyPath",value:function(){for(var e="r/",t=this.pcoGeometry.hierarchyStepSize,n=this.name.substr(1),i=Math.floor(n.length/t),r=0;r<i;r++)e+=n.substr(r*t,t)+"/";return e=e.slice(0,-1)}},{key:"addChild",value:function(e){(this.children[e.index]=e).parent=this}},{key:"load",value:function(){!0===this.loading||!0===this.loaded||Potree.numNodesLoading>=Potree.maxNodesLoading||(this.loading=!0,Potree.numNodesLoading++,this.pcoGeometry.loader.version.equalOrHigher("1.5")&&this.level%this.pcoGeometry.hierarchyStepSize==0&&this.hasChildren?this.loadHierachyThenPoints():this.loadPoints())}},{key:"loadPoints",value:function(){this.pcoGeometry.loader.load(this)}},{key:"loadHierachyThenPoints",value:function(){var E=this;if(E.level%E.pcoGeometry.hierarchyStepSize==0){var C=E.pcoGeometry.octreeDir+"/"+E.getHierarchyPath()+"/"+E.name+".hrc",B=uf.createXMLHttpRequest();B.open("GET",C,!0),B.responseType="arraybuffer",B.overrideMimeType("text/plain; charset=x-user-defined"),B.onreadystatechange=function(){if(4===B.readyState)if(200===B.status||0===B.status){for(var e=B.response,t=E,n=e,e=performance.now(),i=new DataView(n),r=[],a=i.getUint8(0),o=i.getUint32(1,!0),s=(t.numPoints=o,r.push({children:a,numPoints:o,name:t.name}),[]),l=5;0<r.length;){for(var u,c,h,d=r.shift(),p=1,f=0;f<8;f++)0!=(d.children&p)&&(u=d.name+f,c=i.getUint8(l),h=i.getUint32(l+1,!0),r.push({children:c,numPoints:h,name:u}),s.push({children:c,numPoints:h,name:u}),l+=5),p*=2;if(l===n.byteLength)break}for(var m={},v=(m[t.name]=t).pcoGeometry,g=0;g<s.length;g++){var A=s[g].name,y=s[g].numPoints,w=parseInt(A.charAt(A.length-1)),b=m[A.substring(0,A.length-1)],x=A.length-1,w=new _(A,v,ie.createChildAABB(b.boundingBox,w));w.level=x,w.numPoints=y,w.hasChildren=0<s[g].children,w.spacing=v.spacing/Math.pow(2,x),b.addChild(w),m[A]=w}5<(a=performance.now()-e)&&(o="duration: ".concat(a,"ms, numNodes: ").concat(s.length),console.log(o)),t.loadPoints()}else console.log("Failed to load file! HTTP status: "+B.status+", file: "+C),Potree.numNodesLoading--};try{B.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}}},{key:"getNumPoints",value:function(){return this.numPoints}},{key:"dispose",value:function(){if(this.geometry&&null!=this.parent){this.geometry.dispose(),this.geometry=null,this.loaded=!1,this.dispatchEvent({type:"dispose"});for(var e=0;e<this.oneTimeDisposeHandlers.length;e++)(0,this.oneTimeDisposeHandlers[e])();this.oneTimeDisposeHandlers=[]}}}]),_}(),tm={SPECTRAL:[[em.IDCount=0,new Me(.3686,.3098,.6353)],[.1,new Me(.1961,.5333,.7412)],[.2,new Me(.4,.7608,.6471)],[.3,new Me(.6706,.8667,.6431)],[.4,new Me(.902,.9608,.5961)],[.5,new Me(1,1,.749)],[.6,new Me(.9961,.8784,.5451)],[.7,new Me(.9922,.6824,.3804)],[.8,new Me(.9569,.4275,.2627)],[.9,new Me(.8353,.2431,.3098)],[1,new Me(.6196,.0039,.2588)]],PLASMA:[[0,new Me(.241,.015,.61)],[.1,new Me(.387,.001,.654)],[.2,new Me(.524,.025,.653)],[.3,new Me(.651,.125,.596)],[.4,new Me(.752,.227,.513)],[.5,new Me(.837,.329,.431)],[.6,new Me(.907,.435,.353)],[.7,new Me(.963,.554,.272)],[.8,new Me(.992,.681,.195)],[.9,new Me(.987,.822,.144)],[1,new Me(.94,.975,.131)]],YELLOW_GREEN:[[0,new Me(.1647,.2824,.3451)],[.1,new Me(.1338,.3555,.4227)],[.2,new Me(.061,.4319,.4864)],[.3,new Me(0,.5099,.5319)],[.4,new Me(0,.5881,.5569)],[.5,new Me(.137,.665,.5614)],[.6,new Me(.2906,.7395,.5477)],[.7,new Me(.4453,.8099,.5201)],[.8,new Me(.6102,.8748,.485)],[.9,new Me(.7883,.9323,.4514)],[1,new Me(.9804,.9804,.4314)]],VIRIDIS:[[0,new Me(.267,.005,.329)],[.1,new Me(.283,.141,.458)],[.2,new Me(.254,.265,.53)],[.3,new Me(.207,.372,.553)],[.4,new Me(.164,.471,.558)],[.5,new Me(.128,.567,.551)],[.6,new Me(.135,.659,.518)],[.7,new Me(.267,.749,.441)],[.8,new Me(.478,.821,.318)],[.9,new Me(.741,.873,.15)],[1,new Me(.993,.906,.144)]],INFERNO:[[0,new Me(.077,.042,.206)],[.1,new Me(.225,.036,.388)],[.2,new Me(.373,.074,.432)],[.3,new Me(.522,.128,.42)],[.4,new Me(.665,.182,.37)],[.5,new Me(.797,.255,.287)],[.6,new Me(.902,.364,.184)],[.7,new Me(.969,.516,.063)],[.8,new Me(.988,.683,.072)],[.9,new Me(.961,.859,.298)],[1,new Me(.988,.998,.645)]],GRAYSCALE:[[0,new Me(0,0,0)],[1,new Me(1,1,1)]],TURBO:[[0,new Me(.18995,.07176,.23217)],[.07,new Me(.25107,.25237,.63374)],[.13,new Me(.27628,.42118,.89123)],[.2,new Me(.25862,.57958,.99876)],[.27,new Me(.15844,.73551,.92305)],[.33,new Me(.09267,.86554,.7623)],[.4,new Me(.19659,.94901,.59466)],[.47,new Me(.42778,.99419,.38575)],[.53,new Me(.64362,.98999,.23356)],[.6,new Me(.80473,.92452,.20459)],[.67,new Me(.93301,.81236,.22667)],[.73,new Me(.99314,.67408,.20348)],[.8,new Me(.9836,.49291,.12849)],[.87,new Me(.92105,.31489,.05475)],[.93,new Me(.81608,.18462,.01809)],[1,new Me(.66449,.08436,.00424)]],RAINBOW:[[0,new Me(.278,0,.714)],[1/6,new Me(0,0,1)],[2/6,new Me(0,1,1)],[.5,new Me(0,1,0)],[4/6,new Me(1,1,0)],[5/6,new Me(1,.64,0)],[1,new Me(1,0,0)]],CONTOUR:[[0,new Me(0,0,0)],[.03,new Me(0,0,0)],[.04,new Me(1,1,1)],[1,new Me(1,1,1)]]},nm={"pointcloud_new.vs":'\nprecision highp float;\nprecision highp int;\n\n#define max_clip_polygons 8\n#define PI 3.141592653589793\n\n \n\n\n\n#if defined(usePanoMap) \n \n uniform samplerCube pano0Map; //随便设置一个samplerCube去使用都会让点云消失\n uniform samplerCube pano1Map;\n \n uniform float progress;\n uniform float easeInOutRatio;\n\n \n uniform vec3 pano0Position;\n uniform mat4 pano0Matrix; \n uniform vec3 pano1Position;\n uniform mat4 pano1Matrix;\n /*\n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n */\n#endif \n\n\n\n\n \n\n//--------------\n\n\n\n\n\nattribute vec3 position;\nattribute vec3 color;\nattribute float intensity;\nattribute float classification;\nattribute float returnNumber;\nattribute float numberOfReturns;\nattribute float pointSourceID;\nattribute vec4 indices; //每个点的index\nattribute float spacing;\nattribute float gpsTime;\nattribute vec3 normal;\nattribute float aExtra;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\n\n//uniform float uScreenWidth;\n//uniform float uScreenHeight;\nuniform vec2 resolution;\n\n\nuniform float fov;\nuniform float near;\nuniform float far;\n\n\n\n\nuniform bool uDebug;\n\nuniform bool uUseOrthographicCamera;\nuniform float uOrthoWidth;\nuniform float uOrthoHeight;\n\n#define CLIPTASK_NONE 0\n#define CLIPTASK_HIGHLIGHT 1\n#define CLIPTASK_SHOW_INSIDE 2\n#define CLIPTASK_SHOW_OUTSIDE 3\n\n#define CLIPMETHOD_INSIDE_ANY 0\n#define CLIPMETHOD_INSIDE_ALL 1\n\n//最外层裁剪(下载)\n#if defined(bigClipInBox)\n\tuniform mat4 clipBoxBig_in;\n#endif\n//内层裁剪\n#if defined(num_in_clipboxes) && num_in_clipboxes > 0\n\tuniform mat4 clipBoxes_in[num_in_clipboxes];\n#endif\n#if defined(num_out_clipboxes) && num_out_clipboxes > 0\n\tuniform mat4 clipBoxes_out[num_out_clipboxes];\n#endif\n\n\n#if defined(num_clipspheres) && num_clipspheres > 0\n\tuniform mat4 uClipSpheres[num_clipspheres];\n#endif\n\n \n#if defined(num_highlightBox) && num_highlightBox > 0\n uniform mat4 boxes_highlight[num_highlightBox]; \n#endif \n\t\t \n\nuniform float size;\nuniform float minSize;\nuniform float maxSize;\n\nuniform float uPCIndex;\nuniform float uOctreeSpacing;\nuniform float uNodeSpacing;\nuniform float uOctreeSize;\nuniform vec3 uBBSize;\nuniform float uLevel;\nuniform float uVNStart;\nuniform bool uIsLeafNode;\n\nuniform vec3 uColor;\nuniform float uOpacity; \nvarying float vOpacity; //add\n\n\n\nuniform vec2 elevationRange;\nuniform vec2 intensityRange;\n\nuniform vec2 uFilterReturnNumberRange;\nuniform vec2 uFilterNumberOfReturnsRange;\nuniform vec2 uFilterPointSourceIDClipRange;\nuniform vec2 uFilterGPSTimeClipRange;\n//uniform float ufilterByNormalThreshold; \n\nuniform float uGpsScale;\nuniform float uGpsOffset;\n\nuniform vec2 uNormalizedGpsBufferRange;\n\nuniform vec3 uIntensity_gbc;\nuniform vec3 uRGB_gbc;\nuniform vec3 uExtra_gbc;\n\nuniform float uTransition;\nuniform float wRGB;\nuniform float wIntensity;\nuniform float wElevation;\nuniform float wClassification;\nuniform float wReturnNumber;\nuniform float wSourceID;\n\nuniform vec2 uExtraNormalizedRange;\nuniform vec2 uExtraRange;\nuniform float uExtraScale;\nuniform float uExtraOffset;\n\nuniform vec3 uShadowColor;\n\nuniform sampler2D visibleNodes;\nuniform sampler2D gradient;\nuniform sampler2D classificationLUT;\n\n#if defined(color_type_matcap)\nuniform sampler2D matcapTextureUniform;\n#endif\nuniform bool backfaceCulling;\n\n#if defined(num_shadowmaps) && num_shadowmaps > 0\nuniform sampler2D uShadowMap[num_shadowmaps];\nuniform mat4 uShadowWorldView[num_shadowmaps];\nuniform mat4 uShadowProj[num_shadowmaps];\n#endif\n\n\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float \tvRadius;\nvarying float \tvPointSize;\n\n\nfloat round(float number){\n\treturn floor(number + 0.5);\n}\n\n// \n// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### \n// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### \n// \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nint numberOfOnes(int number, int index){\n\tint numOnes = 0;\n\tint tmp = 128;\n\tfor(int i = 7; i >= 0; i--){\n\t\t\n\t\tif(number >= tmp){\n\t\t\tnumber = number - tmp;\n\n\t\t\tif(i <= index){\n\t\t\t\tnumOnes++;\n\t\t\t}\n\t\t}\n\t\t\n\t\ttmp = tmp / 2;\n\t}\n\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(int number, int index){\n\n\t// weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0\n\tint powi = 1;\n\tif(index == 0){\n\t\tpowi = 1;\n\t}else if(index == 1){\n\t\tpowi = 2;\n\t}else if(index == 2){\n\t\tpowi = 4;\n\t}else if(index == 3){\n\t\tpowi = 8;\n\t}else if(index == 4){\n\t\tpowi = 16;\n\t}else if(index == 5){\n\t\tpowi = 32;\n\t}else if(index == 6){\n\t\tpowi = 64;\n\t}else if(index == 7){\n\t\tpowi = 128;\n\t}else{\n\t\treturn false;\n\t}\n\n\tint ndp = number / powi;\n\n\treturn mod(float(ndp), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){//////\n\t \n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(round(value.r * 255.0));\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\t//return value.a * 255.0;\n\n\t\t\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\n\n\t\t\treturn depth + lodOffset;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\nfloat getSpacing(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tint iOffset = int(uVNStart);\n\tfloat depth = uLevel;\n\tfloat spacing = uNodeSpacing;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\n\t\tint mask = int(round(value.r * 255.0));\n\t\tfloat spacingFactor = value.a;\n\n\t\tif(i > 0.0){\n\t\t\tspacing = spacing / (255.0 * spacingFactor);\n\t\t}\n\t\t\n\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\n\t\t\tint advanceB = int(round(value.b * 255.0));\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\n\t\t\tint advance = advanceG + advanceB + advanceChild;\n\n\t\t\tiOffset = iOffset + advance;\n\n\t\t\t//spacing = spacing / (255.0 * spacingFactor);\n\t\t\t//spacing = spacing / 3.0;\n\t\t\t\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn spacing;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn spacing;\n}\n\nfloat getPointSizeAttenuation(){\n\treturn pow(2.0, getLOD());\n}\n\n\n#endif\n\n\n// ---------------------\n// KD-TREE\n// ---------------------\n\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree)\n\nfloat getLOD(){\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = 0.0;\n\tfloat depth = 0.0;\n\t\t\n\t\t\n\tvec3 size = uBBSize;\t\n\tvec3 pos = position;\n\t\t\n\tfor(float i = 0.0; i <= 1000.0; i++){\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\t\n\t\tint children = int(value.r * 255.0);\n\t\tfloat next = value.g * 255.0;\n\t\tint split = int(value.b * 255.0);\n\t\t\n\t\tif(next == 0.0){\n\t\t \treturn depth;\n\t\t}\n\t\t\n\t\tvec3 splitv = vec3(0.0, 0.0, 0.0);\n\t\tif(split == 1){\n\t\t\tsplitv.x = 1.0;\n\t\t}else if(split == 2){\n\t\t \tsplitv.y = 1.0;\n\t\t}else if(split == 4){\n\t\t \tsplitv.z = 1.0;\n\t\t}\n\t\t\n\t\tiOffset = iOffset + next;\n\t\t\n\t\tfloat factor = length(pos * splitv / size);\n\t\tif(factor < 0.5){\n\t\t\t// left\n\t\tif(children == 0 || children == 2){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t}else{\n\t\t\t// right\n\t\t\tpos = pos - size * splitv * 0.5;\n\t\t\tif(children == 0 || children == 1){\n\t\t\t\treturn depth;\n\t\t\t}\n\t\t\tif(children == 3){\n\t\t\t\tiOffset = iOffset + 1.0;\n\t\t\t}\n\t\t}\n\t\tsize = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5);\n\t\t\n\t\tdepth++;\n\t}\n\t\t\n\t\t\n\treturn depth;\t\n}\n\nfloat getPointSizeAttenuation(){\n\treturn 0.5 * pow(1.3, getLOD());\n}\n\n#endif\n\n\n\n// \n// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ######## ## ######## ## ## ## ###### ###### \n// ######### ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \n// ## ## ## ## ## ## #### ######## ####### ## ######## ###### \n// \n\n\n\n// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/\nfloat getContrastFactor(float contrast){\n\treturn (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast);\n}\n\nvec3 getRGB(){\n\tvec3 rgb = color;\n\t\n\trgb = pow(rgb, vec3(uRGB_gbc.x));\n\trgb = rgb + uRGB_gbc.y;\n\trgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5;\n\trgb = clamp(rgb, 0.0, 1.0);\n\n\treturn rgb;\n}\n\nfloat getIntensity(){\n\tfloat w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x);\n\tw = pow(w, uIntensity_gbc.x);\n\tw = w + uIntensity_gbc.y;\n\tw = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5;\n\tw = clamp(w, 0.0, 1.0);\n\n\treturn w;\n}\n\nvec3 getGpsTime(){\n\n\tfloat w = (gpsTime + uGpsOffset) * uGpsScale;\n\n\n\tvec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\n\t// vec2 r = uNormalizedGpsBufferRange;\n\t// float w = gpsTime * (r.y - r.x) + r.x;\n\t// w = clamp(w, 0.0, 1.0);\n\t// vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn c;\n}\n\nvec3 getElevation(){\n\tvec4 world = modelMatrix * vec4( position, 1.0 );\n\tfloat w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x);\n\tvec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t\n\treturn cElevation;\n}\n\nvec4 getClassification(){\n\tvec2 uv = vec2(classification / 255.0, 0.5);\n\tvec4 classColor = texture2D(classificationLUT, uv);\n\t\n\treturn classColor;\n}\n\nvec3 getReturns(){\n\n\t// 0b 00_000_111\n\tfloat rn = mod(returnNumber, 8.0);\n\t// 0b 00_111_000\n\tfloat nr = mod(returnNumber / 8.0, 8.0);\n\n\tif(nr <= 1.0){\n\t\treturn vec3(1.0, 0.0, 0.0);\n\t}else{\n\t\treturn vec3(0.0, 1.0, 0.0);\n\t}\n\n\t// return vec3(nr / 4.0, 0.0, 0.0);\n\n\t// if(nr == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(rn == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(rn == nr){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n\n\t// if(numberOfReturns == 1.0){\n\t// \treturn vec3(1.0, 1.0, 0.0);\n\t// }else{\n\t// \tif(returnNumber == 1.0){\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\n\t// \t}else if(returnNumber == numberOfReturns){\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\n\t// \t}else{\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\n\t// \t}\n\t// }\n}\n\nvec3 getReturnNumber(){\n\tif(numberOfReturns == 1.0){\n\t\treturn vec3(1.0, 1.0, 0.0);\n\t}else{\n\t\tif(returnNumber == 1.0){\n\t\t\treturn vec3(1.0, 0.0, 0.0);\n\t\t}else if(returnNumber == numberOfReturns){\n\t\t\treturn vec3(0.0, 0.0, 1.0);\n\t\t}else{\n\t\t\treturn vec3(0.0, 1.0, 0.0);\n\t\t}\n\t}\n}\n\nvec3 getNumberOfReturns(){\n\tfloat value = numberOfReturns;\n\n\tfloat w = value / 6.0;\n\n\tvec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n\n\treturn color;\n}\n\nvec3 getSourceID(){\n\tfloat w = mod(pointSourceID, 10.0) / 10.0;\n\treturn texture2D(gradient, vec2(w,1.0 - w)).rgb;\n}\n\nvec3 getCompositeColor(){\n\tvec3 c;\n\tfloat w;\n\n\tc += wRGB * getRGB();\n\tw += wRGB;\n\t\n\tc += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0);\n\tw += wIntensity;\n\t\n\tc += wElevation * getElevation();\n\tw += wElevation;\n\t\n\tc += wReturnNumber * getReturnNumber();\n\tw += wReturnNumber;\n\t\n\tc += wSourceID * getSourceID();\n\tw += wSourceID;\n\t\n\tvec4 cl = wClassification * getClassification();\n\tc += cl.a * cl.rgb;\n\tw += wClassification * cl.a;\n\n\tc = c / w;\n\t\n\tif(w == 0.0){\n\t\t//c = color;\n\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t}\n\t\n\treturn c;\n}\n\n\nvec3 getNormal(){\n\t//vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.;\n\tvec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\treturn n_view;\n}\nbool applyBackfaceCulling() {\n\t// Black not facing vertices / Backface culling\n \n\tvec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. )));\n\tvec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\n\n\tif((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { \n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\n#if defined(color_type_matcap)\n// Matcap Material\nvec3 getMatcap(){ \n\tvec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); \n\tif(uUseOrthographicCamera) { \n\t\teye = vec3(0., 0., -1.);\n\t}\n\tvec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n;\n\tfloat m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. ));\n\tvec2 vN = r_en.xy / m + .5;\n\treturn texture2D(matcapTextureUniform, vN).rgb; \n}\n#endif\n\nvec3 getExtra(){\n\n\tfloat w = (aExtra + uExtraOffset) * uExtraScale;\n\tw = clamp(w, 0.0, 1.0);\n\n\tvec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\t// vec2 r = uExtraNormalizedRange;\n\n\t// float w = aExtra * (r.y - r.x) + r.x;\n\n\t// w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x);\n\n\t// w = clamp(w, 0.0, 1.0);\n\n\t// vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n\treturn color;\n}\n\nvec3 getColor(){\n\tvec3 color;\n\t\n\t#ifdef color_type_rgba\n\t\tcolor = getRGB();\n \n \n\t#elif defined color_type_height || defined color_type_elevation\n\t\tcolor = getElevation();\n\t#elif defined color_type_rgb_height\n\t\tvec3 cHeight = getElevation();\n\t\tcolor = (1.0 - uTransition) * getRGB() + uTransition * cHeight;\n\t#elif defined color_type_depth\n\t\tfloat linearDepth = gl_Position.w;\n\t\tfloat expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;\n\t\tcolor = vec3(linearDepth, expDepth, 0.0);\n\t\t//color = vec3(1.0, 0.5, 0.3);\n\t#elif defined color_type_intensity\n\t\tfloat w = getIntensity();\n\t\tcolor = vec3(w, w, w);\n\t#elif defined color_type_gps_time\n\t\tcolor = getGpsTime();\n\t#elif defined color_type_intensity_gradient\n\t\tfloat w = getIntensity();\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_color\n\t\tcolor = uColor;\n\t#elif defined color_type_level_of_detail\n\t\tfloat depth = getLOD();\n\t\tfloat w = depth / 10.0;\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\t#elif defined color_type_indices\n\t\tcolor = indices.rgb;\n\t#elif defined color_type_classification\n\t\tvec4 cl = getClassification(); \n\t\tcolor = cl.rgb;\n\t#elif defined color_type_return_number\n\t\tcolor = getReturnNumber();\n\t#elif defined color_type_returns\n\t\tcolor = getReturns();\n\t#elif defined color_type_number_of_returns\n\t\tcolor = getNumberOfReturns();\n\t#elif defined color_type_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_point_source_id\n\t\tcolor = getSourceID();\n\t#elif defined color_type_normal\n\t\tcolor = (modelMatrix * vec4(normal, 0.0)).xyz;\n\t#elif defined color_type_phong\n\t\tcolor = color;\n\t#elif defined color_type_composite\n\t\tcolor = getCompositeColor();\n\t#elif defined color_type_matcap\n\t\tcolor = getMatcap();\n\t#else \n\t\tcolor = getExtra();\n\t#endif\n\t\n\tif (backfaceCulling && applyBackfaceCulling()){\n //color = vec3(0.);\n }\n //applyBackfaceCulling直接返回false或者注释color = vec3(0.);都没问题\n\treturn color;\n}\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * resolution.y / (slope * vViewPosition.z);\n \n \n \n /*\n\tfloat scale = length(\n\t\tmodelViewMatrix * vec4(0, 0, 0, 1) - \n\t\tmodelViewMatrix * vec4(uOctreeSpacing, 0, 0, 1)\n\t) / uOctreeSpacing;\n \n\tprojFactor = projFactor * scale;\n\t*/\n \n \n\tfloat r = uOctreeSpacing * 1.7;\n\t//vRadius = r;\n \n \n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\t//pointSize = size * 100.0; //加个乘数\n \n pointSize = size / uOrthoWidth * resolution.x; //改成近似adaptive_point_size根据窗口缩放\n \n\t\t}else{ //近大远小,模拟真实mesh,边缘放大\n\t\t\t//pointSize = size * spacing * projFactor; //spacing是attribute 为空 如果有这个值就能更自适应填补\n //pointSize = size * uOctreeSpacing * projFactor / 18.0; //直接用cloud的spacing里,不过因为都一样所以可能没有什么意义\n\t\t\t//pointSize = pointSize * projFactor;\n pointSize = size * projFactor ;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * resolution.x; //uScreenWidth;\n\t\t} else {\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n} \n\n\nbool insideBox(mat4 clipBox){//add\n vec4 clipPosition = clipBox * modelMatrix * vec4( position, 1.0 );\n bool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5;\n inside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5;\n inside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5;\n\n return inside;\n}\n\n\nvoid doClipping(){\n\n\t{\n\t\tvec4 cl = getClassification(); \n\t\tif(cl.a == 0.0){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\n\t#if defined(clip_return_number_enabled)\n\t{ // return number filter\n\t\tvec2 range = uFilterReturnNumberRange;\n\t\tif(returnNumber < range.x || returnNumber > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_number_of_returns_enabled)\n\t{ // number of return filter\n\t\tvec2 range = uFilterNumberOfReturnsRange;\n\t\tif(numberOfReturns < range.x || numberOfReturns > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_gps_enabled)\n\t{ // GPS time filter\n\t\tfloat time = (gpsTime + uGpsOffset) * uGpsScale;\n\t\tvec2 range = uFilterGPSTimeClipRange;\n\n\t\tif(time < range.x || time > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t#if defined(clip_point_source_id_enabled)\n\t{ // point source id filter\n\t\tvec2 range = uFilterPointSourceIDClipRange;\n\t\tif(pointSourceID < range.x || pointSourceID > range.y){\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\n\t\t\t\n\t\t\treturn;\n\t\t}\n\t}\n\t#endif\n\n\t \n\n\n //总共三种box : 最外层可见、内层可见和不可见(外层可见和内层可见是交集,内层可见和内层不可见是并集)\n \n #if defined(bigClipInBox) \n if(!insideBox(clipBoxBig_in)){ \n gl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n return;;\n } \n #endif \n \n #if defined(num_in_clipboxes) && num_in_clipboxes > 0\n //当有可见box时,需要在任一可见box内才可见\n bool visi1 = false;\n\t\tfor(int i = 0; i < num_in_clipboxes; i++){ \n if(insideBox(clipBoxes_in[i])){\n visi1 = true;\n break;\n } \n\t\t}\n if(!visi1){\n gl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n return;\n }\n\t#endif\n\n\n #if defined(num_out_clipboxes) && num_out_clipboxes > 0\n //当有不可见box时,不在所有不可见box内才可见\n bool visi2 = true;\n\t\tfor(int i = 0; i < num_out_clipboxes; i++){ \n if(insideBox(clipBoxes_out[i])){\n visi2 = false;\n break;\n } \n\t\t}\n if(!visi2){\n gl_Position = vec4(100.0, 100.0, 100.0, 1.0);\n return;\n }\n\t#endif \n \n \n #if defined(num_highlightBox) && num_highlightBox > 0\n //当有高亮box时,需要在任一可见高亮内都高宽\n bool highlight = false;\n\t\tfor(int i = 0; i < num_highlightBox; i++){ \n if(insideBox(boxes_highlight[i])){\n highlight = true;\n break;\n } \n\t\t}\n if(highlight){\n vColor.r += 0.5; \n }\n\t#endif\n \n}\n\n\n\n// \n// ## ## ### #### ## ## \n// ### ### ## ## ## ### ## \n// #### #### ## ## ## #### ## \n// ## ### ## ## ## ## ## ## ## \n// ## ## ######### ## ## #### \n// ## ## ## ## ## ## ### \n// ## ## ## ## #### ## ## \n//\n\n\nvec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n} \n\nvec3 transformAxis( vec3 direction ) //navvis->4dkk\n{\n float y = direction.y;\n direction.y = direction.z;\n direction.z = -y;\n return direction;\n}\n\nvoid main() {\n //bool filtered_by_normal = false; \n float normalZ = 0.0;\n\n\n\n #ifdef use_filter_by_normal\n /*if(abs(getNormal().z) > 0.4) { //ufilterByNormalThreshold 暂定 3\n\t\t\t// Move point outside clip space space to discard it.\n\t\t\t//gl_Position = vec4(0.0, 0.0, 2.0, 1.0); //gl_Position的可视区域是 x,y,z都是[-1,1] \n //return;\n //filtered_by_normal = true; //标记一下。不直接不绘制,因为有的法线都是垂直向上\n \n\t\t}*/\n \n normalZ = abs(getNormal().z);\n #endif\n \n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0 );\n vViewPosition = mvPosition.xyz;\n gl_Position = projectionMatrix * mvPosition;\n vLogDepth = log2(-mvPosition.z);\n \n \n \n // COLOR\n //加-------------------\n #if defined(usePanoMap)\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n \n vec3 positionLocalToPanoCenter0 = worldPosition.xyz - pano0Position;\n vec3 vWorldPosition0 = (vec4(positionLocalToPanoCenter0, 1.0) * pano0Matrix).xyz; \n vWorldPosition0.x *= -1.0;\n vWorldPosition0 = transformAxis(vWorldPosition0);\n \n vec3 positionLocalToPanoCenter1 = worldPosition.xyz - pano1Position;\n vec3 vWorldPosition1 = (vec4(positionLocalToPanoCenter1, 1.0) * pano1Matrix).xyz; \n vWorldPosition1.x *= -1.0;\n vWorldPosition1 = transformAxis(vWorldPosition1);\n \n /*\n vec2 samplerCoord0 = getSamplerCoord(vWorldPosition0.xyz);\n vec2 samplerCoord1 = getSamplerCoord(vWorldPosition1.xyz); \n vec4 colorFromPano0 = texture2D(pano0Map,samplerCoord0);\n vec4 colorFromPano1 = texture2D(pano1Map,samplerCoord1);\n */\n \n \n \n \n vec4 colorFromPano0=textureCube(pano0Map,vWorldPosition0.xyz);\n vec4 colorFromPano1=textureCube(pano1Map,vWorldPosition1.xyz);\n\n vColor = mix(colorFromPano0,colorFromPano1,progress).xyz; \n\n \n //float easeInOutRatio = 0.0; //缓冲,渐变点云到贴图的颜色 \n if(progress < easeInOutRatio){\n float easeProgress = (easeInOutRatio - progress) / easeInOutRatio;\n vec3 vColor1 = getColor();\n vColor = mix(vColor,vColor1,easeProgress); \n }else if(progress > 1.0 - easeInOutRatio){ \n float easeProgress = (progress - (1.0 - easeInOutRatio) ) / easeInOutRatio;\n vec3 vColor1 = getColor();\n vColor = mix(vColor,vColor1,easeProgress); \n }\n \n\n #else\n \n vColor = getColor();\n \n #endif\n \n \n //------------------- \n \n #ifdef attenuated_opacity \n //zoom不会改变z 所以这并不是用在分屏时候的\n //vOpacity = uOpacity * exp(-length(-mvPosition.xyz) / 1000.0); // e为底的指数函数 opacityAttenuation = 1000\n vOpacity = uOpacity * exp(gl_Position.z/50.0); \n vOpacity = clamp(vOpacity, 0.001, 1.0); \n \n #else\n vOpacity = uOpacity; \n \n #endif\n \n vOpacity *= max(0.1, (1.0 - normalZ));//垂直朝相机时降低透明度 \n\n // POINT SIZE\n float pointSize = getPointSize();\n \n gl_PointSize = pointSize;\n vPointSize = pointSize;\n\n \n \n \n \n\n // only for "replacing" approaches\n // if(getLOD() != uLevel){\n // \tgl_Position = vec4(10.0, 10.0, 10.0, 1.0);\n // }\n\n\n #if defined hq_depth_pass\n float originalDepth = gl_Position.w;\n float adjustedDepth = originalDepth + 2.0 * vRadius;\n float adjust = adjustedDepth / originalDepth;\n\n mvPosition.xyz = mvPosition.xyz * adjust;\n gl_Position = projectionMatrix * mvPosition;\n #endif\n\n\n // CLIPPING\n doClipping();\n\n #if defined(num_clipspheres) && num_clipspheres > 0\n for(int i = 0; i < num_clipspheres; i++){\n vec4 sphereLocal = uClipSpheres[i] * mvPosition;\n\n float distance = length(sphereLocal.xyz);\n\n if(distance < 1.0){\n float w = distance;\n vec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\n \n vColor = cGradient;\n //vColor = cGradient * 0.7 + vColor * 0.3;\n }\n }\n #endif\n\n #if defined(num_shadowmaps) && num_shadowmaps > 0\n\n const float sm_near = 0.1;\n const float sm_far = 10000.0;\n\n for(int i = 0; i < num_shadowmaps; i++){\n vec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz;\n float distanceToLight = abs(viewPos.z);\n \n vec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1);\n vec3 nc = projPos.xyz / projPos.w;\n \n float u = nc.x * 0.5 + 0.5;\n float v = nc.y * 0.5 + 0.5;\n\n vec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5;\n vec2 sampleLocations[9];\n sampleLocations[0] = vec2(0.0, 0.0);\n sampleLocations[1] = sampleStep;\n sampleLocations[2] = -sampleStep;\n sampleLocations[3] = vec2(sampleStep.x, -sampleStep.y);\n sampleLocations[4] = vec2(-sampleStep.x, sampleStep.y);\n\n sampleLocations[5] = vec2(0.0, sampleStep.y);\n sampleLocations[6] = vec2(0.0, -sampleStep.y);\n sampleLocations[7] = vec2(sampleStep.x, 0.0);\n sampleLocations[8] = vec2(-sampleStep.x, 0.0);\n\n float visibleSamples = 0.0;\n float numSamples = 0.0;\n\n float bias = vRadius * 2.0;\n\n for(int j = 0; j < 9; j++){\n vec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]);\n\n float linearDepthFromSM = depthMapValue.x + bias;\n float linearDepthFromViewer = distanceToLight;\n\n if(linearDepthFromSM > linearDepthFromViewer){\n visibleSamples += 1.0;\n }\n\n numSamples += 1.0;\n }\n\n float visibility = visibleSamples / numSamples;\n\n if(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){\n //vColor = vec3(0.0, 0.0, 0.2);\n }else{\n //vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility);\n vColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility);\n }\n\n\n }\n\n #endif\n\n \n \n}\n',"pointcloud_new.fs":"\n#if defined paraboloid_point_shape\n\t#extension GL_EXT_frag_depth : enable\n#endif\n#define PI 3.141592653589793\n\n\n\nprecision highp float;\nprecision highp int;\n\n/*\n#if defined(usePanoMap) \n \n uniform samplerCube pano0Map; //随便设置一个samplerCube去使用都会让点云消失\n uniform samplerCube pano1Map;\n \n uniform float progress;\n uniform float easeInOutRatio;\n\n \n uniform vec3 pano0Position;\n uniform mat4 pano0Matrix; \n uniform vec3 pano1Position;\n uniform mat4 pano1Matrix;\n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n\n#endif \n*/\n\n\n\n//------------\n\n\n\n\n\nuniform mat4 viewMatrix;\nuniform mat4 uViewInv;\nuniform mat4 uProjInv;\nuniform vec3 cameraPosition;\n\n\nuniform mat4 projectionMatrix;\n//uniform float uOpacity;\nvarying float vOpacity; //add\n\nuniform float blendHardness;\nuniform float blendDepthSupplement;\nuniform float fov;\nuniform float uSpacing;\nuniform float near;\nuniform float far;\nuniform float uPCIndex;\nuniform float uScreenWidth;\nuniform float uScreenHeight;\n\nvarying vec3\tvColor;\nvarying float\tvLogDepth;\nvarying vec3\tvViewPosition;\nvarying float\tvRadius;\nvarying float \tvPointSize;\nvarying vec3 \tvPosition;\n\n\nfloat specularStrength = 1.0;\n\n\nvec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n} \n\n\n\n\nvoid main() {\n\n vec3 color = vColor; \n\t \n \n /*#if defined(usePanoMap) //加 经测试,即使全部写在fragment里也是无论pointsize多大都是一个点一个颜色,所以干脆写在vectex里\n \n \n vec4 colorFromPano0=textureCube(pano0Map,vWorldPosition0.xyz);\n vec4 colorFromPano1=textureCube(pano1Map,vWorldPosition1.xyz);\n \n color = mix(colorFromPano0,colorFromPano1,progress).xyz; \n \n \n //float easeInOutRatio = 0.0; //缓冲,渐变点云到贴图的颜色 \n if(progress < easeInOutRatio){\n float easeProgress = (easeInOutRatio - progress) / easeInOutRatio; \n color = mix(color,vColor,easeProgress); \n }else if(progress > 1.0 - easeInOutRatio){ \n float easeProgress = (progress - (1.0 - easeInOutRatio) ) / easeInOutRatio; \n color = mix(color,vColor,easeProgress); \n }\n \n \n #else \n color = vColor;\n #endif*/\n \n \n \n\tfloat depth = gl_FragCoord.z;\n\n\t#if defined(circle_point_shape) || defined(paraboloid_point_shape) \n\t\tfloat u = 2.0 * gl_PointCoord.x - 1.0;\n\t\tfloat v = 2.0 * gl_PointCoord.y - 1.0;\n\t#endif\n\t\n\t#if defined(circle_point_shape) \n\t\tfloat cc = u*u + v*v;\n\t\tif(cc > 1.0){\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\t\n\n \n\n\t\n \n #if defined color_type_indices //pick point recognize\n\t\tgl_FragColor = vec4(color, uPCIndex / 255.0); //uPCIndex : node Index\n\t#else\n\t\tgl_FragColor = vec4(color, vOpacity);\n\t#endif\n \n \n \n \n \n \n \n \n\n\t#if defined paraboloid_point_shape\n\t\tfloat wi = 0.0 - ( u*u + v*v);\n\t\tvec4 pos = vec4(vViewPosition, 1.0);\n\t\tpos.z += wi * vRadius;\n\t\tfloat linearDepth = -pos.z;\n\t\tpos = projectionMatrix * pos;\n\t\tpos = pos / pos.w;\n\t\tfloat expDepth = pos.z;\n\t\tdepth = (pos.z + 1.0) / 2.0;\n\t\tgl_FragDepthEXT = depth;\n\t\t\n\t\t#if defined(color_type_depth)\n\t\t\tcolor.r = linearDepth;\n\t\t\tcolor.g = expDepth;\n\t\t#endif\n\t\t\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = log2(linearDepth);\n\t\t#endif\n\t\t\n\t#else\n\t\t#if defined(use_edl)\n\t\t\tgl_FragColor.a = vLogDepth;\n\t\t#endif\n\t#endif\n\n\t#if defined(weighted_splats)\n\t\tfloat distance = 2.0 * length(gl_PointCoord.xy - 0.5);\n\t\tfloat weight = max(0.0, 1.0 - distance);\n\t\tweight = pow(weight, 1.5);\n\n\t\tgl_FragColor.a = weight;\n\t\tgl_FragColor.xyz = gl_FragColor.xyz * weight;\n\t#endif\n\n\t//gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0);\n\t\n}\n\n\n","pointcloud_sm.vs":"\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec3 color;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\n\nuniform float uScreenWidth;\nuniform float uScreenHeight;\nuniform float near;\nuniform float far;\n\nuniform float uSpacing;\nuniform float uOctreeSize;\nuniform float uLevel;\nuniform float uVNStart;\n\nuniform sampler2D visibleNodes;\n\nvarying float vLinearDepth;\nvarying vec3 vColor;\n\n#define PI 3.141592653589793\n\n\n\n// ---------------------\n// OCTREE\n// ---------------------\n\n#if defined(adaptive_point_size)\n/**\n * number of 1-bits up to inclusive index position\n * number is treated as if it were an integer in the range 0-255\n *\n */\nfloat numberOfOnes(float number, float index){\n\tfloat tmp = mod(number, pow(2.0, index + 1.0));\n\tfloat numOnes = 0.0;\n\tfor(float i = 0.0; i < 8.0; i++){\n\t\tif(mod(tmp, 2.0) != 0.0){\n\t\t\tnumOnes++;\n\t\t}\n\t\ttmp = floor(tmp / 2.0);\n\t}\n\treturn numOnes;\n}\n\n\n/**\n * checks whether the bit at index is 1\n * number is treated as if it were an integer in the range 0-255\n *\n */\nbool isBitSet(float number, float index){\n\treturn mod(floor(number / pow(2.0, index)), 2.0) != 0.0;\n}\n\n\n/**\n * find the LOD at the point position\n */\nfloat getLOD(){\n\t\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\n\tfloat iOffset = uVNStart;\n\tfloat depth = uLevel;\n\tfor(float i = 0.0; i <= 30.0; i++){\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\n\t\t\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\n\t\tindex3d = floor(index3d + 0.5);\n\t\tfloat index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z;\n\t\t\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\n\t\tfloat mask = value.r * 255.0;\n\t\tif(isBitSet(mask, index)){\n\t\t\t// there are more visible child nodes at this position\n\t\t\tiOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0);\n\t\t\tdepth++;\n\t\t}else{\n\t\t\t// no more visible child nodes at this position\n\t\t\treturn depth;\n\t\t}\n\t\t\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\n\t}\n\t\t\n\treturn depth;\n}\n\n#endif\n\nfloat getPointSize(){\n\tfloat pointSize = 1.0;\n\t\n\tfloat slope = tan(fov / 2.0);\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\n\t\n\tfloat r = uOctreeSpacing * 1.5;\n\tvRadius = r;\n\t#if defined fixed_point_size\n\t\tpointSize = size;\n\t#elif defined attenuated_point_size\n\t\tif(uUseOrthographicCamera){\n\t\t\tpointSize = size;\t\t\t\n\t\t}else{\n\t\t\tpointSize = pointSize * projFactor;\n\t\t}\n\t#elif defined adaptive_point_size\n\t\tif(uUseOrthographicCamera) {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\n\t\t} else {\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\n\t\t\tpointSize = worldSpaceSize * projFactor;\n\t\t}\n\t#endif\n\n\tpointSize = max(minSize, pointSize);\n\tpointSize = min(maxSize, pointSize);\n\t\n\tvRadius = pointSize / projFactor;\n\n\treturn pointSize;\n}\n\n\nvoid main() {\n\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tvLinearDepth = gl_Position.w;\n\n\tfloat pointSize = getPointSize();\n\tgl_PointSize = pointSize;\n\n}\n","pointcloud_sm.fs":"\nprecision mediump float;\nprecision mediump int;\n\nvarying vec3 vColor;\nvarying float vLinearDepth;\n\nvoid main() {\n\n\t//gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n\t//gl_FragColor = vec4(vColor, 1.0);\n\t//gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0);\n\tgl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0);\n\t\n}\n\n\n","normalize.vs":"\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}","normalize.fs":"\n#extension GL_EXT_frag_depth : enable\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uDepthMap;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\t\n\tif(depth >= 1.0){\n\t\tdiscard;\n\t}\n\n\tgl_FragColor = vec4(depth, 1.0, 0.0, 1.0);\n\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\t\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\t\n\tgl_FragDepthEXT = depth;\n\n\n}","normalize_and_edl.fs":"\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\nuniform sampler2D uWeightMap;\nuniform sampler2D uEDLMap;\nuniform sampler2D uDepthMap;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\n\nvarying vec2 vUv;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t\n\t\tfloat neighbourDepth = texture2D(uEDLMap, uvNeighbor).a;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\tif(depth == 0.0){\n\t\t\t\tsum += 100.0;\n\t\t\t}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\n\t\t\t}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main() {\n\n\tfloat edlDepth = texture2D(uEDLMap, vUv).a;\n\tfloat res = response(edlDepth);\n\tfloat shade = exp(-res * 300.0 * edlStrength);\n\n\tfloat depth = texture2D(uDepthMap, vUv).r;\n\tif(depth >= 1.0 && res == 0.0){\n\t\tdiscard;\n\t}\n\t\n\tvec4 color = texture2D(uWeightMap, vUv); \n\tcolor = color / color.w;\n\tcolor = color * shade;\n\n\tgl_FragColor = vec4(color.xyz, 1.0); \n\n\tgl_FragDepthEXT = depth;\n}","edl_new.vs":"\nprecision mediump float;\nprecision mediump int;\n\nattribute vec3 position;\nattribute vec2 uv;\n\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4(position,1.0);\n\n\tgl_Position = projectionMatrix * mvPosition;\n}","edl_new.fs":"\n#extension GL_EXT_frag_depth : enable\n\n// \n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\n//\n\nprecision mediump float;\nprecision mediump int;\n\n//uniform float screenWidth;\n//uniform float screenHeight;\nuniform vec2 resolution;\n\n\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\nuniform float edlStrength;\nuniform float radius;\nuniform float opacity;\n\n//uniform float uNear;\n//uniform float uFar;\n\nuniform mat4 uProj;\n\nuniform sampler2D uEDLColor;\nuniform sampler2D uEDLDepth;\n\nvarying vec2 vUv;\n\nuniform int useEDL;\n\nfloat response(float depth){\n\tvec2 uvRadius = radius / resolution; //vec2(screenWidth, screenHeight);\n\t\n\tfloat sum = 0.0;\n\t\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\n\t\t//获取周围八个格子的值\n\t\tfloat neighbourDepth = texture2D(uEDLColor, uvNeighbor).a;\n\t\tneighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth;\n\n\t\tif(neighbourDepth != 0.0){\n\t\t\t //if(depth == 0.0){\n\t\t\t //\tsum += 100.0;\n\t\t\t //}else{\n\t\t\t\tsum += max(0.0, depth - neighbourDepth); //获取差值\n\t\t\t //}\n\t\t}\n\t}\n\t\n\treturn sum / float(NEIGHBOUR_COUNT);\n}\n\nvoid main(){\n\tvec4 cEDL = texture2D(uEDLColor, vUv);\n\t\n\tfloat depth = cEDL.a;\n\tdepth = (depth == 1.0) ? 0.0 : depth;\n \n if(depth == 0.0){ //去掉这句就能在无点云像素的地方渲染outline,但会遮住其他mesh\n\t\tdiscard;\n\t}\n \n \n if(useEDL == 1){\n float res = response(depth); \n float shade = exp(-res * 300.0 * edlStrength); //自然常数e为底的指数函数 \n const float min = 0.2; //add 使边缘色变浅 范围从0-1 变为min-1\n shade = shade * (1.0-min) + min;\n gl_FragColor = vec4(cEDL.rgb * shade, opacity); \n }else{//加 不改颜色的情况 \n gl_FragColor = vec4(cEDL.rgb, opacity);\n } \n //注意,edlStrength越强,在相同depth的叠放的点云间的轮廓线颜色越深\n //作用:勾勒边缘,强化深度差异,模拟阴影,加强结构立体感\n \n { // write regular hyperbolic depth values to depth buffer 修改深度\n float dl = pow(2.0, depth);\n\n vec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0);\n float pz = dp.z / dp.w;\n float fragDepth = (pz + 1.0) / 2.0;\n\n gl_FragDepthEXT = fragDepth;\n }\n\t\n}\n","blur.vs":"\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n}","blur.fs":"\nuniform mat4 projectionMatrix;\n\nuniform float screenWidth;\nuniform float screenHeight;\nuniform float near;\nuniform float far;\n\nuniform sampler2D map;\n\nvarying vec2 vUv;\n\nvoid main() {\n\n\tfloat dx = 1.0 / screenWidth;\n\tfloat dy = 1.0 / screenHeight;\n\n\tvec3 color = vec3(0.0, 0.0, 0.0);\n\tcolor += texture2D(map, vUv + vec2(-dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, -dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, 0)).rgb;\n\tcolor += texture2D(map, vUv + vec2(-dx, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2( 0, dy)).rgb;\n\tcolor += texture2D(map, vUv + vec2(+dx, dy)).rgb;\n\n\tcolor = color / 9.0;\n\t\n\tgl_FragColor = vec4(color, 1.0);\n}","depthBasic.vs":"\n \n\nvarying vec2 vUv;\nvoid main() {\n \n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n} \n ","depthBasic.fs":"varying vec2 vUv;\nuniform float opacity;\n\nuniform vec3 baseColor;\nuniform vec3 backColor;\nuniform float occlusionDistance;\nuniform float clipDistance;\nuniform float maxClipFactor;\n\n\n#if defined use_map\n uniform sampler2D map; \n#endif\n \n#if defined(GL_EXT_frag_depth) && defined(useDepth) \n //似乎通过gl.getExtension('EXT_frag_depth')得到的GL_EXT_frag_depth\n \n uniform sampler2D depthTexture;\n uniform float nearPlane;\n uniform float farPlane; \n uniform vec2 resolution;\n uniform vec2 viewportOffset; // viewportOffset 范围从0-整个画布的像素\n \n float convertToLinear(float zValue)\n {\n float z = zValue * 2.0 - 1.0;\n return (2.0 * nearPlane * farPlane) / (farPlane + nearPlane - z * (farPlane - nearPlane));\n }\n#endif\n \nvoid main() {\n \n \n vec4 color = vec4(baseColor, opacity);\n \n \n \n #if defined(GL_EXT_frag_depth) && defined(useDepth)\n // mixFactor and clipFactor define the color mixing proportion between the states of\n // full visibility and occluded visibility\n // and\n // full visibility and total invisibility\n \n float mixFactor = 0.0;\n float clipFactor = 0.0;\n \n \n // The linear depth value of the current fragment\n float fragDepth = convertToLinear(gl_FragCoord.z);\n\n // The coordinates of the current fragment in the depth texture\n vec2 depthTxtCoords = vec2(gl_FragCoord.x-viewportOffset.x, gl_FragCoord.y - viewportOffset.y) / resolution;\n //gl_FragCoord大小为 viewport client大小 \n \n // The linear depth value of the pixel occupied by this fragment in the depth buffer\n float textureDepth = convertToLinear(texture2D(depthTexture, depthTxtCoords).r);\n\n // The difference between the two depths\n float delta = fragDepth - textureDepth;\n\n if (delta > 0.0)//差距\n {\n // occlusionDistance and clipDistance define the width of the respective zones and\n // mixFactor and clipFactor express the interpolation between the two colors depending on the position\n // of the current fragment withing those zones.\n \n \n mixFactor = clamp(delta / occlusionDistance, 0.0, 1.0);\n clipFactor = clamp(delta / clipDistance, 0.0, maxClipFactor);\n }\n \n // If the fragment is totally transparent, don't bother drawing it\n if (clipFactor == 1.0)\n {\n discard;\n }else{\n \n #if defined use_map\n color = texture2D(map, vUv) * color; \n #endif\n \n \n \n color = vec4(mix(color.rgb, backColor, mixFactor), color.a * (1.0 - clipFactor));\n }\n \n #else\n #if defined use_map\n color = texture2D(map, vUv) * color;\n #endif \n #endif\n \n gl_FragColor = color;\n \n}\n","copyCubeMap.vs":"varying vec3 vWorldPos;\nvec3 transformAxis( vec3 direction ) //navvis->4dkk\n{\n float y = direction.y;\n direction.y = direction.z;\n direction.z = -y;\n return direction;\n}\nvoid main() {\n vWorldPos = vec3(-position.x, -position.y, position.z);\n //vWorldPos = transformAxis(vWorldPos);\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n} \n ","copyCubeMap.fs":"varying vec3 vWorldPos;\nuniform float alpha;\nuniform samplerCube tDiffuse;\n\n\nvoid main() {\n vec4 texColor = textureCube(tDiffuse, vWorldPos);\n gl_FragColor = vec4(texColor.rgb, texColor.a * alpha);\n} \n ","basicTextured.vs":"varying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n} \n ","basicTextured.fs":"varying vec2 vUv;\nuniform float opacity;\nuniform sampler2D map;\n\n\nvoid main() {\n vec4 texColor = texture2D(map, vUv);\n gl_FragColor = vec4(texColor.rgb, texColor.a * opacity);\n}\n","skybox.vs":"uniform mat4 matrix; \nvarying vec3 vWorldPosition;\n\n\n\nvoid main() \n{ \n \n vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz ; // - cameraPosition; \n vWorldPosition = (vec4(vWorldPosition, 1.0) * matrix).xyz;\n vWorldPosition.x *= -1.0;\n\n\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}","skybox.fs":"varying vec3 vWorldPosition;\nuniform sampler2D tDiffuse; \n\n#define PI 3.141592653 \n\n/*vec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,direction.z)/(PI*2.0)+0.5;\n float ty=acos(direction.y)/PI;\n\n return vec2(tx,ty);\n}*/\nvec2 getSamplerCoord( vec3 direction ) \n{\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n} \nvoid main() \n{\n vec2 samplerCoord = getSamplerCoord(vWorldPosition);\n vec4 color = texture2D(tDiffuse, samplerCoord);\n //gl_FragColor = RGBEToLinear( color ); //对于hdr必须加这一句,否则效果很奇怪。copy自meshBasicMaterial里的mat_fragment的mapTexelToLinear函数,只要有map就会使用该函数\n gl_FragColor = color;\n //#include <tonemapping_fragment>\n //////#include <encodings_fragment>\n\n} \n"},im={DEFAULT:{0:{visible:!0,name:"never classified",color:[.5,.5,.5,1]},1:{visible:!0,name:"unclassified",color:[.5,.5,.5,1]},2:{visible:!0,name:"ground",color:[.63,.32,.18,1]},3:{visible:!0,name:"low vegetation",color:[0,1,0,1]},4:{visible:!0,name:"medium vegetation",color:[0,.8,0,1]},5:{visible:!0,name:"high vegetation",color:[0,.6,0,1]},6:{visible:!0,name:"building",color:[1,.66,0,1]},7:{visible:!0,name:"low point(noise)",color:[1,0,1,1]},8:{visible:!0,name:"key-point",color:[1,0,0,1]},9:{visible:!0,name:"water",color:[0,0,1,1]},12:{visible:!0,name:"overlap",color:[1,1,0,1]},DEFAULT:{visible:!0,name:"default",color:[.3,.6,.6,.5]}}},rm=(Object.defineProperty(im,"RANDOM",{get:function(){for(var e={},t=0;t<=255;t++)e[t]=new Kn(Math.random(),Math.random(),Math.random());return e.DEFAULT=new Kn(Math.random(),Math.random(),Math.random()),e}}),function(){function r(e){te(this,r);for(var t=0,n=Object.keys(e);t<n.length;t++){var i=n[t];this[i]=e[i]}}return A(r,[{key:"inspect",value:function(){return"Enum(".concat(this.name,": ").concat(this.value,")")}}]),r}()),sd=function(){function a(e){te(this,a),this.object=e;for(var t=0,n=Object.keys(e);t<n.length;t++){var i=n[t],r=e[i];"object"===v(r)?r.name=i:r={name:i,value:r},this[i]=new rm(r)}}return A(a,[{key:"fromValue",value:function(e){for(var t=0,n=Object.keys(this.object);t<n.length;t++){var i=n[t];if(this[i].value===e)return this[i]}throw new Error("No enum for value: ".concat(e))}}]),a}(),am={ORTHOGRAPHIC:0,PERSPECTIVE:1,VR:2},om={NONE:0,HIGHLIGHT:1,SHOW_INSIDE:2,SHOW_OUTSIDE:3},sm={INSIDE_ANY:0,INSIDE_ALL:1},lm={CLAMP:0,REPEAT:1,MIRRORED_REPEAT:2},um={LEFT:1,RIGHT:2,MIDDLE:4},cm={FIXED:0,ATTENUATED:1,ADAPTIVE:2},hm={SQUARE:0,CIRCLE:1,PARABOLOID:2},dm={OCTREE:0,KDTREE:1},pm={METER:{code:"m",unitspermeter:1},FEET:{code:"ft",unitspermeter:3.28084},INCH:{code:"″",unitspermeter:39.3701}},fm=function(){y(s,nc);var o=C(s);function s(){function e(e,t){return void 0!==e?e:t}var t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=(te(this,s),(t=o.call(this)).visibleNodesTexture=ie.generateDataTexture(2048,1,new Me(16777215)),t.visibleNodesTexture.minFilter=ut,t.visibleNodesTexture.magFilter=ut,e(n.size,1)),r=e(n.minSize,2),a=e(n.maxSize,50),n=e(n.treeType,dm.OCTREE),n=(t._pointSizeType=cm.FIXED,t._shape=hm.SQUARE,t._useClipBox=!1,t.clipBoxes=[],t.clipPolygons=[],t._weighted=!1,t._gradient=tm.SPECTRAL,t.gradientTexture=s.generateGradientTexture(t._gradient),t._matcap="matcap.jpg",t.matcapTexture=s.generateMatcapTexture(t._matcap),t.lights=!1,t.fog=!1,t._treeType=n,t._useEDL=!1,t.defines=new Map,t.ranges=new Map,t._activeAttributeName=null,t._defaultIntensityRangeChanged=!1,t._defaultElevationRangeChanged=!1,new ya(new Uint8Array(1024),256,1,St));return n.magFilter=ut,n.needsUpdate=!0,t.classificationTexture=n,t.attributes={position:{type:"fv",value:[]},color:{type:"fv",value:[]},normal:{type:"fv",value:[]},intensity:{type:"f",value:[]},classification:{type:"f",value:[]},returnNumber:{type:"f",value:[]},numberOfReturns:{type:"f",value:[]},pointSourceID:{type:"f",value:[]},indices:{type:"fv",value:[]}},t.uniforms={level:{type:"f",value:0},vnStart:{type:"f",value:0},spacing:{type:"f",value:1},blendHardness:{type:"f",value:2},blendDepthSupplement:{type:"f",value:0},fov:{type:"f",value:1},screenWidth:{type:"f",value:1},screenHeight:{type:"f",value:1},near:{type:"f",value:.1},far:{type:"f",value:1},uColor:{type:"c",value:new Me(16777215)},uOpacity:{type:"f",value:1},size:{type:"f",value:i},minSize:{type:"f",value:r},maxSize:{type:"f",value:a},octreeSize:{type:"f",value:0},bbSize:{type:"fv",value:[0,0,0]},elevationRange:{type:"2fv",value:[0,0]},clipBoxCount:{type:"f",value:0},clipPolygonCount:{type:"i",value:0},clipBoxes:{type:"Matrix4fv",value:[]},clipPolygons:{type:"3fv",value:[]},clipPolygonVCount:{type:"iv",value:[]},clipPolygonVP:{type:"Matrix4fv",value:[]},visibleNodes:{type:"t",value:t.visibleNodesTexture},pcIndex:{type:"f",value:0},gradient:{type:"t",value:t.gradientTexture},classificationLUT:{type:"t",value:t.classificationTexture},uHQDepthMap:{type:"t",value:null},toModel:{type:"Matrix4f",value:[]},diffuse:{type:"fv",value:[1,1,1]},transition:{type:"f",value:.5},intensityRange:{type:"fv",value:[1/0,-1/0]},intensity_gbc:{type:"fv",value:[1,0,0]},uRGB_gbc:{type:"fv",value:[1,0,0]},wRGB:{type:"f",value:1},wIntensity:{type:"f",value:0},wElevation:{type:"f",value:0},wClassification:{type:"f",value:0},wReturnNumber:{type:"f",value:0},wSourceID:{type:"f",value:0},useOrthographicCamera:{type:"b",value:!1},elevationGradientRepat:{type:"i",value:lm.CLAMP},clipTask:{type:"i",value:1},clipMethod:{type:"i",value:1},uShadowColor:{type:"3fv",value:[0,0,0]},uExtraScale:{type:"f",value:1},uExtraOffset:{type:"f",value:0},uExtraRange:{type:"2fv",value:[0,1]},uExtraGammaBrightContr:{type:"3fv",value:[1,0,0]},uFilterReturnNumberRange:{type:"fv",value:[0,7]},uFilterNumberOfReturnsRange:{type:"fv",value:[0,7]},uFilterGPSTimeClipRange:{type:"fv",value:[0,7]},uFilterPointSourceIDClipRange:{type:"fv",value:[0,65535]},matcapTextureUniform:{type:"t",value:t.matcapTexture},backfaceCulling:{type:"b",value:!1}},t.classification=im.DEFAULT,t.defaultAttributeValues.normal=[0,0,0],t.defaultAttributeValues.classification=[0,0,0],t.defaultAttributeValues.indices=[0,0,0,0],t.vertexShader=nm["pointcloud.vs"],t.fragmentShader=nm["pointcloud.fs"],t.vertexColors=2,t.updateShaderSource(),t}return A(s,[{key:"setDefine",value:function(e,t){null!=t?this.defines.get(e)!==t&&(this.defines.set(e,t),this.updateShaderSource()):this.removeDefine(e)}},{key:"removeDefine",value:function(e){this.defines.delete(e)}},{key:"updateShaderSource",value:function(){var e=nm["pointcloud.vs"],t=nm["pointcloud.fs"],n=this.getDefines(),i=e.indexOf("#version "),r=t.indexOf("#version "),e=0<=i?e.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(e),t=0<=r?t.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(t);this.vertexShader=e,this.fragmentShader=t,1===this.opacity?(this.blending=ge,this.transparent=!1,this.depthTest=!0,this.depthWrite=!0,this.depthFunc=Je):this.opacity<1&&!this.useEDL&&(this.blending=ye,this.transparent=!0,this.depthTest=!1,this.depthWrite=!0,this.depthFunc=je),this.weighted&&(this.blending=ye,this.transparent=!0,this.depthTest=!0,this.depthWrite=!1),this.needsUpdate=!0}},{key:"getDefines",value:function(){var e,t,n=[],i=(this.pointSizeType===cm.FIXED?n.push("#define fixed_point_size"):this.pointSizeType===cm.ATTENUATED?n.push("#define attenuated_point_size"):this.pointSizeType===cm.ADAPTIVE&&n.push("#define adaptive_point_size"),this.shape===hm.SQUARE?n.push("#define square_point_shape"):this.shape===hm.CIRCLE?n.push("#define circle_point_shape"):this.shape===hm.PARABOLOID&&n.push("#define paraboloid_point_shape"),this._useEDL&&n.push("#define use_edl"),this.activeAttributeName&&(e=this.activeAttributeName.replace(/[^a-zA-Z0-9]/g,"_"),n.push("#define color_type_".concat(e))),this._treeType===dm.OCTREE?n.push("#define tree_type_octree"):this._treeType===dm.KDTREE&&n.push("#define tree_type_kdtree"),this.weighted&&n.push("#define weighted_splats"),q(this.defines));try{for(i.s();!(t=i.n()).done;){var r=N(t.value,2),a=(r[0],r[1]);n.push(a)}}catch(e){i.e(e)}finally{i.f()}return n.join("\n")}},{key:"setClipBoxes",value:function(e){if(e){var t=this.clipBoxes.length!==e.length&&(0===e.length||0===this.clipBoxes.length);this.uniforms.clipBoxCount.value=this.clipBoxes.length,this.clipBoxes=e,t&&this.updateShaderSource(),this.uniforms.clipBoxes.value=new Float32Array(16*this.clipBoxes.length);for(var n=0;n<this.clipBoxes.length;n++){var i=e[n];this.uniforms.clipBoxes.value.set(i.inverse.elements,16*n)}for(var r=0;r<this.uniforms.clipBoxes.value.length;r++)Number.isNaN(this.uniforms.clipBoxes.value[r])&&(this.uniforms.clipBoxes.value[r]=1/0)}}},{key:"setClipPolygons",value:function(e,t){e&&(this.clipPolygons=e,this.clipPolygons.length!==e.length)&&this.updateShaderSource()}},{key:"gradient",get:function(){return this._gradient},set:function(e){this._gradient!==e&&(this._gradient=e,this.gradientTexture=s.generateGradientTexture(this._gradient),this.uniforms.gradient.value=this.gradientTexture)}},{key:"matcap",get:function(){return this._matcap},set:function(e){this._matcap!==e&&(this._matcap=e,this.matcapTexture=Potree.PointCloudMaterial.generateMatcapTexture(this._matcap),this.uniforms.matcapTextureUniform.value=this.matcapTexture)}},{key:"useOrthographicCamera",get:function(){return this.uniforms.useOrthographicCamera.value},set:function(e){this.uniforms.useOrthographicCamera.value!==e&&(this.uniforms.useOrthographicCamera.value=e)}},{key:"backfaceCulling",get:function(){return this.uniforms.backfaceCulling.value},set:function(e){this.uniforms.backfaceCulling.value!==e&&(this.uniforms.backfaceCulling.value=e,this.dispatchEvent({type:"backface_changed",target:this}))}},{key:"recomputeClassification",value:function(){for(var e=this.classification,t=this.classificationTexture.image.data,n=[1,1,1,1],i=!1,r=0;r<256;r++){var a=void 0,o=!0,s=(e[r]?(a=e[r].color,o=e[r].visible):e[r%32]?(a=e[r%32].color,o=e[r%32].visible):e.DEFAULT?(a=e.DEFAULT.color,o=e.DEFAULT.visible):a=n,parseInt(255*a[0])),l=parseInt(255*a[1]),u=parseInt(255*a[2]),o=o?parseInt(255*a[3]):0;t[4*r+0]!==s&&(t[4*r+0]=s,i=!0),t[4*r+1]!==l&&(t[4*r+1]=l,i=!0),t[4*r+2]!==u&&(t[4*r+2]=u,i=!0),t[4*r+3]!==o&&(t[4*r+3]=o,i=!0)}i&&(this.classificationTexture.needsUpdate=!0,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"spacing",get:function(){return this.uniforms.spacing.value},set:function(e){this.uniforms.spacing.value!==e&&(this.uniforms.spacing.value=e)}},{key:"useClipBox",get:function(){return this._useClipBox},set:function(e){this._useClipBox!==e&&(this._useClipBox=e,this.updateShaderSource())}},{key:"clipTask",get:function(){return this.uniforms.clipTask.value},set:function(e){this.uniforms.clipTask.value=e}},{key:"elevationGradientRepat",get:function(){return this.uniforms.elevationGradientRepat.value},set:function(e){this.uniforms.elevationGradientRepat.value=e}},{key:"clipMethod",get:function(){return this.uniforms.clipMethod.value},set:function(e){this.uniforms.clipMethod.value=e}},{key:"weighted",get:function(){return this._weighted},set:function(e){this._weighted!==e&&(this._weighted=e,this.updateShaderSource())}},{key:"fov",get:function(){return this.uniforms.fov.value},set:function(e){this.uniforms.fov.value!==e&&(this.uniforms.fov.value=e)}},{key:"screenWidth",get:function(){return this.uniforms.screenWidth.value},set:function(e){this.uniforms.screenWidth.value!==e&&(this.uniforms.screenWidth.value=e)}},{key:"screenHeight",get:function(){return this.uniforms.screenHeight.value},set:function(e){this.uniforms.screenHeight.value!==e&&(this.uniforms.screenHeight.value=e)}},{key:"near",get:function(){return this.uniforms.near.value},set:function(e){this.uniforms.near.value!==e&&(this.uniforms.near.value=e)}},{key:"far",get:function(){return this.uniforms.far.value},set:function(e){this.uniforms.far.value!==e&&(this.uniforms.far.value=e)}},{key:"opacity",get:function(){return this.uniforms.uOpacity.value},set:function(e){this.uniforms&&this.uniforms.uOpacity&&this.uniforms.uOpacity.value!==e&&(this.uniforms.uOpacity.value=e,this.updateShaderSource(),this.dispatchEvent({type:"opacity_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"activeAttributeName",get:function(){return this._activeAttributeName},set:function(e){this._activeAttributeName!==e&&(this._activeAttributeName=e,this.updateShaderSource(),this.dispatchEvent({type:"active_attribute_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"pointSizeType",get:function(){return this._pointSizeType},set:function(e){this._pointSizeType!==e&&(this._pointSizeType=e,this.updateShaderSource(),this.dispatchEvent({type:"point_size_type_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"useEDL",get:function(){return this._useEDL},set:function(e){this._useEDL!==e&&(this._useEDL=e,this.updateShaderSource())}},{key:"color",get:function(){return this.uniforms.uColor.value},set:function(e){this.uniforms.uColor.value.equals(e)||(this.uniforms.uColor.value.copy(e),this.dispatchEvent({type:"color_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"shape",get:function(){return this._shape},set:function(e){this._shape!==e&&(this._shape=e,this.updateShaderSource(),this.dispatchEvent({type:"point_shape_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"treeType",get:function(){return this._treeType},set:function(e){this._treeType!==e&&(this._treeType=e,this.updateShaderSource())}},{key:"bbSize",get:function(){return this.uniforms.bbSize.value},set:function(e){this.uniforms.bbSize.value=e}},{key:"size",get:function(){return this.uniforms.size.value},set:function(e){this.uniforms.size.value!==e&&(this.uniforms.size.value=e,this.dispatchEvent({type:"point_size_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"minSize",get:function(){return this.uniforms.minSize.value},set:function(e){this.uniforms.minSize.value!==e&&(this.uniforms.minSize.value=e,this.dispatchEvent({type:"point_size_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"elevationRange",get:function(){return this.uniforms.elevationRange.value},set:function(e){this.uniforms.elevationRange.value[0]===e[0]&&this.uniforms.elevationRange.value[1]===e[1]||(this.uniforms.elevationRange.value=e,this._defaultElevationRangeChanged=!0,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"heightMin",get:function(){return this.uniforms.elevationRange.value[0]},set:function(e){this.elevationRange=[e,this.elevationRange[1]]}},{key:"heightMax",get:function(){return this.uniforms.elevationRange.value[1]},set:function(e){this.elevationRange=[this.elevationRange[0],e]}},{key:"transition",get:function(){return this.uniforms.transition.value},set:function(e){this.uniforms.transition.value=e}},{key:"intensityRange",get:function(){return this.uniforms.intensityRange.value},set:function(e){e instanceof Array&&2===e.length&&(e[0]===this.uniforms.intensityRange.value[0]&&e[1]===this.uniforms.intensityRange.value[1]||(this.uniforms.intensityRange.value=e,this._defaultIntensityRangeChanged=!0,this.dispatchEvent({type:"material_property_changed",target:this})))}},{key:"intensityGamma",get:function(){return this.uniforms.intensity_gbc.value[0]},set:function(e){this.uniforms.intensity_gbc.value[0]!==e&&(this.uniforms.intensity_gbc.value[0]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"intensityContrast",get:function(){return this.uniforms.intensity_gbc.value[2]},set:function(e){this.uniforms.intensity_gbc.value[2]!==e&&(this.uniforms.intensity_gbc.value[2]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"intensityBrightness",get:function(){return this.uniforms.intensity_gbc.value[1]},set:function(e){this.uniforms.intensity_gbc.value[1]!==e&&(this.uniforms.intensity_gbc.value[1]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"rgbGamma",get:function(){return this.uniforms.uRGB_gbc.value[0]},set:function(e){this.uniforms.uRGB_gbc.value[0]!==e&&(this.uniforms.uRGB_gbc.value[0]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"rgbContrast",get:function(){return this.uniforms.uRGB_gbc.value[2]},set:function(e){this.uniforms.uRGB_gbc.value[2]!==e&&(this.uniforms.uRGB_gbc.value[2]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"rgbBrightness",get:function(){return this.uniforms.uRGB_gbc.value[1]},set:function(e){this.uniforms.uRGB_gbc.value[1]!==e&&(this.uniforms.uRGB_gbc.value[1]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"extraGamma",get:function(){return this.uniforms.uExtraGammaBrightContr.value[0]},set:function(e){this.uniforms.uExtraGammaBrightContr.value[0]!==e&&(this.uniforms.uExtraGammaBrightContr.value[0]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"extraBrightness",get:function(){return this.uniforms.uExtraGammaBrightContr.value[1]},set:function(e){this.uniforms.uExtraGammaBrightContr.value[1]!==e&&(this.uniforms.uExtraGammaBrightContr.value[1]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"extraContrast",get:function(){return this.uniforms.uExtraGammaBrightContr.value[2]},set:function(e){this.uniforms.uExtraGammaBrightContr.value[2]!==e&&(this.uniforms.uExtraGammaBrightContr.value[2]=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"getRange",value:function(e){return this.ranges.get(e)}},{key:"setRange",value:function(e,t){var n=!1,i=this.ranges.get(e),n=null==i||null==t||i[0]!==t[0]||i[1]!==t[1];this.ranges.set(e,t),n&&this.dispatchEvent({type:"material_property_changed",target:this})}},{key:"extraRange",get:function(){return this.uniforms.uExtraRange.value},set:function(e){e instanceof Array&&2===e.length&&(e[0]===this.uniforms.uExtraRange.value[0]&&e[1]===this.uniforms.uExtraRange.value[1]||(this.uniforms.uExtraRange.value=e,this._defaultExtraRangeChanged=!0,this.dispatchEvent({type:"material_property_changed",target:this})))}},{key:"weightRGB",get:function(){return this.uniforms.wRGB.value},set:function(e){this.uniforms.wRGB.value!==e&&(this.uniforms.wRGB.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightIntensity",get:function(){return this.uniforms.wIntensity.value},set:function(e){this.uniforms.wIntensity.value!==e&&(this.uniforms.wIntensity.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightElevation",get:function(){return this.uniforms.wElevation.value},set:function(e){this.uniforms.wElevation.value!==e&&(this.uniforms.wElevation.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightClassification",get:function(){return this.uniforms.wClassification.value},set:function(e){this.uniforms.wClassification.value!==e&&(this.uniforms.wClassification.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightReturnNumber",get:function(){return this.uniforms.wReturnNumber.value},set:function(e){this.uniforms.wReturnNumber.value!==e&&(this.uniforms.wReturnNumber.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"weightSourceID",get:function(){return this.uniforms.wSourceID.value},set:function(e){this.uniforms.wSourceID.value!==e&&(this.uniforms.wSourceID.value=e,this.dispatchEvent({type:"material_property_changed",target:this}))}},{key:"disableEvents",value:function(){void 0===this._hiddenListeners&&(this._hiddenListeners=this._listeners,this._listeners={})}},{key:"enableEvents",value:function(){this._listeners=this._hiddenListeners,this._hiddenListeners=void 0}}],[{key:"generateGradientTexture",value:function(e){for(var t=document.createElement("canvas"),n=(t.width=64,t.height=64,t.getContext("2d")),i=(n.rect(0,0,64,64),n.createLinearGradient(0,0,64,64)),r=0;r<e.length;r++){var a=e[r];i.addColorStop(a[0],"#"+a[1].getHexString())}n.fillStyle=i,n.fill();n=new Fl(t);return n.needsUpdate=!0,n.minFilter=U,n.wrap=ot,n.repeat=2,n}},{key:"generateMatcapTexture",value:function(e){e=new URL(Potree.resourcePath+"/textures/matcap/"+e).href,e=(new Nc).load(e);return e.magFilter=e.minFilter=U,e.needsUpdate=!0,e}}]),s}(),mm=function(){y(n,Kf);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).children=[],e.sceneNode=null,e.octree=null,e}return A(n,[{key:"getNumPoints",value:function(){return this.geometryNode.numPoints}},{key:"isLoaded",value:function(){return!0}},{key:"isTreeNode",value:function(){return!0}},{key:"isGeometryNode",value:function(){return!1}},{key:"getLevel",value:function(){return this.geometryNode.level}},{key:"getBoundingSphere",value:function(){return this.geometryNode.boundingSphere}},{key:"getBoundingBox",value:function(){return this.geometryNode.boundingBox}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"getPointsInBox",value:function(e){if(!this.sceneNode)return null;for(var t=this.geometryNode.buffer,n=t.offset("position"),i=t.stride,r=new DataView(t.data),e=e.matrixWorld.clone().invert(),a=(new _e).multiplyMatrices(e,this.sceneNode.matrixWorld),o=[],s=new Kn,l=0;l<t.numElements;l++){var u=r.getFloat32(l*i+n+0,!0),c=r.getFloat32(l*i+n+4,!0),h=r.getFloat32(l*i+n+8,!0);s.set(u,c,h,1),s.applyMatrix4(a),-.5<s.x&&s.x<.5&&-.5<s.y&&s.y<.5&&-.5<s.z&&s.z<.5&&(s.set(u,c,h,1).applyMatrix4(this.sceneNode.matrixWorld),o.push(new Re(s.x,s.y,s.z)))}return o}},{key:"name",get:function(){return this.geometryNode.name}}]),n}(),vm=function(){y(u,Zf);var l=C(u);function u(e,t){var i;te(this,u),(i=l.call(this)).pointBudget=1/0,i.pcoGeometry=e,i.boundingBox=i.pcoGeometry.boundingBox,i.boundingSphere=i.boundingBox.getBoundingSphere(new gi),i.material=t||new fm,i.visiblePointsTarget=2e6,i.minimumNodePixelSize=150,i.level=0,i.position.copy(e.offset),i.updateMatrix();for(var r="rgba",a=0,o=["rgba","rgb","intensity","classification"];a<o.length;a++){var n=function(){var e,t=o[a],n=i.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===t});return!n||(e="Array"===n.range[0].constructor.name?n.range[0]:[n.range[0]],n="Array"===n.range[1].constructor.name?n.range[1]:[n.range[1]],e=re(Re,J(e)),n=re(Re,J(n)),0===e.distanceTo(n))?"continue":(r=t,"break")}();if("continue"!==n&&"break"===n)break}i.material.activeAttributeName=r,i.showBoundingBox=!1,i.boundingBoxNodes=[],i.loadQueue=[],i.visibleBounds=new Y,i.visibleNodes=[],i.visibleGeometry=[],i.generateDEM=!1,i.profileRequests=[],i.name="",i._visible=!0;var t=[i.pcoGeometry.tightBoundingBox,i.getBoundingBoxWorld()].find(function(e){return void 0!==e}),s=(i.updateMatrixWorld(!0),(t=ie.computeTransformedBoundingBox(t,i.matrixWorld)).min.z),t=t.max.z;return i.material.heightMin=s,i.material.heightMax=t,i.projection=e.projection,i.fallbackProjection=e.fallbackProjection,i.root=i.pcoGeometry.root,i}return A(u,[{key:"setName",value:function(e){this.name!==e&&(this.name=e,this.dispatchEvent({type:"name_changed",name:e,pointcloud:this}))}},{key:"getName",value:function(){return this.name}},{key:"getAttribute",value:function(t){var e=this.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===t});return e||null}},{key:"getAttributes",value:function(){return this.pcoGeometry.pointAttributes}},{key:"toTreeNode",value:function(s,t){var l=this,u=new mm,e=new Pl(s.geometry,this.material);e.name=s.name,e.position.copy(s.boundingBox.min),e.frustumCulled=!1,e.onBeforeRender=function(e,t,n,i,r,a){var o;r.program&&(e.getContext().useProgram(r.program.program),r.program.getUniforms().map.level&&(o=s.getLevel(),r.uniforms.level.value=o,r.program.getUniforms().map.level.setValue(e.getContext(),o)),l.visibleNodeTextureOffsets&&r.program.getUniforms().map.vnStart&&(o=l.visibleNodeTextureOffsets.get(u),r.uniforms.vnStart.value=o,r.program.getUniforms().map.vnStart.setValue(e.getContext(),o)),r.program.getUniforms().map.pcIndex)&&(o=u.pcIndex||l.visibleNodes.indexOf(u),r.uniforms.pcIndex.value=o,r.program.getUniforms().map.pcIndex.setValue(e.getContext(),o))},u.geometryNode=s,u.sceneNode=e,u.pointcloud=this,u.children=[];for(var n,i=0;i<8;i++)u.children[i]=s.children[i];t?(n=parseInt(s.name[s.name.length-1]),t.sceneNode.add(e),t.children[n]=u):(this.root=u,this.add(e));return s.oneTimeDisposeHandlers.push(function(){var e=parseInt(s.name[s.name.length-1]);t.sceneNode.remove(u.sceneNode),t.children[e]=s}),u}},{key:"updateVisibleBounds",value:function(){for(var e=[],t=0;t<this.visibleNodes.length;t++){for(var n=this.visibleNodes[t],i=!0,r=0;r<n.children.length;r++){var a=n.children[r];a instanceof mm?i=i&&!a.sceneNode.visible:a instanceof em&&(i=!0)}i&&e.push(n)}this.visibleBounds.min=new Re(1/0,1/0,1/0),this.visibleBounds.max=new Re(-1/0,-1/0,-1/0);for(var o=0;o<e.length;o++){var s=e[o];this.visibleBounds.expandByPoint(s.getBoundingBox().min),this.visibleBounds.expandByPoint(s.getBoundingBox().max)}}},{key:"updateMaterial",value:function(e,t,n,i){e.fov=n.fov*(Math.PI/180),e.screenWidth=i.domElement.clientWidth,e.screenHeight=i.domElement.clientHeight,e.spacing=this.pcoGeometry.spacing,e.near=n.near,e.far=n.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.getSize(new Re).x}},{key:"computeVisibilityTextureData",value:function(e,t){Potree.measureTimings&&performance.mark("computeVisibilityTextureData-start");for(var n=new Uint8Array(4*e.length),i=new Map,r=((e=e.slice()).sort(function(e,t){e=e.geometryNode.name,t=t.geometryNode.name;return e.length!==t.length?e.length-t.length:e<t?-1:t<e?1:0}),new Re,new Map),a=new Array(e.length).fill(1/0),o=0;o<e.length;o++){var s,l=e[o],u=(r.set(l.name,l),i.set(l,o),0<o&&(u=parseInt(l.name.slice(-1)),s=l.name.slice(0,-1),s=r.get(s),a[s=i.get(s)]=Math.min(a[s],o-s),n[4*s+0]=n[4*s+0]|1<<u,n[4*s+1]=a[s]>>8,n[4*s+2]=a[s]%256),l.geometryNode.density);"number"==typeof u?(s=Math.log2(u)/2-1.5,n[4*o+3]=10*(10+s)):n[4*o+3]=100}return Potree.measureTimings&&(performance.mark("computeVisibilityTextureData-end"),performance.measure("render.computeVisibilityTextureData","computeVisibilityTextureData-start","computeVisibilityTextureData-end")),{data:n,offsets:i}}},{key:"nodeIntersectsProfile",value:function(e,t){for(var n=e.boundingBox.clone().applyMatrix4(this.matrixWorld).getBoundingSphere(new gi),i=!1,r=0;r<t.points.length-1;r++)var a=new Re(t.points[r+0].x,t.points[r+0].y,n.center.z),o=new Re(t.points[r+1].x,t.points[r+1].y,n.center.z),a=new Cd(a,o).closestPointToPoint(n.center,!0,new Re).distanceTo(n.center),i=i||a<n.radius+t.width;return i}},{key:"deepestNodeAt",value:function(e){for(var t=this.matrixWorld.clone().invert(),n=e.clone().applyMatrix4(t),i=this.root;;){var r,a=null,o=q(i.children);try{for(o.s();!(r=o.n()).done;){var s=r.value;void 0!==s&&s.getBoundingBox().containsPoint(n)&&(a=s)}}catch(e){o.e(e)}finally{o.f()}if(!(null!==a&&a instanceof mm))break;i=a}return i}},{key:"nodesOnRay",value:function(e,t){for(var n=[],i=t.clone(),r=0;r<e.length;r++){var a=e[r],o=a.getBoundingSphere().clone().applyMatrix4(this.matrixWorld);i.intersectsSphere(o)&&n.push(a)}return n}},{key:"updateMatrixWorld",value:function(e){!0===this.matrixAutoUpdate&&this.updateMatrix(),!0!==this.matrixWorldNeedsUpdate&&!0!==e||(this.parent?this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix):this.matrixWorld.copy(this.matrix),this.matrixWorldNeedsUpdate=!1)}},{key:"hideDescendants",value:function(e){for(var t=[],n=0;n<e.children.length;n++){var i=e.children[n];i.visible&&t.push(i)}for(;0<t.length;){var r=t.shift();r.visible=!1;for(var a=0;a<r.children.length;a++){var o=r.children[a];o.visible&&t.push(o)}}}},{key:"moveToOrigin",value:function(){this.position.set(0,0,0),this.updateMatrixWorld(!0);var e=this.boundingBox,t=this.matrixWorld,e=ie.computeTransformedBoundingBox(e,t);this.position.set(0,0,0).sub(e.getCenter(new Re))}},{key:"moveToGroundPlane",value:function(){this.updateMatrixWorld(!0);var e=this.boundingBox,t=this.matrixWorld,e=ie.computeTransformedBoundingBox(e,t);this.position.y+=-e.min.y}},{key:"getBoundingBoxWorld",value:function(){this.updateMatrixWorld(!0);var e=this.boundingBox,t=this.matrixWorld;return ie.computeTransformedBoundingBox(e,t)}},{key:"getPointsInProfile",value:function(e,t,n){if(n)return n=new Potree.ProfileRequest(this,e,t,n),this.profileRequests.push(n),n;for(var i={segments:[],boundingBox:new Y,projectedBoundingBox:new bd},r=0;r<e.points.length-1;r++){var a=e.points[r],o=e.points[r+1],s=this.getProfile(a,o,e.width,t);i.segments.push({start:a,end:o,points:s,project:null}),i.boundingBox.expandByPoint(s.boundingBox.min),i.boundingBox.expandByPoint(s.boundingBox.max)}for(var l=new Re,u=0;u<i.segments.length;u++){var c=i.segments[u],h=c.start,d=c.end,p=function(e,t,n,i){var r=e,e=t,a=n,o=i,t=new Re(1,0,0),n=(new Re).subVectors(e,r),s=(n.y=0,n.normalize(),Math.acos(t.dot(n)));return 0<n.z&&(s=-s),function(e){var t=(new _e).makeTranslation(-r.x,-o.min.y,-r.z),n=(new _e).makeRotationY(-s),i=(new _e).makeTranslation(a.x,0,0),e=e.clone();return e.applyMatrix4(t),e.applyMatrix4(n),e.applyMatrix4(i),e}}(h,d,l.clone(),i.boundingBox.clone());c.project=p,l.x+=new Re(h.x,0,h.z).distanceTo(new Re(d.x,0,d.z)),l.y+=d.y-h.y}return i.projectedBoundingBox.min.x=0,i.projectedBoundingBox.min.y=i.boundingBox.min.y,i.projectedBoundingBox.max.x=l.x,i.projectedBoundingBox.max.y=i.boundingBox.max.y,i}},{key:"getProfile",value:function(e,t,n,i,r){e=new Potree.ProfileRequest(e,t,n,i,r);this.profileRequests.push(e)}},{key:"getVisibleExtent",value:function(){return this.visibleBounds.applyMatrix4(this.matrixWorld)}},{key:"intersectsPoint",value:function(e){if(!(this.pcoGeometry.root&&this.pcoGeometry.root.geometry))return!1;if(void 0===this.signedDistanceField){for(var t=new Float32Array(Math.pow(32,3)).fill(1/0),n=this.pcoGeometry.root.geometry.attributes.position,i=this.boundingBox,r=n.count,a=0;a<r;a+=3){var o=n.array[3*a+0],s=n.array[3*a+1],l=n.array[3*a+2];t[parseInt(Math.min(o/i.max.x*32,31))+32*parseInt(Math.min(s/i.max.y*32,31))+32*parseInt(Math.min(l/i.max.z*32,31))*32]=0}this.signedDistanceField={resolution:32,field:t}}var u=this.signedDistanceField,c=this.boundingBox,h=this.matrixWorld.clone().invert(),e=e.clone().applyMatrix4(h),h=u.resolution,d=parseInt(h*(e.x/c.max.x)),p=parseInt(h*(e.y/c.max.y)),e=parseInt(h*(e.z/c.max.z));return!(d<0||p<0||e<0||h<=d||h<=p||h<=e||0!==u.field[d+p*h+e*h*h])}},{key:"pick",value:function(e,t,n){function i(e,t){return void 0!==e?e:t}var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},a=e.renderer,e=e.pRenderer,o=(performance.mark("pick-start"),i(r.pickWindowSize,65)),s=(i(r.pickOutsideClipRegion,!1),a.getSize(new Le)),l=Math.ceil(i(r.width,s.width)),s=Math.ceil(i(r.height,s.height)),u=i(r.pointSizeType,this.material.pointSizeType),c=i(r.pointSize,this.material.size),h=this.nodesOnRay(this.visibleNodes,n);if(0===h.length)return null;this.pickState||(n=new Ps,(p=new Potree.PointCloudMaterial).activeAttributeName="indices",d=new Zn(1,1,{minFilter:U,magFilter:ut,format:St}),this.pickState={renderTarget:d,material:p,scene:n});for(var d=this.pickState,p=d.material,n=(p.pointSizeType=u,p.shape=Potree.PointShape.PARABOLOID,p.uniforms.uFilterReturnNumberRange.value=this.material.uniforms.uFilterReturnNumberRange.value,p.uniforms.uFilterNumberOfReturnsRange.value=this.material.uniforms.uFilterNumberOfReturnsRange.value,p.uniforms.uFilterGPSTimeClipRange.value=this.material.uniforms.uFilterGPSTimeClipRange.value,p.uniforms.uFilterPointSourceIDClipRange.value=this.material.uniforms.uFilterPointSourceIDClipRange.value,p.activeAttributeName="indices",p.size=c,p.uniforms.minSize.value=this.material.uniforms.minSize.value,p.uniforms.maxSize.value=this.material.uniforms.maxSize.value,p.classification=this.material.classification,p.recomputeClassification(),r.pickClipped?(p.clipBoxes=this.material.clipBoxes,p.uniforms.clipBoxes=this.material.uniforms.clipBoxes,this.material.clipTask===Potree.ClipTask.HIGHLIGHT?p.clipTask=Potree.ClipTask.NONE:p.clipTask=this.material.clipTask,p.clipMethod=this.material.clipMethod):p.clipBoxes=[],this.updateMaterial(p,h,t,a),d.renderTarget.setSize(l,s),new Le(r.x,r.y)),u=a.getContext(),c=(u.enable(u.SCISSOR_TEST),u.scissor(parseInt(n.x-(o-1)/2),parseInt(n.y-(o-1)/2),parseInt(o),parseInt(o)),a.state.buffers.depth.setTest(p.depthTest),a.state.buffers.depth.setMask(p.depthWrite),a.state.setBlending(ge),a.setRenderTarget(d.renderTarget),u.clearColor(0,0,0,0),a.clear(!0,!0,!0),this.material),p=(this.material=p,e.renderOctree(this,h,t,d.renderTarget),this.material=c,function(e,t,n){return Math.min(Math.max(t,e),n)}),e=parseInt(p(n.x-(o-1)/2,0,l)),t=parseInt(p(n.y-(o-1)/2,0,s)),d=parseInt(Math.min(e+o,l)-e),c=parseInt(Math.min(t+o,s)-t),p=new Uint8Array(4*(d*c)),f=(u.readPixels(e,t,o,o,u.RGBA,u.UNSIGNED_BYTE,p),a.setRenderTarget(null),a.state.reset(),a.setScissorTest(!1),u.disable(u.SCISSOR_TEST),p),m=new Uint32Array(p.buffer),v=(Number.MAX_VALUE,[]),g=0;g<o;g++)for(var A=0;A<o;A++){var y=g+A*o,w=Math.pow(g-(o-1)/2,2)+Math.pow(A-(o-1)/2,2),b=f[4*y+3],y=(f[4*y+3]=0,m[y]);0===b&&0===y||void 0===b||void 0===y||(y={pIndex:y,pcIndex:b,distanceToCenter:w},!r.all&&0<v.length?w<v[0].distanceToCenter&&(v[0]=y):v.push(y))}for(var x=0,E=v;x<E.length;x++){var C=E[x],B={};if(!h[C.pcIndex])return null;var _,M=h[C.pcIndex],T=M.sceneNode,S=M.geometryNode.geometry;for(_ in S.attributes){var I,D,P,k,L=S.attributes[_];"position"===_?(P=L.array[3*C.pIndex+0],I=L.array[3*C.pIndex+1],D=L.array[3*C.pIndex+2],(P=new Re(P,I,D)).applyMatrix4(T.matrixWorld),B[_]=P):"indices"!==_&&(k=L.array.slice(L.itemSize*C.pIndex,L.itemSize*(C.pIndex+1)),L.potree&&function(){var e=L.potree,t=e.scale,n=e.offset;k=k.map(function(e){return e/t+n})}(),B[_]=k)}C.point=B}return performance.mark("pick-end"),performance.measure("pick","pick-start","pick-end"),r.all?v.map(function(e){return e.point}):0===v.length?null:v[0].point}},{key:"getFittedBoxGen",value:V().mark(function e(t){var n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=performance.now(),i=new Y,r=t.matrixWorld.clone().invert(),a=q(this.visibleNodes),e.prev=4,a.s();case 6:if((o=a.n()).done){e.next=21;break}if((o=o.value).sceneNode){e.next=10;break}return e.abrupt("continue",19);case 10:for(s=o.geometryNode.buffer,l=s.offset("position"),u=s.stride,c=new DataView(s.data),h=(new _e).multiplyMatrices(r,o.sceneNode.matrixWorld),d=new Kn,p=0;p<s.numElements;p++)f=c.getFloat32(p*u+l+0,!0),m=c.getFloat32(p*u+l+4,!0),v=c.getFloat32(p*u+l+8,!0),d.set(f,m,v,1),d.applyMatrix4(h),-.5<d.x&&d.x<.5&&-.5<d.y&&d.y<.5&&-.5<d.z&&d.z<.5&&i.expandByPoint(d);return void(e.next=19);case 19:e.next=6;break;case 21:e.next=26;break;case 23:e.prev=23,e.t0=e.catch(4),a.e(e.t0);case 26:return e.prev=26,a.f(),e.finish(26);case 29:return A=i.getCenter(new Re).applyMatrix4(t.matrixWorld),(g=new K).position.copy(A),g.scale.copy(t.scale),g.rotation.copy(t.rotation),A=(new Re).subVectors(i.max,i.min),g.scale.multiply(A),A=performance.now()-n,console.log("duration: ",A),e.next=40,g;case 40:case"end":return e.stop()}},e,this,[[4,23,26,29]])})},{key:"getFittedBox",value:function(e){var t,n=performance.now(),i=new Y,r=e.matrixWorld.clone().invert(),a=q(this.visibleNodes);try{for(a.s();!(t=a.n()).done;){var o=t.value;if(o.sceneNode&&!(o.getLevel()>1/0))for(var s=o.geometryNode.buffer,l=s.offset("position"),u=s.stride,c=new DataView(s.data),h=(new _e).multiplyMatrices(r,o.sceneNode.matrixWorld),d=new Kn,p=0;p<s.numElements;p++){var f=c.getFloat32(p*u+l+0,!0),m=c.getFloat32(p*u+l+4,!0),v=c.getFloat32(p*u+l+8,!0);d.set(f,m,v,1),d.applyMatrix4(h),-.5<d.x&&d.x<.5&&-.5<d.y&&d.y<.5&&-.5<d.z&&d.z<.5&&i.expandByPoint(d)}}}catch(e){a.e(e)}finally{a.f()}var g=i.getCenter(new Re).applyMatrix4(e.matrixWorld),A=new K,g=(A.position.copy(g),A.scale.copy(e.scale),A.rotation.copy(e.rotation),(new Re).subVectors(i.max,i.min)),e=(A.scale.multiply(g),performance.now()-n);return console.log("duration: ",e),A}},{key:"progress",get:function(){return this.visibleNodes.length/this.visibleGeometry.length}},{key:"find",value:function(e){var t,n=null,i=q(e);try{for(i.s();!(t=i.n()).done;)var r=t.value,n="r"===r?this.root:n.children[r]}catch(e){i.e(e)}finally{i.f()}return n}},{key:"visible",get:function(){return this._visible},set:function(e){e!==this._visible&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",pointcloud:this}))}}]),u}();function gm(e,t){var n;if(t===ot)return e.REPEAT;if(t===st)return e.CLAMP_TO_EDGE;if(t===lt)return e.MIRRORED_REPEAT;if(t===ut)return e.NEAREST;if(1004===t)return e.NEAREST_MIPMAP_NEAREST;if(1005===t)return e.NEAREST_MIPMAP_LINEAR;if(t===U)return e.LINEAR;if(1007===t)return e.LINEAR_MIPMAP_NEAREST;if(t===ft)return e.LINEAR_MIPMAP_LINEAR;if(t===mt)return e.UNSIGNED_BYTE;if(t===Et)return e.UNSIGNED_SHORT_4_4_4_4;if(t===Ct)return e.UNSIGNED_SHORT_5_5_5_1;if(t===Bt)return e.UNSIGNED_SHORT_5_6_5;if(t===vt)return e.BYTE;if(t===gt)return e.SHORT;if(t===At)return e.UNSIGNED_SHORT;if(t===yt)return e.INT;if(t===wt)return e.UNSIGNED_INT;if(t===bt)return e.FLOAT;if(t===xt&&null!==(n=extensions.get("OES_texture_half_float")))return n.HALF_FLOAT_OES;if(t===Mt)return e.ALPHA;if(t===Tt)return e.RGB;if(t===St)return e.RGBA;if(t===It)return e.LUMINANCE;if(t===Dt)return e.LUMINANCE_ALPHA;if(t===kt)return e.DEPTH_COMPONENT;if(t===Lt)return e.DEPTH_STENCIL;if(t===Ee)return e.FUNC_ADD;if(t===Ce)return e.FUNC_SUBTRACT;if(t===Te)return e.FUNC_REVERSE_SUBTRACT;if(t===De)return e.ZERO;if(t===Pe)return e.ONE;if(t===ke)return e.SRC_COLOR;if(t===Fe)return e.ONE_MINUS_SRC_COLOR;if(t===Oe)return e.SRC_ALPHA;if(t===Ne)return e.ONE_MINUS_SRC_ALPHA;if(t===Ge)return e.DST_ALPHA;if(t===Ue)return e.ONE_MINUS_DST_ALPHA;if(t===ze)return e.DST_COLOR;if(t===He)return e.ONE_MINUS_DST_COLOR;if(t===Qe)return e.SRC_ALPHA_SATURATE;if((t===zt||t===RGBA_S3TC_DXT1_Format||t===Qt||t===RGBA_S3TC_DXT5_Format)&&null!==(n=extensions.get("WEBGL_compressed_texture_s3tc"))){if(t===zt)return n.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===Ht)return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Qt)return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Vt)return n.COMPRESSED_RGBA_S3TC_DXT5_EXT}if((t===jt||t===Wt||t===Jt||t===qt)&&null!==(n=extensions.get("WEBGL_compressed_texture_pvrtc"))){if(t===jt)return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Wt)return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===Jt)return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===qt)return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(t===Xt&&null!==(n=extensions.get("WEBGL_compressed_texture_etc1")))return n.COMPRESSED_RGB_ETC1_WEBGL;if((t===Se||t===Ie)&&null!==(n=extensions.get("EXT_blend_minmax"))){if(t===Se)return n.MIN_EXT;if(t===Ie)return n.MAX_EXT}return t===UnsignedInt248Type&&null!==(n=extensions.get("WEBGL_depth_texture"))?n.UNSIGNED_INT_24_8_WEBGL:0}var Am={position:{name:"position",location:0},color:{name:"color",location:1},rgba:{name:"color",location:1},intensity:{name:"intensity",location:2},classification:{name:"classification",location:3},returnNumber:{name:"returnNumber",location:4},"return number":{name:"returnNumber",location:4},returns:{name:"returnNumber",location:4},numberOfReturns:{name:"numberOfReturns",location:5},"number of returns":{name:"numberOfReturns",location:5},pointSourceID:{name:"pointSourceID",location:6},"source id":{name:"pointSourceID",location:6},"point source id":{name:"pointSourceID",location:6},indices:{name:"indices",location:7},normal:{name:"normal",location:8},spacing:{name:"spacing",location:9},"gps-time":{name:"gpsTime",location:10},aExtra:{name:"aExtra",location:11}},ym=function(){function r(e,t,n,i){te(this,r),this.gl=e,this.name=t,this.vsSource=n,this.fsSource=i,this.cache=new Map,this.vs=null,this.fs=null,this.program=null,this.uniformLocations={},this.attributeLocations={},this.uniformBlockIndices={},this.uniformBlocks={},this.uniforms={},this.update(n,i)}return A(r,[{key:"update",value:function(e,t){this.vsSource=e,this.fsSource=t,this.linkProgram()}},{key:"compileShader",value:function(e,t){var n=this.gl;if(n.shaderSource(e,t),n.compileShader(e),!n.getShaderParameter(e,n.COMPILE_STATUS))throw n=n.getShaderInfoLog(e),e=t.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n"),"could not compile shader ".concat(this.name,": ").concat(n,", \n").concat(e)}},{key:"linkProgram",value:function(){var e=performance.now(),t=this.gl,n=(this.uniformLocations={},this.attributeLocations={},this.uniforms={},t.useProgram(null),this.cache.get("".concat(this.vsSource,", ").concat(this.fsSource)));if(n)this.program=n.program,this.vs=n.vs,this.fs=n.fs,this.attributeLocations=n.attributeLocations,this.uniformLocations=n.uniformLocations,this.uniformBlocks=n.uniformBlocks,this.uniforms=n.uniforms;else{this.vs=t.createShader(t.VERTEX_SHADER),this.fs=t.createShader(t.FRAGMENT_SHADER),this.program=t.createProgram();for(var i=0,r=Object.keys(Am);i<r.length;i++){var a=r[i],o=Am[a].location,a=Am[a].name;t.bindAttribLocation(this.program,o,a)}this.compileShader(this.vs,this.vsSource),this.compileShader(this.fs,this.fsSource);var s=this.program;if(t.attachShader(s,this.vs),t.attachShader(s,this.fs),t.linkProgram(s),t.detachShader(s,this.vs),t.detachShader(s,this.fs),!t.getProgramParameter(s,t.LINK_STATUS))throw n=t.getProgramInfoLog(s),"could not link program ".concat(this.name,": ").concat(n);for(var l=t.getProgramParameter(s,t.ACTIVE_ATTRIBUTES),u=0;u<l;u++){var c=t.getActiveAttrib(s,u),h=t.getAttribLocation(s,c.name);this.attributeLocations[c.name]=h}for(var d=t.getProgramParameter(s,t.ACTIVE_UNIFORMS),p=0;p<d;p++){var f=t.getActiveUniform(s,p),m=t.getUniformLocation(s,f.name);this.uniformLocations[f.name]=m,this.uniforms[f.name]={location:m,value:null}}if(t instanceof WebGL2RenderingContext)for(var v=t.getProgramParameter(s,t.ACTIVE_UNIFORM_BLOCKS),g=0;g<v;g++){var A=t.getActiveUniformBlockName(s,g),y=t.getUniformBlockIndex(s,A),w=(this.uniformBlockIndices[A]=y,t.uniformBlockBinding(s,y,y),t.getActiveUniformBlockParameter(s,y,t.UNIFORM_BLOCK_DATA_SIZE)),b=t.createBuffer();t.bindBuffer(t.UNIFORM_BUFFER,b),t.bufferData(t.UNIFORM_BUFFER,w,t.DYNAMIC_READ),t.bindBufferBase(t.UNIFORM_BUFFER,y,b),t.bindBuffer(t.UNIFORM_BUFFER,null),this.uniformBlocks[A]={name:A,index:y,dataSize:w,buffer:b}}n={program:this.program,vs:this.vs,fs:this.fs,attributeLocations:this.attributeLocations,uniformLocations:this.uniformLocations,uniforms:this.uniforms,uniformBlocks:this.uniformBlocks};this.cache.set("".concat(this.vsSource,", ").concat(this.fsSource),n);n=performance.now()-e;console.log("shader compile duration: ".concat(n.toFixed(3)))}}},{key:"setUniformMatrix4",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&(t=new Float32Array(t.elements),n.uniformMatrix4fv(e,!1,t))}},{key:"setUniform1f",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1f(e.location,t))}},{key:"setUniformBoolean",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1i(e.location,t))}},{key:"setUniformTexture",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}},{key:"setUniform2f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform2f(e,t[0],t[1])}},{key:"setUniform3f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform3f(e,t[0],t[1],t[2])}},{key:"setUniform",value:function(e,t){t.constructor===_e?this.setUniformMatrix4(e,t):"number"==typeof t?this.setUniform1f(e,t):"boolean"==typeof t?this.setUniformBoolean(e,t):t instanceof wm?this.setUniformTexture(e,t):t instanceof Array?2===t.length?this.setUniform2f(e,t):3===t.length&&this.setUniform3f(e,t):console.error("unhandled uniform type: ",e,t)}},{key:"setUniform1i",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}}]),r}(),wm=function(){function n(e,t){te(this,n),this.gl=e,this.texture=t,this.id=e.createTexture(),this.target=e.TEXTURE_2D,this.version=-1,this.update(t)}return A(n,[{key:"update",value:function(){var e,t,n,i,r,a,o,s;this.texture.image?(e=this.gl,t=this.texture,this.version!==t.version&&(this.target=e.TEXTURE_2D,e.bindTexture(this.target,this.id),n=gm(e,t.format),i=t.image.width,r=t.image.height,a=n,o=gm(e,t.type),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,t.unpackAlignment),t instanceof ya?(s=t.image.data,e.texParameteri(this.target,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,gm(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,gm(e,t.minFilter)),e.texImage2D(this.target,0,n,i,r,0,a,o,s)):(t instanceof Fl||t instanceof Xn)&&(s=t.image,e.texParameteri(this.target,e.TEXTURE_WRAP_S,gm(e,t.wrapS)),e.texParameteri(this.target,e.TEXTURE_WRAP_T,gm(e,t.wrapT)),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,gm(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,gm(e,t.minFilter)),e.texImage2D(this.target,0,n,n,o,s),t instanceof Xn)&&e.generateMipmap(e.TEXTURE_2D),e.bindTexture(this.target,null),this.version=t.version)):this.version=this.texture.version}}]),n}(),bm=A(function e(){te(this,e),this.numElements=0,this.vao=null,this.vbos=new Map}),xm=function(){function t(e){te(this,t),this.threeRenderer=e,this.gl=this.threeRenderer.getContext(),this.buffers=new Map,this.shaders=new Map,this.textures=new Map,this.glTypeMapping=new Map,this.glTypeMapping.set(Float32Array,this.gl.FLOAT),this.glTypeMapping.set(Uint8Array,this.gl.UNSIGNED_BYTE),this.glTypeMapping.set(Uint16Array,this.gl.UNSIGNED_SHORT),this.toggle=0}return A(t,[{key:"deleteBuffer",value:function(e){var t=this.gl,n=this.buffers.get(e);if(null!=n){for(var i in e.attributes)t.deleteBuffer(n.vbos.get(i).handle);this.buffers.delete(e)}}},{key:"createBuffer",value:function(n){var e,i=this,t=this.gl,r=new bm;for(e in r.vao=t.createVertexArray(),r.numElements=n.attributes.position.count,t.bindVertexArray(r.vao),n.attributes){var a,o=n.attributes[e],s=t.createBuffer(),l=(t.bindBuffer(t.ARRAY_BUFFER,s),t.bufferData(t.ARRAY_BUFFER,o.array,t.STATIC_DRAW),o.normalized),u=this.glTypeMapping.get(o.array.constructor);void 0!==Am[e]&&(a=Am[e].location,t.vertexAttribPointer(a,o.itemSize,u,l,0,0),t.enableVertexAttribArray(a)),r.vbos.set(e,{handle:s,name:e,count:o.count,itemSize:o.itemSize,type:n.attributes.position.array.constructor,version:0})}return t.bindBuffer(t.ARRAY_BUFFER,null),t.bindVertexArray(null),n.addEventListener("dispose",function e(t){i.deleteBuffer(n),n.removeEventListener("dispose",e)}),r}},{key:"updateBuffer",value:function(e){var t,n=this.gl,i=this.buffers.get(e);for(t in n.bindVertexArray(i.vao),e.attributes){var r=e.attributes[t],a=r.normalized,o=this.glTypeMapping.get(r.array.constructor),s=null;i.vbos.has(t)?(s=i.vbos.get(t).handle,i.vbos.get(t).version=r.version):(s=n.createBuffer(),i.vbos.set(t,{handle:s,name:t,count:r.count,itemSize:r.itemSize,type:e.attributes.position.array.constructor,version:r.version})),n.bindBuffer(n.ARRAY_BUFFER,s),n.bufferData(n.ARRAY_BUFFER,r.array,n.STATIC_DRAW),void 0!==Am[t]&&(s=Am[t].location,n.vertexAttribPointer(s,r.itemSize,o,a,0,0),n.enableVertexAttribArray(s))}n.bindBuffer(n.ARRAY_BUFFER,null),n.bindVertexArray(null)}},{key:"traverse",value:function(e){for(var t=[],n=[e];0<n.length;){var i=n.pop();i instanceof Zf?t.push(i):(i=i.children.filter(function(e){return e.visible}),n.push.apply(n,J(i)))}return{octrees:t}}},{key:"renderNodes",value:function(L,e,R,t,n,F,i){var O,N=this,G=(W.measureTimings&&performance.mark("renderNodes-start"),this.gl),U=i.material||L.material,z=null==i.shadowMaps?[]:i.shadowMaps,H=t.matrixWorldInverse,Q=(i.viewOverride&&(H=i.viewOverride),new _e),V=new Float32Array(16),j=0,r=q(e);try{for(r.s();!(O=r.n()).done;)(function(){var e=O.value;if(void 0!==W.debug.allowedNodes&&!W.debug.allowedNodes.includes(e.name))return;for(var t=e.sceneNode.matrixWorld,n=(Q.multiplyMatrices(H,t),R&&(n=R.offsets.get(e),F.setUniform1f("uVNStart",n)),e.getLevel()),i=(e.debug?F.setUniform("uDebug",!0):F.setUniform("uDebug",!1),F.uniformLocations.modelMatrix),i=(i&&(V.set(t.elements),G.uniformMatrix4fv(i,!1,V)),F.uniformLocations.modelViewMatrix),r=0;r<16;r++)V[r]=Q.elements[r];if(G.uniformMatrix4fv(i,!1,V),U.clipPolygons&&0<U.clipPolygons.length){var a,o=[],s=[],l=q(U.clipPolygons);try{for(l.s();!(a=l.n()).done;){var u=a.value,c=u.viewMatrix,h=u.projMatrix.clone().multiply(c).multiply(t);o.push(u.markers.length),s.push(h)}}catch(e){l.e(e)}finally{l.f()}for(var i=(i=[]).concat.apply(i,J(s.map(function(e){return e.elements}))),d=new Array(24*U.clipPolygons.length),p=0;p<U.clipPolygons.length;p++)for(var f=U.clipPolygons[p],m=0;m<f.markers.length;m++)d[24*p+(3*m+0)]=f.markers[m].position.x,d[24*p+(3*m+1)]=f.markers[m].position.y,d[24*p+(3*m+2)]=f.markers[m].position.z;var v=F.uniformLocations["uClipPolygonVCount[0]"],v=(G.uniform1iv(v,o),F.uniformLocations["uClipPolygonWVP[0]"]),v=(G.uniformMatrix4fv(v,!1,i),F.uniformLocations["uClipPolygonVertices[0]"]);G.uniform3fv(v,d)}if(F.setUniform1f("uLevel",n),F.setUniform1f("uNodeSpacing",e.geometryNode.estimatedSpacing),F.setUniform1f("uPCIndex",j),0<z.length){var i=F.uniformLocations["uShadowMap[0]"],g=(F.setUniform3f("uShadowColor",U.uniforms.uShadowColor.value),new Array(z.length).fill(5).map(function(e,t){return e+t}));G.uniform1iv(i,g);for(var A=0;A<z.length;A++){var y=z[A],w=g[A],y=N.threeRenderer.properties.get(y.target.texture).__webglTexture;G.activeTexture(G["TEXTURE".concat(w)]),G.bindTexture(G.TEXTURE_2D,y)}v=z.map(function(e){return e.camera.matrixWorldInverse}).map(function(e){return(new _e).multiplyMatrices(e,t)}),i=(n=[]).concat.apply(n,J(v.map(function(e){return e.elements}))),n=F.uniformLocations["uShadowWorldView[0]"];G.uniformMatrix4fv(n,!1,i);n=(v=[]).concat.apply(v,J(z.map(function(e){return e.camera.projectionMatrix.elements}))),i=F.uniformLocations["uShadowProj[0]"];G.uniformMatrix4fv(i,!1,n)}var b=e.geometryNode.geometry,i=(b.attributes["gps-time"]&&(b.attributes["gps-time"],T=(n=(i=(v=L.getAttribute("gps-time")).initialRange)[1]-i[0])/(v=(e=v.range)[1]-e[0]),i=-(e[0]-i[0])/n,T=Number.isNaN(T)?1:T,i=Number.isNaN(i)?0:i,F.setUniform1f("uGpsScale",T),F.setUniform1f("uGpsOffset",i),T=[((n=U.uniforms.uFilterGPSTimeClipRange.value)[0]-e[0])/v,(n[1]-e[0])/v],F.setUniform2f("uFilterGPSTimeClipRange",T)),U.uniforms.uFilterReturnNumberRange.value),n=U.uniforms.uFilterNumberOfReturnsRange.value,e=U.uniforms.uFilterPointSourceIDClipRange.value,x=(F.setUniform2f("uFilterReturnNumberRange",i),F.setUniform2f("uFilterNumberOfReturnsRange",n),F.setUniform2f("uFilterPointSourceIDClipRange",e),null);if(N.buffers.has(b))for(var E in x=N.buffers.get(b),b.attributes)b.attributes[E].version>x.vbos.get(E).version&&N.updateBuffer(b);else x=N.createBuffer(b),N.buffers.set(b,x);if(G.bindVertexArray(x.vao),void 0===Am[U.activeAttributeName]&&Object.keys(b.attributes).includes(U.activeAttributeName)){var C,B=Am.aExtra.location;for(C in b.attributes){b.attributes[C];var _=x.vbos.get(C);G.bindBuffer(G.ARRAY_BUFFER,_.handle),G.disableVertexAttribArray(B)}var M=U.activeAttributeName,v=b.attributes[M],T=x.vbos.get(M),e=(void 0!==v&&void 0!==T&&(i=N.glTypeMapping.get(v.array.constructor),n=v.normalized,G.bindBuffer(G.ARRAY_BUFFER,T.handle),G.vertexAttribPointer(B,v.itemSize,i,n,0,0),G.enableVertexAttribArray(B)),L.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===M})),T=(T=U.getRange(M))||e.range,v=e.initialRange,i=v[1]-v[0],n=T=T||[0,1],e=i/(n[1]-n[0]),T=-(n[0]-v[0])/i,e=Number.isNaN(e)?1:e,T=Number.isNaN(T)?0:T;F.setUniform1f("uExtraScale",e),F.setUniform1f("uExtraOffset",T)}else for(var S in b.attributes){var I,D,P=b.attributes[S],k=x.vbos.get(S);void 0!==Am[S]&&(S=Am[S].location,I=N.glTypeMapping.get(P.array.constructor),D=P.normalized,G.bindBuffer(G.ARRAY_BUFFER,k.handle),G.vertexAttribPointer(S,P.itemSize,I,D,0,0),G.enableVertexAttribArray(S))}n=x.numElements;G.drawArrays(G.POINTS,0,n),j++})()}catch(e){r.e(e)}finally{r.f()}G.bindVertexArray(null),W.measureTimings&&(performance.mark("renderNodes-end"),performance.measure("render.renderNodes","renderNodes-start","renderNodes-end"))}},{key:"renderOctree",value:function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},a=this.gl,o=r.material||e.material,s=null==r.shadowMaps?[]:r.shadowMaps,l=n.matrixWorldInverse,u=n.matrixWorld,c=(r.viewOverride&&(u=(l=r.viewOverride).clone().invert()),n.projectionMatrix),h=c.clone().invert(),d=null,p=null,f=0;0<=o.pointSizeType&&(o.pointSizeType!==cm.ADAPTIVE&&"level of detail"!==o.activeAttributeName||(m=null!=r.vnTextureNodes?r.vnTextureNodes:t,p=e.computeVisibilityTextureData(m,n),(m=o.visibleNodesTexture).image.data.set(p.data),m.needsUpdate=!0));this.shaders.has(o)||(m=[o.vertexShader,o.fragmentShader],m=new ym(a,"pointcloud",m[0],m[1]),this.shaders.set(o,m)),d=this.shaders.get(o);var m=[o.vertexShader,o.fragmentShader],v=m[0],m=m[1],g=o.snapEnabled?o.numSnapshots:0,A=o.clipBoxes&&o.clipBoxes.length?o.clipBoxes.length:0,y=r.clipSpheres&&r.clipSpheres.length?r.clipSpheres.length:0,w=o.clipPolygons&&o.clipPolygons.length?o.clipPolygons.length:0,s=["#define num_shadowmaps ".concat(s.length),"#define num_snapshots ".concat(g),"#define num_clipboxes ".concat(A),"#define num_clipspheres ".concat(y),"#define num_clippolygons ".concat(w)],A=(e.pcoGeometry.root.isLoaded()&&((g=e.pcoGeometry.root.geometry.attributes)["gps-time"]&&s.push("#define clip_gps_enabled"),g["return number"]&&s.push("#define clip_return_number_enabled"),g["number of returns"]&&s.push("#define clip_number_of_returns_enabled"),g["source id"]||g["point source id"])&&s.push("#define clip_point_source_id_enabled"),s.join("\n")),y=v.indexOf("#version "),w=m.indexOf("#version "),v=0<=y?v.replace(/(#version .*)/,"$1\n".concat(A)):"".concat(A,"\n").concat(v),m=0<=w?m.replace(/(#version .*)/,"$1\n".concat(A)):"".concat(A,"\n").concat(m);d.update(v,m),o.needsUpdate=!1;for(var b=0,x=Object.keys(o.uniforms);b<x.length;b++){var E,C=x[b],C=o.uniforms[C];"t"==C.type&&(C=C.value)&&(this.textures.has(C)||(E=new wm(a,C),this.textures.set(C,E)),this.textures.get(C).update())}a.useProgram(d.program);(void 0===r.transparent||r.transparent)&&o.opacity<1?(a.enable(a.BLEND),a.blendFunc(a.SRC_ALPHA,a.ONE),a.depthMask(!1),a.disable(a.DEPTH_TEST)):(a.disable(a.BLEND),a.depthMask(!0),a.enable(a.DEPTH_TEST)),void 0!==r.blendFunc&&(a.enable(a.BLEND),a.blendFunc.apply(a,J(r.blendFunc))),void 0!==r.depthTest&&(!0===r.depthTest?a.enable(a.DEPTH_TEST):a.disable(a.DEPTH_TEST)),void 0!==r.depthWrite&&(!0===r.depthWrite?a.depthMask(!0):a.depthMask(!1)),d.setUniformMatrix4("projectionMatrix",c),d.setUniformMatrix4("viewMatrix",l),d.setUniformMatrix4("uViewInv",u),d.setUniformMatrix4("uProjInv",h);g=i?i.width:o.screenWidth,s=i?i.height:o.screenHeight;if(d.setUniform1f("uScreenWidth",g),d.setUniform1f("uScreenHeight",s),d.setUniform1f("fov",Math.PI*n.fov/180),d.setUniform1f("near",n.near),d.setUniform1f("far",n.far),n instanceof mh?(d.setUniform("uUseOrthographicCamera",!0),d.setUniform("uOrthoWidth",n.right-n.left),d.setUniform("uOrthoHeight",n.top-n.bottom)):d.setUniform("uUseOrthographicCamera",!1),o.clipBoxes.length+o.clipPolygons.length===0?d.setUniform1i("clipTask",om.NONE):d.setUniform1i("clipTask",o.clipTask),d.setUniform1i("clipMethod",o.clipMethod),o.clipBoxes&&0<o.clipBoxes.length&&(y=d.uniformLocations["clipBoxes[0]"],a.uniformMatrix4fv(y,!1,o.uniforms.clipBoxes.value)),r.clipSpheres&&0<r.clipSpheres.length){var B,_=[],M=q(r.clipSpheres);try{for(M.s();!(B=M.n()).done;){var T=B.value.matrixWorld,S=n.matrixWorld,R=T.clone().invert(),F=(new _e).multiplyMatrices(R,S);_.push(F)}}catch(e){M.e(e)}finally{M.f()}A=(w=[]).concat.apply(w,J(_.map(function(e){return e.elements}))),v=d.uniformLocations["uClipSpheres[0]"];a.uniformMatrix4fv(v,!1,A)}d.setUniform1f("size",o.size),d.setUniform1f("maxSize",o.uniforms.maxSize.value),d.setUniform1f("minSize",o.uniforms.minSize.value),d.setUniform1f("uOctreeSpacing",o.spacing),d.setUniform("uOctreeSize",o.uniforms.octreeSize.value),d.setUniform3f("uColor",o.color.toArray()),d.setUniform1f("uOpacity",o.opacity),d.setUniform2f("elevationRange",o.elevationRange),d.setUniform2f("intensityRange",o.intensityRange),d.setUniform3f("uIntensity_gbc",[o.intensityGamma,o.intensityBrightness,o.intensityContrast]),d.setUniform3f("uRGB_gbc",[o.rgbGamma,o.rgbBrightness,o.rgbContrast]),d.setUniform1f("uTransition",o.transition),d.setUniform1f("wRGB",o.weightRGB),d.setUniform1f("wIntensity",o.weightIntensity),d.setUniform1f("wElevation",o.weightElevation),d.setUniform1f("wClassification",o.weightClassification),d.setUniform1f("wReturnNumber",o.weightReturnNumber),d.setUniform1f("wSourceID",o.weightSourceID),d.setUniform("backfaceCulling",o.uniforms.backfaceCulling.value);m=this.textures.get(o.visibleNodesTexture),m&&(d.setUniform1i("visibleNodesTexture",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(m.target,m.id),f++),c=this.textures.get(o.gradientTexture),d.setUniform1i("gradient",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(c.target,c.id),l=o.elevationGradientRepeat,l===lm.REPEAT?(a.texParameteri(c.target,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(c.target,a.TEXTURE_WRAP_T,a.REPEAT)):l===lm.MIRRORED_REPEAT?(a.texParameteri(c.target,a.TEXTURE_WRAP_S,a.MIRRORED_REPEAT),a.texParameteri(c.target,a.TEXTURE_WRAP_T,a.MIRRORED_REPEAT)):(a.texParameteri(c.target,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(c.target,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE)),f++,u=this.textures.get(o.classificationTexture),d.setUniform1i("classificationLUT",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(u.target,u.id),f++,h=this.textures.get(o.matcapTexture);if(d.setUniform1i("matcapTextureUniform",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(h.target,h.id),f++,!0===o.snapEnabled){var g=d.uniformLocations["uSnapshot[0]"],s=d.uniformLocations["uSnapshotDepth[0]"],y=f,I=new Array(5).fill(y).map(function(e,t){return e+t}),D=new Array(5).fill(1+Math.max.apply(Math,J(I))).map(function(e,t){return e+t}),f=1+Math.max.apply(Math,J(D));a.uniform1iv(g,I),a.uniform1iv(s,D);for(var P=0;P<5;P++){var k=o.uniforms.uSnapshot.value[P],L=o.uniforms.uSnapshotDepth.value[P];if(!k)break;var k=this.threeRenderer.properties.get(k).__webglTexture,L=this.threeRenderer.properties.get(L).__webglTexture,O=I[P],N=D[P];a.activeTexture(a["TEXTURE".concat(O)]),a.bindTexture(a.TEXTURE_2D,k),a.activeTexture(a["TEXTURE".concat(N)]),a.bindTexture(a.TEXTURE_2D,L)}v=(w=[]).concat.apply(w,J(o.uniforms.uSnapView.value.map(function(e){return e.elements}))),A=d.uniformLocations["uSnapView[0]"];a.uniformMatrix4fv(A,!1,v);l=(m=[]).concat.apply(m,J(o.uniforms.uSnapProj.value.map(function(e){return e.elements}))),c=d.uniformLocations["uSnapProj[0]"];a.uniformMatrix4fv(c,!1,l);h=(u=[]).concat.apply(u,J(o.uniforms.uSnapProjInv.value.map(function(e){return e.elements}))),y=d.uniformLocations["uSnapProjInv[0]"];a.uniformMatrix4fv(y,!1,h);g=(f=[]).concat.apply(f,J(o.uniforms.uSnapViewInv.value.map(function(e){return e.elements}))),s=d.uniformLocations["uSnapViewInv[0]"];a.uniformMatrix4fv(s,!1,g)}this.renderNodes(e,t,p,n,i,d,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,null),a.activeTexture(a.TEXTURE0)}},{key:"render",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},r=this.gl;null!=n&&this.threeRenderer.setRenderTarget(n);var a,o=q(this.traverse(e).octrees);try{for(o.s();!(a=o.n()).done;){var s=a.value,l=s.visibleNodes;this.renderOctree(s,l,t,n,i)}}catch(e){o.e(e)}finally{o.f()}r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,null),r.bindBuffer(r.ARRAY_BUFFER,null),r.bindVertexArray(null),this.threeRenderer.resetState()}}]),t}();function Em(e,t){for(var n=0,i=Object.keys(t.uniforms);n<i.length;n++){var r=i[n];t.uniforms[r].value=e.uniforms[r].value}t.gradientTexture=e.gradientTexture,t.visibleNodesTexture=e.visibleNodesTexture,t.classificationTexture=e.classificationTexture,t.matcapTexture=e.matcapTexture,t.activeAttributeName=e.activeAttributeName,t.ranges=e.ranges}var Cm,Bm=function(){function n(e,t){te(this,n),this.geometry=e,this.material=t,this.sceneNode=new Pl(e,t),this.geometryNode={estimatedSpacing:1,geometry:e}}return A(n,[{key:"getLevel",value:function(){return 0}}]),n}(),_m=function(){y(i,Zf);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).trueOctree=e,t.pcoGeometry=e.pcoGeometry,t.points=[],t.visibleNodes=[],t.material=new fm,Em(t.trueOctree.material,t.material),t.material.pointSizeType=cm.FIXED,t.batchSize=1e5,t.currentBatch=null,t}return A(i,[{key:"getAttribute",value:function(e){return this.trueOctree.getAttribute(e)}},{key:"dispose",value:function(){var e,t=q(this.visibleNodes);try{for(t.s();!(e=t.n()).done;)e.value.geometry.dispose()}catch(e){t.e(e)}finally{t.f()}this.visibleNodes=[],this.currentBatch=null,this.points=[]}},{key:"addPoints",value:function(e){null===this.currentBatch&&(this.currentBatch=this.createNewBatch(e)),this.points.push(e);for(var t={start:this.currentBatch.geometry.drawRange.count,count:0},n=new Y,i=new Re,r=0;r<e.numPoints;r++){if(t.start+t.count>=this.batchSize){for(var a=0,o=Object.keys(this.currentBatch.geometry.attributes);a<o.length;a++){var s=o[a],s=this.currentBatch.geometry.attributes[s];s.updateRange.offset=t.start,s.updateRange.count=t.count,s.needsUpdate=!0}this.currentBatch.geometry.computeBoundingBox(),this.currentBatch.geometry.computeBoundingSphere(),this.currentBatch=this.createNewBatch(e),t={start:0,count:0}}i.set(e.data.position[3*r+0]+this.trueOctree.position.x,e.data.position[3*r+1]+this.trueOctree.position.y,e.data.position[3*r+2]+this.trueOctree.position.z);for(var l=e.data.mileage[r],u=i.z,c=(n.expandByPoint(new Re(l,0,u)),t.start+t.count),h=this.currentBatch.geometry,d=0,p=Object.keys(e.data);d<p.length;d++)for(var f=p[d],m=e.data[f],v=h.attributes[f],g=v.itemSize,A=0;A<g;A++)v.array[g*c+A]=m[g*r+A];var y=h.attributes.position;y.array[3*c+0]=l,y.array[3*c+1]=0,y.array[3*c+2]=u,t.count++,this.currentBatch.geometry.drawRange.count++}for(var w=0,b=Object.keys(this.currentBatch.geometry.attributes);w<b.length;w++){var x=b[w],x=this.currentBatch.geometry.attributes[x];x.updateRange.offset=t.start,x.updateRange.count=t.count,x.needsUpdate=!0}e.projectedBox=n,this.projectedBox=this.points.reduce(function(e,t){return e.union(t.projectedBox)},new Y)}},{key:"createNewBatch",value:function(e){for(var t=new j,n=0,i=Object.keys(e.data);n<i.length;n++){var r=i[n],a=e.data[r],o=a.length/e.numPoints,a=a.constructor,s=!1;this.trueOctree.root.sceneNode&&this.trueOctree.root.sceneNode.geometry.attributes[r]&&(s=this.trueOctree.root.sceneNode.geometry.attributes[r].normalized);a=new Q(new a(o*this.batchSize),o,s);a.potree={range:[0,1]},t.setAttribute(r,a)}t.drawRange.start=0,t.drawRange.count=0;var l=new Bm(t,this.material);return this.visibleNodes.push(l),l}},{key:"computeVisibilityTextureData",value:function(){for(var e=new Uint8Array(4*this.visibleNodes.length),t=new Map,n=0;n<this.visibleNodes.length;n++)t[this.visibleNodes[n]]=n;return{data:e,offsets:t}}}]),i}(),Mm=function(){y(i,Yf);var n=C(i);function i(e){te(this,i),(t=n.call(this)).viewer=e,t.elRoot=$("#profile_window"),t.renderArea=t.elRoot.find("#profileCanvasContainer"),t.svg=d3.select("svg#profileSVG"),t.mouseIsDown=!1,t.projectedBox=new Y,t.pointclouds=new Map,t.numPoints=0,t.lastAddPointsTimestamp=void 0,t.mouse=new Le(0,0),t.scale=new Re(1,1,1),t.autoFitEnabled=!0,t.autoFit=!1;var t,e="".concat(W.resourcePath,"/icons/arrow_cw.svg"),e=($("#potree_profile_rotate_cw").attr("src",e),"".concat(W.resourcePath,"/icons/arrow_ccw.svg")),e=($("#potree_profile_rotate_ccw").attr("src",e),"".concat(W.resourcePath,"/icons/arrow_up.svg")),e=($("#potree_profile_move_forward").attr("src",e),"".concat(W.resourcePath,"/icons/arrow_down.svg")),e=($("#potree_profile_move_backward").attr("src",e),"".concat(W.resourcePath,"/icons/file_csv_2d.svg")),e=($("#potree_download_csv_icon").attr("src",e),"".concat(W.resourcePath,"/icons/file_las_3d.svg")),e=($("#potree_download_las_icon").attr("src",e),"".concat(W.resourcePath,"/icons/close.svg"));return $("#closeProfileContainer").attr("src",e),t.initTHREE(),t.initSVG(),t.initListeners(),t.pRenderer=new xm(t.renderer),t.elRoot.i18n(),t}return A(i,[{key:"initListeners",value:function(){function m(){var e=v.viewer.scene.getActiveCamera(),t=v.viewer.renderer.domElement,n=v.viewerPickSphere.position.distanceTo(e.position),e=10/ie.projectedRadius(1,e,n,t.clientWidth,t.clientHeight);v.viewerPickSphere.scale.set(e,e,e)}function e(e){v.autoFit=!1;var t=0,e=(void 0!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),Math.sign(t)),t=[v.scaleX.invert(v.mouse.x),v.scaleY.invert(v.mouse.y)],e=(0<e?v.scale.multiplyScalar(1.1):v.scale.multiplyScalar(100/110),v.updateScales(),[v.scaleX.invert(v.mouse.x),v.scaleY.invert(v.mouse.y)]);v.camera.position.x-=e[0]-t[0],v.camera.position.z-=e[1]-t[1],v.render(),v.updateScales()}function t(){var e,t=new Jf,n=q(v.pointclouds);try{for(n.s();!(e=n.n()).done;){var i,r=N(e.value,2),a=r[0],o=q(r[1].points);try{for(o.s();!(i=o.n()).done;){for(var s=i.value,l=s.data.position,u=new Float32Array(l),c=0;c<s.numPoints;c++)u[3*c+2]+=a.position.z;s.data.position=u,t.add(s),s.data.position=l}}catch(e){o.e(e)}finally{o.f()}}}catch(e){n.e(e)}finally{n.f()}return t}var v=this;$(window).resize(function(){v.enabled&&v.render()}),this.renderArea.mousedown(function(e){v.mouseIsDown=!0}),this.renderArea.mouseup(function(e){v.mouseIsDown=!1}),this.renderArea.mousemove(function(e){if(0!==v.pointclouds.size){var t=v.renderArea[0].getBoundingClientRect(),n=e.clientX-t.left,e=e.clientY-t.top,t=new Le(n,e);if(v.mouseIsDown){v.autoFit=!1,v.lastDrag=(new Date).getTime();n=[v.scaleX.invert(v.mouse.x),v.scaleY.invert(v.mouse.y)],e=[v.scaleX.invert(t.x),v.scaleY.invert(t.y)];v.camera.position.x-=e[0]-n[0],v.camera.position.z-=e[1]-n[1],v.render()}else if(0<v.pointclouds.size){var e=Math.abs(v.scaleX.invert(0)-v.scaleX.invert(40)),n=v.scaleX.invert(t.x),i=v.scaleY.invert(t.y),r=v.selectPoint(n,i,e);if(r){for(var a=r.point,o=new Float64Array([a.position[0]+r.pointcloud.position.x,a.position[1]+r.pointcloud.position.y,a.position[2]+r.pointcloud.position.z]),i=(v.elRoot.find("#profileSelectionProperties").fadeIn(200),v.pickSphere.visible=!0,v.pickSphere.scale.set(.5*e,.5*e,.5*e),v.pickSphere.position.set(a.mileage,0,o[2]),(n=v.viewerPickSphere.position).set.apply(n,J(o)),v.viewer.scene.scene.children.includes(v.viewerPickSphere)||(v.viewer.scene.scene.add(v.viewerPickSphere),v.viewer.hasEventListener("update",m))||v.viewer.addEventListener("update",m),v.elRoot.find("#profileSelectionProperties")),s="<table>",l=0,u=Object.keys(a);l<u.length;l++){var c,h=u[l],d=a[h],p=r.pointcloud.getAttribute(h),f=function(e){return e};p&&4<p.type.size&&!function(){var e=p.initialRange,t=1/(e[1]-e[0]),n=e[0];f=function(e){return e/t+n}}(),"position"===h?(c=J(o).map(function(e){return ie.addCommas(e.toFixed(3))}),s+="\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>x</td>\n\t\t\t\t\t\t\t\t\t<td>".concat(c[0],"</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>y</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(c[1],"</td>\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>z</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(c[2],"</td>\n\t\t\t\t\t\t\t\t</tr>")):"rgba"===h?s+="\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>".concat(h,"</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(d.join(", "),"</td>\n\t\t\t\t\t\t\t\t</tr>"):"normal"!==h&&(s+="mileage"===h?"\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>".concat(h,"</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(d.toFixed(3),"</td>\n\t\t\t\t\t\t\t\t</tr>"):"\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<td>".concat(h,"</td>\n\t\t\t\t\t\t\t\t\t<td>").concat(f(d),"</td>\n\t\t\t\t\t\t\t\t</tr>"))}i.html(s+="</table>"),v.selectedPoint=a}else{v.viewer.scene.scene.add(v.viewerPickSphere);e=v.viewer.scene.scene.children.indexOf(v.viewerPickSphere);0<=e&&v.viewer.scene.scene.children.splice(e,1),v.viewer.removeEventListener("update",m)}v.render()}v.mouse.copy(t)}}),$(this.renderArea)[0].addEventListener("mousewheel",e,!1),$(this.renderArea)[0].addEventListener("DOMMouseScroll",e,!1),$("#closeProfileContainer").click(function(){v.hide()});$("#potree_download_csv_icon").click(function(){var e=t(),e=qf.toString(e),e=new Blob([e],{type:"text/string"});$("#potree_download_profile_ortho_link").attr("href",URL.createObjectURL(e))}),$("#potree_download_las_icon").click(function(){var e=t(),e=Xf.toLAS(e),e=new Blob([e],{type:"application/octet-binary"});$("#potree_download_profile_link").attr("href",URL.createObjectURL(e))})}},{key:"selectPoint",value:function(e,t,n){var i,r={distance:1/0,pointcloud:null,points:null,index:null},a=new bd(new Le(e-n,t-n),new Le(e+n,t+n)),o=q(this.pointclouds);try{for(o.s();!(i=o.n()).done;){var s,l=N(i.value,2),u=l[0],c=q(l[1].points);try{for(c.s();!(s=c.n()).done;){var h=s.value;if(new bd(new Le(h.projectedBox.min.x,h.projectedBox.min.z),new Le(h.projectedBox.max.x,h.projectedBox.max.z)).intersectsBox(a)){h.numPoints;for(var d=0;d<h.numPoints;d++){var p,f=h.data.mileage[d]-e,m=h.data.position[3*d+2]-t+u.position.z,v=Math.sqrt(f*f+m*m),g=v<n&&v<r.distance,A=!0;!h.data.classification||!(p=u.material.classification[h.data.classification[d]])||p.visible&&0!==p.color.w||(A=!1),g&&A&&(r={distance:v,pointcloud:u,points:h,index:d})}}else h.numPoints}}catch(e){c.e(e)}finally{c.f()}}}catch(e){o.e(e)}finally{o.f()}if(r.distance<1/0){for(var y=r.points,w={},b=0,x=Object.keys(y.data);b<x.length;b++){var E=x[b],C=y.data[E],B=C.length/y.numPoints,C=C.subarray(B*r.index,B*r.index+B);1===C.length?w[E]=C[0]:w[E]=C}return r.point=w,r}return null}},{key:"initTHREE",value:function(){this.renderer=new Ts({alpha:!0,premultipliedAlpha:!1}),this.renderer.setClearColor(0,0),this.renderer.setSize(10,10),this.renderer.autoClear=!1,this.renderArea.append($(this.renderer.domElement)),this.renderer.domElement.tabIndex="2222",$(this.renderer.domElement).css("width","100%"),$(this.renderer.domElement).css("height","100%");var e=this.renderer.getContext();if(null==e.createVertexArray){var t=e.getExtension("OES_vertex_array_object");if(!t)throw new Error("OES_vertex_array_object extension not supported");e.createVertexArray=t.createVertexArrayOES.bind(t),e.bindVertexArray=t.bindVertexArrayOES.bind(t)}this.camera=new mh(-1e3,1e3,1e3,-1e3,-1e3,1e3),this.camera.up.set(0,0,1),this.camera.rotation.order="ZXY",this.camera.rotation.x=Math.PI/2,this.scene=new Ps,this.profileScene=new Ps;e=new Hu(1,16,16),t=new sc;this.pickSphere=new Z(e,t),this.scene.add(this.pickSphere),this.viewerPickSphere=new Z(e,t)}},{key:"initSVG",value:function(){var e=this.renderArea[0].clientWidth,t=this.renderArea[0].clientHeight,n=this.renderArea[0].offsetLeft;this.svg.selectAll("*").remove(),this.scaleX=d3.scale.linear().domain([this.camera.left+this.camera.position.x,this.camera.right+this.camera.position.x]).range([0,e]),this.scaleY=d3.scale.linear().domain([this.camera.bottom+this.camera.position.z,this.camera.top+this.camera.position.z]).range([t,0]),this.xAxis=d3.svg.axis().scale(this.scaleX).orient("bottom").innerTickSize(-t).outerTickSize(1).tickPadding(10).ticks(e/50),this.yAxis=d3.svg.axis().scale(this.scaleY).orient("left").innerTickSize(-e).outerTickSize(1).tickPadding(10).ticks(t/20),this.elXAxis=this.svg.append("g").attr("class","x axis").attr("transform","translate(".concat(n,", ").concat(t,")")).call(this.xAxis),this.elYAxis=this.svg.append("g").attr("class","y axis").attr("transform","translate(".concat(n,", 0)")).call(this.yAxis)}},{key:"addPoints",value:function(e,t){var n=this;if(0!==t.numPoints){var i,r,a,o=this.pointclouds.get(e),s=(o||(o=new _m(e),this.pointclouds.set(e,o),this.profileScene.add(o),(i=function(){n.render()})(),e.material.addEventListener("material_property_changed",i),this.addEventListener("on_reset_once",function(){e.material.removeEventListener("material_property_changed",i)})),o.addPoints(t),this.projectedBox.union(o.projectedBox),this.autoFit&&this.autoFitEnabled&&(t=this.renderArea[0].clientWidth,o=this.renderArea[0].clientHeight,r=t/(t=this.projectedBox.getSize(new Re)).x,o=o/t.z,t=Math.min(r,o),r=this.projectedBox.getCenter(new Re),this.scale.set(t,t,1),this.camera.position.copy(r)),this.render(),0),l=q(this.pointclouds.entries());try{for(l.s();!(a=l.n()).done;){var u=N(a.value,2);u[0];s+=u[1].points.reduce(function(e,t){return e+t.numPoints},0)}}catch(e){l.e(e)}finally{l.f()}$("#profile_num_points").html(ie.addCommas(s))}}},{key:"reset",value:function(){this.lastReset=(new Date).getTime(),this.dispatchEvent({type:"on_reset_once"}),this.removeEventListeners("on_reset_once"),this.autoFit=!0,this.projectedBox=new Y;var e,t=q(this.pointclouds);try{for(t.s();!(e=t.n()).done;){var n=N(e.value,2);n[0];n[1].dispose()}}catch(e){t.e(e)}finally{t.f()}this.pointclouds.clear(),this.mouseIsDown=!1,this.mouse.set(0,0),this.autoFitEnabled&&this.scale.set(1,1,1),this.pickSphere.visible=!1,this.elRoot.find("#profileSelectionProperties").hide(),this.render()}},{key:"show",value:function(){this.elRoot.fadeIn(),this.enabled=!0}},{key:"hide",value:function(){this.elRoot.fadeOut(),this.enabled=!1}},{key:"updateScales",value:function(){var e=this.renderArea[0].clientWidth,t=this.renderArea[0].clientHeight,n=-e/2/this.scale.x,i=+e/2/this.scale.x,r=+t/2/this.scale.y,a=-t/2/this.scale.y,n=(this.camera.left=n,this.camera.right=i,this.camera.top=r,this.camera.bottom=a,this.camera.updateProjectionMatrix(),this.scaleX.domain([this.camera.left+this.camera.position.x,this.camera.right+this.camera.position.x]).range([0,e]),this.scaleY.domain([this.camera.bottom+this.camera.position.z,this.camera.top+this.camera.position.z]).range([t,0]),this.renderArea[0].offsetLeft);this.xAxis.scale(this.scaleX).orient("bottom").innerTickSize(-t).outerTickSize(1).tickPadding(10).ticks(e/50),this.yAxis.scale(this.scaleY).orient("left").innerTickSize(-e).outerTickSize(1).tickPadding(10).ticks(t/20),this.elXAxis.attr("transform","translate(".concat(n,", ").concat(t,")")).call(this.xAxis),this.elYAxis.attr("transform","translate(".concat(n,", 0)")).call(this.yAxis)}},{key:"requestScaleUpdate",value:function(){void 0===this.lastReset||void 0===this.lastScaleUpdate||100<(new Date).getTime()-this.lastReset&&100<(new Date).getTime()-this.lastScaleUpdate?(this.updateScales(),this.lastScaleUpdate=(new Date).getTime(),this.scaleUpdatePending=!1):this.scaleUpdatePending||(setTimeout(this.requestScaleUpdate.bind(this),100),this.scaleUpdatePending=!0)}},{key:"render",value:function(){var e,t=this.renderArea[0].clientWidth,n=this.renderArea[0].clientHeight,i=this.renderer,r=this.pRenderer,a=this.camera,o=this.profileScene,s=this.scene,l=this.scaleX,u=this.pickSphere,c=(i.setSize(t,n),i.setClearColor(0,0),i.clear(!0,!0,!1),q(this.pointclouds.keys()));try{for(c.s();!(e=c.n()).done;){var h=e.value,d=h.material,p=this.pointclouds.get(h).material;Em(d,p),p.size=2}}catch(e){c.e(e)}finally{c.f()}r.render(o,a,null);t=Math.abs(l.invert(0)-l.invert(5));0===t?u.visible=!1:(u.scale.set(t,t,t),u.visible=!0),i.render(s,a),this.requestScaleUpdate()}}]),i}(),Tm=function(){function n(e){function t(e){var t=l.profile,n=t.points,i=n[0],r=n[n.length-1],i=i.clone().add(r).multiplyScalar(.5),r=(new _e).makeTranslation(-i.x,-i.y,-i.z),e=(new _e).makeRotationZ(e),a=(new _e).makeTranslation(i.x,i.y,i.z).multiply(e).multiply(r),o=n.map(function(e){return e.clone().applyMatrix4(a)});l.profileWindow.autoFitEnabled=!1;for(var s=0;s<n.length;s++)t.setPosition(s,o[s])}var l=this;te(this,n),this.viewer=e,this.profileWindow=e.profileWindow,this.profile=null,this.numPoints=0,this.threshold=6e4,this.rotateAmount=10,this.scheduledRecomputeTime=null,this.enabled=!0,this.requests=[],this._recompute=function(){l.recompute()},this.viewer.addEventListener("scene_changed",function(e){e.oldScene.removeEventListener("pointcloud_added",l._recompute),e.scene.addEventListener("pointcloud_added",l._recompute)}),this.viewer.scene.addEventListener("pointcloud_added",this._recompute),$("#potree_profile_rotate_amount").val(parseInt(this.rotateAmount)),$("#potree_profile_rotate_amount").on("input",function(e){var t=$("#potree_profile_rotate_amount").val();isNaN(t)?$("#potree_profile_rotate_amount").css("background-color","#ff9999"):(t=parseFloat(t),l.rotateAmount=t,$("#potree_profile_rotate_amount").css("background-color",""))});$("#potree_profile_rotate_cw").click(function(){var e=Be.degToRad(l.rotateAmount);t(-e)}),$("#potree_profile_rotate_ccw").click(function(){var e=Be.degToRad(l.rotateAmount);t(e)}),$("#potree_profile_move_forward").click(function(){var e=l.profile,t=e.points,n=t[0],n=t[t.length-1].clone().sub(n).normalize(),i=new Re(0,0,1).cross(n).clone().multiplyScalar(e.width/2);l.profileWindow.autoFitEnabled=!1;for(var r=0;r<t.length;r++)e.setPosition(r,t[r].clone().add(i))}),$("#potree_profile_move_backward").click(function(){var e=l.profile,t=e.points,n=t[0],n=t[t.length-1].clone().sub(n).normalize(),i=new Re(0,0,1).cross(n).clone().multiplyScalar(-e.width/2);l.profileWindow.autoFitEnabled=!1;for(var r=0;r<t.length;r++)e.setPosition(r,t[r].clone().add(i))})}return A(n,[{key:"setProfile",value:function(e){null!==this.profile&&this.profile!==e&&(this.profile.removeEventListener("marker_moved",this._recompute),this.profile.removeEventListener("marker_added",this._recompute),this.profile.removeEventListener("marker_removed",this._recompute),this.profile.removeEventListener("width_changed",this._recompute)),this.profile=e,this.profile.addEventListener("marker_moved",this._recompute),this.profile.addEventListener("marker_added",this._recompute),this.profile.addEventListener("marker_removed",this._recompute),this.profile.addEventListener("width_changed",this._recompute),this.recompute()}},{key:"reset",value:function(){if(this.profileWindow.reset(),this.numPoints=0,this.profile){var e,t=q(this.requests);try{for(t.s();!(e=t.n()).done;)e.value.cancel()}catch(e){t.e(e)}finally{t.f()}}}},{key:"progressHandler",value:function(e,t){var n,i=q(t.segments);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.profileWindow.addPoints(e,r.points),this.numPoints+=r.points.numPoints}}catch(e){i.e(e)}finally{i.f()}}},{key:"cancel",value:function(){var e,t=q(this.requests);try{for(t.s();!(e=t.n()).done;)e.value.cancel()}catch(e){t.e(e)}finally{t.f()}this.requests=[]}},{key:"finishLevelThenCancel",value:function(){var e,t=q(this.requests);try{for(t.s();!(e=t.n()).done;)e.value.finishLevelThenCancel()}catch(e){t.e(e)}finally{t.f()}this.requests=[]}},{key:"recompute",value:function(){var n=this;if(this.profile&&!(null!==this.scheduledRecomputeTime&&this.scheduledRecomputeTime>(new Date).getTime())){this.scheduledRecomputeTime=(new Date).getTime()+100,this.scheduledRecomputeTime=null,this.reset();var i,t=q(this.viewer.scene.pointclouds.filter(function(e){return e.visible}));try{for(t.s();!(i=t.n()).done;)!function(){var t=i.value,e=t.getPointsInProfile(n.profile,null,{onProgress:function(e){n.enabled&&(n.progressHandler(t,e.points),n.numPoints>n.threshold)&&n.finishLevelThenCancel()},onFinish:function(e){n.enabled},onCancel:function(){n.enabled}});n.requests.push(e)}()}catch(e){t.e(e)}finally{t.f()}}}}]),n}(),Sm=function(){y(o,zn);var a=C(o);function o(e){te(this,o),(t=a.call(this)).viewer=e,t.renderer=e.renderer,t.addEventListener("start_inserting_volume",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.scene=new Ps,t.scene.name="scene_volume",t.viewer.inputHandler.registerInteractiveScene(t.scene),t.onRemove=function(e){t.scene.remove(e.volume)},t.onAdd=function(e){t.scene.add(e.volume)};var t,n,i=q(e.scene.volumes);try{for(i.s();!(n=i.n()).done;){var r=n.value;t.onAdd({volume:r})}}catch(e){i.e(e)}finally{i.f()}return t.viewer.inputHandler.addEventListener("delete",function(e){e.selection.filter(function(e){return e instanceof hf}).forEach(function(e){return t.viewer.scene.removeVolume(e)})}),e.addEventListener("update",t.update.bind(G(t))),e.addEventListener("render.pass.scene",function(e){return t.render(e)}),e.addEventListener("scene_changed",t.onSceneChange.bind(G(t))),e.scene.addEventListener("volume_added",t.onAdd),e.scene.addEventListener("volume_removed",t.onRemove),t}return A(o,[{key:"onSceneChange",value:function(e){e.oldScene&&(e.oldScene.removeEventListeners("volume_added",this.onAdd),e.oldScene.removeEventListeners("volume_removed",this.onRemove)),e.scene.addEventListener("volume_added",this.onAdd),e.scene.addEventListener("volume_removed",this.onRemove)}},{key:"startInsertion",value:function(){function t(e){i.removeEventListener("drag",a),i.removeEventListener("drop",t),r.callback()}var n=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=new(e.type||df),r=(i.clip=e.clip||!1,i.name=e.name||"Volume",this.dispatchEvent({type:"start_inserting_volume",volume:i}),this.viewer.scene.addVolume(i),this.scene.add(i),{callback:null}),a=function(e){var t=n.viewer.scene.getActiveCamera(),e=ie.getMousePointCloudIntersection(e.drag.end,n.viewer.scene.getActiveCamera(),n.viewer,n.viewer.scene.pointclouds,{pickClipped:!1});e&&(i.position.copy(e.location),e=i.getWorldPosition(new Re).applyMatrix4(t.matrixWorldInverse),t=Math.abs(e.z/5),i.scale.set(t,t,t))};return r.callback=function(e){i.removeEventListener("drag",a),i.removeEventListener("drop",t),n.viewer.removeEventListener("cancel_insertions",r.callback)},i.addEventListener("drag",a),i.addEventListener("drop",t),this.viewer.addEventListener("cancel_insertions",r.callback),this.viewer.inputHandler.startDragging(i),i}},{key:"update",value:function(){if(this.viewer.scene){var e,t=this.viewer.scene.getActiveCamera(),n=this.viewer.renderer.getSize(new Le),i=n.width,r=n.height,a=q(this.viewer.scene.volumes);try{for(a.s();!(e=a.n()).done;){var o=e.value,s=o.label,l=s.position.distanceTo(t.position),u=70/ie.projectedRadius(1,t,l,i,r);s.scale.set(u,u,u);var c=(c=o.getVolume())/Math.pow(this.viewer.lengthUnit.unitspermeter,3)*Math.pow(this.viewer.lengthUnitDisplay.unitspermeter,3),h=ie.addCommas(c.toFixed(3))+" "+this.viewer.lengthUnitDisplay.code+"³";s.setText(h)}}catch(e){a.e(e)}finally{a.f()}}}},{key:"render",value:function(e){var t=this.viewer.renderer,n=t.getRenderTarget();e.renderTarget&&t.setRenderTarget(e.renderTarget),t.render(this.scene,this.viewer.scene.getActiveCamera()),t.setRenderTarget(n)}}]),o}(),Im=function(){y(a,Bl);var r=C(a);function a(e,t){te(this,a),void 0===t&&(t=16776960);var n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),e=new Float32Array([e.min.x,e.min.y,e.min.z,e.max.x,e.min.y,e.min.z,e.max.x,e.min.y,e.max.z,e.min.x,e.min.y,e.max.z,e.min.x,e.max.y,e.min.z,e.max.x,e.max.y,e.min.z,e.max.x,e.max.y,e.max.z,e.min.x,e.max.y,e.max.z]),i=new j,n=(i.setIndex(new Q(n,1)),i.setAttribute("position",new Q(e,3)),new vl({color:t}));return r.call(this,i,n)}return A(a)}(),Dm={LEFT:37,UP:38,RIGHT:39,BOTTOM:40,DELETE:46,A:"A".charCodeAt(0),S:"S".charCodeAt(0),D:"D".charCodeAt(0),W:"W".charCodeAt(0),Q:"Q".charCodeAt(0),E:"E".charCodeAt(0),R:"R".charCodeAt(0),F:"F".charCodeAt(0)},Pm=function(){y(n,nc);var t=C(n);function n(){var e;te(this,n);return(e=t.call(this)).setValues({uniforms:{uDepthMap:{type:"t",value:null},uWeightMap:{type:"t",value:null}},vertexShader:e.getDefines()+nm["normalize.vs"],fragmentShader:e.getDefines()+nm["normalize.fs"]}),e}return A(n,[{key:"getDefines",value:function(){return""}},{key:"updateShaderSource",value:function(){var e=this.getDefines()+nm["normalize.vs"],t=this.getDefines()+nm["normalize.fs"];this.setValues({vertexShader:e,fragmentShader:t}),this.needsUpdate=!0}}]),n}(),km=function(){y(n,nc);var t=C(n);function n(){var e;te(this,n);return(e=t.call(this)).setValues({uniforms:{screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},edlStrength:{type:"f",value:1},radius:{type:"f",value:1},neighbours:{type:"2fv",value:[]},uEDLMap:{type:"t",value:null},uDepthMap:{type:"t",value:null},uWeightMap:{type:"t",value:null}},vertexShader:e.getDefines()+nm["normalize.vs"],fragmentShader:e.getDefines()+nm["normalize_and_edl.fs"]}),e.neighbourCount=8,e}return A(n,[{key:"getDefines",value:function(){var e="";return e+="#define NEIGHBOUR_COUNT "+this.neighbourCount+"\n"}},{key:"updateShaderSource",value:function(){var e=this.getDefines()+nm["normalize.vs"],t=this.getDefines()+nm["normalize_and_edl.fs"];this.setValues({vertexShader:e,fragmentShader:t}),this.uniforms.neighbours.value=this.neighbours,this.needsUpdate=!0}},{key:"neighbourCount",get:function(){return this._neighbourCount},set:function(e){if(this._neighbourCount!==e){this._neighbourCount=e,this.neighbours=new Float32Array(2*this._neighbourCount);for(var t=0;t<this._neighbourCount;t++)this.neighbours[2*t+0]=Math.cos(2*t*Math.PI/this._neighbourCount),this.neighbours[2*t+1]=Math.sin(2*t*Math.PI/this._neighbourCount);this.updateShaderSource()}}}]),n}(),Lm=function(){function t(e){te(this,t),this.viewer=e,this.depthMaterials=new Map,this.attributeMaterials=new Map,this.normalizationMaterial=null,this.rtDepth=null,this.rtAttribute=null,this.gl=e.renderer.getContext(),this.initialized=!1}return A(t,[{key:"init",value:function(){this.initialized||(this.normalizationMaterial=new Pm,this.normalizationMaterial.depthTest=!0,this.normalizationMaterial.depthWrite=!0,this.normalizationMaterial.transparent=!0,this.normalizationEDLMaterial=new km,this.normalizationEDLMaterial.depthTest=!0,this.normalizationEDLMaterial.depthWrite=!0,this.normalizationEDLMaterial.transparent=!0,this.rtDepth=new Zn(1024,1024,{minFilter:ut,magFilter:ut,format:St,type:bt,depthTexture:new Ol(void 0,void 0,wt)}),this.rtAttribute=new Zn(1024,1024,{minFilter:ut,magFilter:ut,format:St,type:bt,depthTexture:this.rtDepth.depthTexture}),this.initialized=!0)}},{key:"resize",value:function(e,t){this.rtDepth.setSize(e,t),this.rtAttribute.setSize(e,t)}},{key:"clearTargets",value:function(){var e=this.viewer.renderer,t=e.getRenderTarget();e.setClearColor(0,0),e.setRenderTarget(this.rtDepth),e.clear(!0,!0,!0),e.setRenderTarget(this.rtAttribute),e.clear(!0,!0,!0),e.setRenderTarget(t)}},{key:"clear",value:function(){this.init();var e=this.viewer,t=e.renderer,e=e.background;"skybox"===e||"gradient"===e?t.setClearColor(0,0):"black"===e?t.setClearColor(0,1):"white"===e?t.setClearColor(16777215,1):t.setClearColor(0,0),t.clear(),this.clearTargets()}},{key:"render",value:function(e){this.init();var t,n=this.viewer,e=e.camera||n.scene.getActiveCamera(),i=this.viewer.renderer.getSize(new Le),r=i.width,a=i.height,i=(n.dispatchEvent({type:"render.pass.begin",viewer:n}),this.resize(r,a),n.scene.pointclouds.filter(function(e){return e.visible})),o=new Map,s=q(i);try{for(s.s();!(t=s.n()).done;){var l,u,c=t.value;o.set(c,c.material),this.attributeMaterials.has(c)||(l=new fm,this.attributeMaterials.set(c,l)),this.depthMaterials.has(c)||((u=new fm).setDefine("depth_pass","#define hq_depth_pass"),u.setDefine("use_edl","#define use_edl"),this.depthMaterials.set(c,u))}}catch(e){s.e(e)}finally{s.f()}var h,d=q(i);try{for(d.s();!(h=d.n()).done;){var p=h.value,f=p.pcoGeometry.boundingBox.getSize(new Re).x,m=o.get(p),v=this.depthMaterials.get(p);v.size=m.size,v.minSize=m.minSize,v.maxSize=m.maxSize,v.pointSizeType=m.pointSizeType,v.visibleNodesTexture=m.visibleNodesTexture,v.weighted=!1,v.screenWidth=r,v.shape=hm.CIRCLE,v.screenHeight=a,v.uniforms.visibleNodes.value=m.visibleNodesTexture,v.uniforms.octreeSize.value=f,v.spacing=p.pcoGeometry.spacing,v.classification=m.classification,v.uniforms.classificationLUT.value.image.data=m.uniforms.classificationLUT.value.image.data,v.classificationTexture.needsUpdate=!0,v.uniforms.uFilterReturnNumberRange.value=m.uniforms.uFilterReturnNumberRange.value,v.uniforms.uFilterNumberOfReturnsRange.value=m.uniforms.uFilterNumberOfReturnsRange.value,v.uniforms.uFilterGPSTimeClipRange.value=m.uniforms.uFilterGPSTimeClipRange.value,v.uniforms.uFilterPointSourceIDClipRange.value=m.uniforms.uFilterPointSourceIDClipRange.value,v.clipTask=m.clipTask,v.clipMethod=m.clipMethod,v.setClipBoxes(m.clipBoxes),v.setClipPolygons(m.clipPolygons),p.material=v}}catch(e){d.e(e)}finally{d.f()}n.pRenderer.render(n.scene.scenePointCloud,e,this.rtDepth,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof pf})});var g,A=q(i);try{for(A.s();!(g=A.n()).done;){var y=g.value,w=y.pcoGeometry.boundingBox.getSize(new Re).x,b=o.get(y),x=this.attributeMaterials.get(y);x.size=b.size,x.minSize=b.minSize,x.maxSize=b.maxSize,x.pointSizeType=b.pointSizeType,x.activeAttributeName=b.activeAttributeName,x.visibleNodesTexture=b.visibleNodesTexture,x.weighted=!0,x.screenWidth=r,x.screenHeight=a,x.shape=hm.CIRCLE,x.uniforms.visibleNodes.value=b.visibleNodesTexture,x.uniforms.octreeSize.value=w,x.spacing=y.pcoGeometry.spacing,x.classification=b.classification,x.uniforms.classificationLUT.value.image.data=b.uniforms.classificationLUT.value.image.data,x.classificationTexture.needsUpdate=!0,x.uniforms.uFilterReturnNumberRange.value=b.uniforms.uFilterReturnNumberRange.value,x.uniforms.uFilterNumberOfReturnsRange.value=b.uniforms.uFilterNumberOfReturnsRange.value,x.uniforms.uFilterGPSTimeClipRange.value=b.uniforms.uFilterGPSTimeClipRange.value,x.uniforms.uFilterPointSourceIDClipRange.value=b.uniforms.uFilterPointSourceIDClipRange.value,x.elevationGradientRepeat=b.elevationGradientRepeat,x.elevationRange=b.elevationRange,x.gradient=b.gradient,x.matcap=b.matcap,x.intensityRange=b.intensityRange,x.intensityGamma=b.intensityGamma,x.intensityContrast=b.intensityContrast,x.intensityBrightness=b.intensityBrightness,x.rgbGamma=b.rgbGamma,x.rgbContrast=b.rgbContrast,x.rgbBrightness=b.rgbBrightness,x.weightRGB=b.weightRGB,x.weightIntensity=b.weightIntensity,x.weightElevation=b.weightElevation,x.weightRGB=b.weightRGB,x.weightClassification=b.weightClassification,x.weightReturnNumber=b.weightReturnNumber,x.weightSourceID=b.weightSourceID,x.color=b.color,x.clipTask=b.clipTask,x.clipMethod=b.clipMethod,x.setClipBoxes(b.clipBoxes),x.setClipPolygons(b.clipPolygons),y.material=x}}catch(e){A.e(e)}finally{A.f()}var E,i=this.gl,C=(n.renderer.setRenderTarget(null),n.pRenderer.render(n.scene.scenePointCloud,e,this.rtAttribute,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof pf}),blendFunc:[i.SRC_ALPHA,i.ONE],depthWrite:!1}),q(o));try{for(C.s();!(E=C.n()).done;){var B=N(E.value,2),_=B[0],M=B[1];_.material=M}}catch(e){C.e(e)}finally{C.f()}n.renderer.setRenderTarget(null),"skybox"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.skybox.camera.rotation.copy(n.scene.cameraP.rotation),n.skybox.camera.fov=n.scene.cameraP.fov,n.skybox.camera.aspect=n.scene.cameraP.aspect,n.skybox.parent.rotation.x=0,n.skybox.parent.updateMatrixWorld(),n.skybox.camera.updateProjectionMatrix(),n.renderer.render(n.skybox.scene,n.skybox.camera)):"gradient"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.renderer.render(n.scene.sceneBG,n.scene.cameraBG)):("black"===n.background?n.renderer.setClearColor(0,1):"white"===n.background?n.renderer.setClearColor(16777215,1):n.renderer.setClearColor(0,0),n.renderer.clear());i=this.useEDL?this.normalizationEDLMaterial:this.normalizationMaterial;this.useEDL&&(i.uniforms.edlStrength.value=n.edlStrength,i.uniforms.radius.value=n.edlRadius,i.uniforms.screenWidth.value=r,i.uniforms.screenHeight.value=a,i.uniforms.uEDLMap.value=this.rtDepth.texture),i.uniforms.uWeightMap.value=this.rtAttribute.texture,i.uniforms.uDepthMap.value=this.rtAttribute.depthTexture,ie.screenPass.render(n.renderer,i),n.renderer.render(n.scene.scene,e),n.dispatchEvent({type:"render.pass.scene",viewer:n}),n.renderer.clearDepth(),n.transformationTool.update(),n.dispatchEvent({type:"render.pass.perspective_overlay",viewer:n}),n.renderer.render(n.controls.sceneControls,e),n.renderer.render(n.clippingTool.sceneVolume,e),n.renderer.render(n.transformationTool.scene,e),n.renderer.setViewport(r-n.navigationCube.width,a-n.navigationCube.width,n.navigationCube.width,n.navigationCube.width),n.renderer.render(n.navigationCube,n.navigationCube.camera),n.renderer.setViewport(0,0,r,a),n.dispatchEvent({type:"render.pass.end",viewer:n})}}]),t}(),Rm=A(function e(t){te(this,e),this.previous=null,this.next=null,this.node=t}),ip=function(){function e(){te(this,e),this.first=null,this.last=null,this.items={},this.elements=0,this.numPoints=0}return A(e,[{key:"size",value:function(){return this.elements}},{key:"contains",value:function(e){return null==this.items[e.id]}},{key:"touch",value:function(e){var t;e.loaded&&(null==this.items[e.id]?((t=new Rm(e)).previous=this.last,null!==(this.last=t).previous&&(t.previous.next=t),this.items[e.id]=t,this.elements++,null===this.first&&(this.first=t),this.numPoints+=e.numPoints):null===(t=this.items[e.id]).previous?null!==t.next&&(this.first=t.next,this.first.previous=null,t.previous=this.last,t.next=null,(this.last=t).previous.next=t):null!==t.next&&(t.previous.next=t.next,t.next.previous=t.previous,t.previous=this.last,t.next=null,(this.last=t).previous.next=t))}},{key:"remove",value:function(e){var t=this.items[e.id];t&&(1===this.elements?(this.first=null,this.last=null):(t.previous||(this.first=t.next,this.first.previous=null),t.next||(this.last=t.previous,this.last.next=null),t.previous&&t.next&&(t.previous.next=t.next,t.next.previous=t.previous)),delete this.items[e.id],this.elements--,this.numPoints-=e.numPoints)}},{key:"getLRUItem",value:function(){return null===this.first?null:this.first.node}},{key:"toString",value:function(){for(var e="{ ",t=this.first;null!==t;)e+=t.node.id,null!==t.next&&(e+=", "),t=t.next;return e=(e+="}")+("("+this.size()+")")}},{key:"freeMemory",value:function(){if(!(this.elements<=1))for(;this.numPoints>Potree.pointLoadLimit;){var e=this.first.node;this.disposeDescendants(e)}}},{key:"disposeDescendants",value:function(e){var t=[];for(t.push(e);0<t.length;){var n,i=t.pop();for(n in i.dispose(),this.remove(i),i.children)i.children.hasOwnProperty(n)&&i.children[n].loaded&&t.push(i.children[n])}}}]),e}(),Fm=function(){y(r,fm);var i=C(r);function r(){var e,t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(te(this,r),e=i.call(this,n),n=n.maxSize,t=1550,void 0!==n?n:t);return e._gradient=tm.RAINBOW,e.gradientTexture=r.generateGradientTexture(e._gradient),delete e.uniforms.screenWidth,delete e.uniforms.screenHeight,delete e.uniforms.clipBoxes,delete e.uniforms.clipPolygons,delete e.uniforms.clipPolygonVCount,delete e.uniforms.clipPolygonVP,delete e.uniforms.clipBoxCount,Object.assign(e.uniforms,{resolution:{type:"v2",value:new Le},maxSize:{type:"f",value:n},gradient:{type:"t",value:e.gradientTexture},clipBoxes_in:{type:"Matrix4fv",value:[]},clipBoxes_out:{type:"Matrix4fv",value:[]},clipBoxBig_in:{type:"Matrix4fv",value:[]},boxes_highlight:{type:"Matrix4fv",value:[]},progress:{type:"f",value:0},easeInOutRatio:{type:"f",value:.3},pano0Map:{type:"t",value:null},pano0Position:{type:"v3",value:new Re},pano0Matrix:{type:"m4",value:new _e},pano1Map:{type:"t",value:null},pano1Position:{type:"v3",value:new Re},pano1Matrix:{type:"m4",value:new _e}}),delete e.clipBoxes,e.clipBoxes_in=[],e.clipBoxes_out=[],e.updateShaderSource(),e}return A(r,[{key:"updateShaderSource",value:function(){var e=nm["pointcloud_new.vs"],t=nm["pointcloud_new.fs"],n=this.getDefines(),i=e.indexOf("#version "),r=t.indexOf("#version "),e=0<=i?e.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(e),t=0<=r?t.replace(/(#version .*)/,"$1\n".concat(n)):"".concat(n,"\n").concat(t);this.vertexShader=e,this.fragmentShader=t,1!==this.opacity||this.useFilterByNormal?(this.opacity<1||this.useFilterByNormal)&&!this.useEDL&&(this.blending=ye,this.transparent=!0,this.depthTest=!1,this.depthWrite=!0,this.depthFunc=je):(this.blending=ge,this.transparent=!1,this.depthTest=!0,this.depthWrite=!0,this.depthFunc=Je),this.weighted&&(this.blending=ye,this.transparent=!0,this.depthTest=!0,this.depthWrite=!1),this.needsUpdate=!0}},{key:"getDefines",value:function(){var e,t,n=[],i=(this.pointSizeType===cm.FIXED?n.push("#define fixed_point_size"):this.pointSizeType===cm.ATTENUATED?n.push("#define attenuated_point_size"):this.pointSizeType===cm.ADAPTIVE&&n.push("#define adaptive_point_size"),Qf.EXT_DEPTH.isSupported()||this.shape!==hm.PARABOLOID||(this.shape=hm.SQUARE),this.shape===hm.SQUARE?n.push("#define square_point_shape"):this.shape===hm.CIRCLE?n.push("#define circle_point_shape"):this.shape===hm.PARABOLOID&&n.push("#define paraboloid_point_shape"),(this._useEDL||this.fakeEDL)&&n.push("#define use_edl"),this.activeAttributeName&&(e=this.activeAttributeName.replace(/[^a-zA-Z0-9]/g,"_"),n.push("#define color_type_".concat(e))),this._treeType===dm.OCTREE?n.push("#define tree_type_octree"):this._treeType===dm.KDTREE&&n.push("#define tree_type_kdtree"),this.weighted&&n.push("#define weighted_splats"),q(this.defines));try{for(i.s();!(t=i.n()).done;){var r=N(t.value,2),a=(r[0],r[1]);n.push(a)}}catch(e){i.e(e)}finally{i.f()}return n.join("\n")}},{key:"pointSizeType",get:function(){return this._pointSizeType},set:function(e){"string"==typeof e&&(e=cm[e]);var t=_(r.prototype),n=!0;if(!R(t,"pointSizeType",e,this||t)&&n)throw new Error("failed to set property")}},{key:"color",get:function(){return this.uniforms.uColor.value},set:function(e){var t,n;e!=this.color_&&("string"==typeof(t=e)&&(n=Potree.config.colors[e])&&(t=(new Me).fromArray(n).multiplyScalar(1/255)),this.uniforms.uColor.value.set(t),this.dispatchEvent({type:"color_changed",target:this}),this.dispatchEvent({type:"material_property_changed",target:this}),this.color_=e)}},{key:"setProjectedPanos",value:function(e,t,n,i){this.usePanoMap=!0,null!=n&&(this.uniforms.progress.value=n),this.uniforms.pano0Map.value=e.getSkyboxTexture(),this.uniforms.pano0Position.value.copy(e.position),this.uniforms.pano0Matrix.value.copy(e.panoMatrix),this.uniforms.easeInOutRatio.value=i||0,this.uniforms.pano1Map.value=t.getSkyboxTexture(),this.uniforms.pano1Position.value.copy(t.position),this.uniforms.pano1Matrix.value.copy(t.panoMatrix)}},{key:"stopProjectedPanos",value:function(){this.usePanoMap=!1}},{key:"setClipBoxes",value:function(e,t,n,i){if(t&&n){this.bigClipInBox=e,this.clipBoxes_in=t,this.clipBoxes_out=n,this.highlightBoxes=i,this.uniforms.clipBoxBig_in.value=e&&e.inverse,this.uniforms.clipBoxes_in.value=new Float32Array(16*this.clipBoxes_in.length),this.uniforms.clipBoxes_out.value=new Float32Array(16*this.clipBoxes_out.length),this.uniforms.boxes_highlight.value=new Float32Array(16*this.highlightBoxes.length);for(var r=0;r<this.clipBoxes_in.length;r++){var a=t[r];this.uniforms.clipBoxes_in.value.set(a.inverse.elements,16*r)}for(var o=0;o<this.clipBoxes_out.length;o++){var s=n[o];this.uniforms.clipBoxes_out.value.set(s.inverse.elements,16*o)}for(var l=0;l<this.highlightBoxes.length;l++){var u=i[l];this.uniforms.boxes_highlight.value.set(u.inverse.elements,16*l)}}}}]),r}(),Om=(Dm.BACKSPACE=8,new Nc),Nm=(Potree.defines={},Potree.defines.Buttons={NONE:0,LEFT:1,RIGHT:2,MIDDLE:4},Potree.defines.GLCubeFaces={GL_TEXTURE_CUBE_MAP_POSITIVE_X:0,GL_TEXTURE_CUBE_MAP_NEGATIVE_X:1,GL_TEXTURE_CUBE_MAP_POSITIVE_Y:2,GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:3,GL_TEXTURE_CUBE_MAP_POSITIVE_Z:4,GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:5},Potree.defines.PanoSizeClass={BASE:1,STANDARD:2,HIGH:3,ULTRAHIGH:4},Potree.defines.PanoRendererEvents={PanoRenderComplete:"panorama.render.complete",TileRenderFailure:"panorama.tile.render.failed",TileRenderSuccess:"panorama.tile.render.success",TileUploadAttempted:"panorama.tile.upload.attempted",UploadAttemptedForAllTiles:"panorama.upload.attempted.all.tiles",ZoomLevelRenderStarted:"panorama.zoom.render.started"},Potree.defines.SceneRendererEvents={ContextCreated:"scene-renderer-context-created",AfterRender:"after-render",MemoryUsageUpdated:"scene-renderer-memory-usage-updated"},Potree.defines.TileDownloaderEvents={TileDownloadSuccess:"tiledownloader.download.success",TileDownloadFailure:"tiledownloader.download.failure",PanoDownloadComplete:"tiledownloader.pano.download.complete"},Potree.defines.Vectors={UP:new Re(0,1,0),DOWN:new Re(0,-1,0),LEFT:new Re(-1,0,0),RIGHT:new Re(1,0,0),FORWARD:new Re(0,0,-1),BACK:new Re(0,0,1)},Potree.defines.DownloadStatus=Object.freeze({None:0,Queued:1,ForceQueued:2,Downloading:3,Downloaded:4,DownloadFailed:5}),Potree.defines.ModelManagerEvents={ModelAdded:"model-added",ActiveModelChanged:"active-model-changed"},Potree.defines.PanoramaEvents={Enter:"panorama.enter",Exit:"panorama.exit",LoadComplete:"panorama.load.complete",LoadFailed:"panorama.load.failed",TileLoaded:"panorama.tile.loaded",VideoRendered:"panorama.video.rendered"},om.SHOW_INSIDE_Big=4,Qf.EXT_DEPTH={isSupported:function(e){if(Cm=e=e||Cm,sf.detectIOS()){var t=sf.iosVersion(),n=t.major,i=t.minor,t=t.patch;if(15==n&&4==i&&1==t)return console.warn("检测到是ios15.4.1, 关闭EXT_frag_depth"),!1}return e.getExtension("EXT_frag_depth")}},ie.loadSkybox=function(t,e){e?(n=e.camera,a=e.scene,i=e.parent,r=e.cameraOrtho):(i=new K,n=new ma(75,window.innerWidth/window.innerHeight,1,1e5),r=new mh(-1,1,1,-1,Potree.config.view.near,Potree.settings.cameraFar),window.axisYup||n.up.set(0,0,1),a=new Ps,e=Potree.config.skyboxBgWidth,e=new Z(new sa(e,e,e),new pa({vertexShader:nm["skybox.vs"],fragmentShader:nm["skybox.fs"],side:me,uniforms:{tDiffuse:{type:"t",value:null},matrix:{type:"m4",value:new _e}},depthTest:!1,depthWrite:!1})),a.add(e),a.traverse(function(e){return e.frustumCulled=!1}),i.children.push(n),n.parent=i);var n,i,r,a,o=Om.load(t,function(){console.log("loadSkybox成功",t),o.wrapS=ot,o.flipY=!1,o.magFilter=U,o.minFilter=U,a.children[0].material.uniforms.tDiffuse.value=o},null,function(e){console.error("loadSkybox失败",t)});return{camera:n,scene:a,parent:i,cameraOrtho:r}},ie.getMousePointCloudIntersection=function(e,t,n,i,r,a){var o=6<arguments.length&&void 0!==arguments[6]?arguments[6]:{};if(a&&0!=a.length){var s,l,u=r.renderer,u=(e?(o.x=t.x,o.y=e.resolution.y-t.y):(o.x=t.x,o.y=u.domElement.clientHeight-t.y),new gd),c=(u.setFromCamera(n,i),u.ray),h=null,d=1/0,p=null,f=null,m=new Map,v=new Map,g=new Map,A=new Map,y=new Map,w=new Map,t=!1;if(o.isMeasuring||"showPanos"==Potree.settings.displayMode?(s=Potree.settings.pointDensity,Potree.settings.pointDensity="magnifier",a.forEach(function(e){w.set(e,e.visible),e.visible=r.getObjVisiByReason(e,"datasetSelection"),e.visible&&(y.set(e,e.temp.pointSize),l=e.material.pointSizeType,e.material.pointSizeType=Potree.config.material.pointSizeType,e.changePointSize(2*Potree.config.material.realPointSize,!0))}),t=!0):(1<r.viewports.filter(function(e){return!e.noPointcloud&&e.active}).length||o.cameraChanged)&&(e.beforeRender&&e.beforeRender(),t=!0),!o.pickClipped){var b,x=q(a);try{for(x.s();!(b=x.n()).done;){var E=b.value;m.set(E,E.clipBoxes_in),v.set(E,E.clipBoxes_in),g.set(E,E.bigClipInBox),A.set(E,E.highlightBoxes),E.material.setClipBoxes(null,[],[],[])}}catch(e){x.e(e)}finally{x.f()}t=!0}t&&Potree.updatePointClouds(a,i,e.resolution);var C,B=[],_=q(a);try{for(_.s();!(C=_.n()).done;){var M,T=C.value,S=T.pick(r,e,i,c,o);S&&(B.push(T),(M=i.position.distanceTo(S.position))<d)&&(d=M,h=T,p=S.position,f=S)}}catch(e){_.e(e)}finally{_.f()}if(!o.isMeasuring&&"showPanos"!=Potree.settings.displayMode||(Potree.settings.pointDensity=s,a.forEach(function(e){e.visible&&(e.material.pointSizeType=l,e.changePointSize(y.get(e))),e.visible=w.get(e)})),!o.pickClipped){var I,D=q(a);try{for(D.s();!(I=D.n()).done;){var P=I.value;P.material.setClipBoxes(g.get(P),m.get(P),v.get(P),A.get(P))}}catch(e){D.e(e)}finally{D.f()}}return h?{location:p,distance:d,pointcloud:h,point:f,pointclouds:B,normal:(new Re).fromArray(f.normal)}:null}},ie.pixelsArrayToDataUrl=function(e,t,n){for(var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:.7,r=document.createElement("canvas"),a=(r.width=t,r.height=n,r.getContext("2d")),o=(e=new e.constructor(e),4*t),s=0;s<parseInt(n/2);s++){var l=n-s-1,u=e.slice(s*o,s*o+o),c=e.slice(l*o,l*o+o);e.set(c,s*o),e.set(u,l*o)}t=a.createImageData(t,n);return t.data.set(e),a.putImageData(t,0,0),r.toDataURL(i)},ie.renderTargetToDataUrl=function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:.7,a=new Uint8Array(4*(t*n));return i.readRenderTargetPixels(e,0,0,t,n,a),ie.pixelsArrayToDataUrl(a,t,n,r)},ie.mouseToRay=function(e,t){var n=new Re(e.x,e.y,1),e=new Re(e.x,e.y,-1),t=(n.unproject(t),e.unproject(t),(new Re).subVectors(n,e).normalize());return new Bi(e,t)},ie.getPos2d=function(e,t,n,i){var e=ee.closeTo(t.position,e,1e-5)?new Re(0,0,1.5):e.clone().project(t),t=(e.x+1)/2*n.clientWidth*i.width,r=(1-(e.y+1)/2)*n.clientHeight*i.height,a=i.left*n.clientWidth,i=(1-i.bottom-i.height)*n.clientHeight,n=e.x<=1&&-1<=e.x&&e.x<=1&&-1<=e.y;return{pos:new Le(a+t,i+r),vector:e,trueSide:e.z<1,inSight:n,posInViewport:new Le(t,r)}},ie.screenPass=new function(){this.screenScene=new Ps,this.screenQuad=new Z(new Ba(2,2,1)),this.screenQuad.material.depthTest=!0,this.screenQuad.material.depthWrite=!0,this.screenQuad.material.transparent=!0,this.screenScene.add(this.screenQuad),this.camera=new fa,this.render=function(e,t,n){this.screenQuad.material=t,void 0!==n&&e.setRenderTarget(n),e.render(this.screenScene,this.camera)}},ie.computePointcloudsBound=function(e){var t=new Y;return e.forEach(function(e){e.updateBound(),t.union(e.bound2)}),{boundSize:t.getSize(new Re),center:t.getCenter(new Re),boundingBox:t}},ie.convertScreenPositionToNDC=function(e,t,n,i){return(e=e||new Le).x=t.x/n*2-1,e.y=-t.y/i*2+1,e},ie.convertNDCToScreenPosition=function(e,t,n,i){return(t=t||new Le).x=Math.round((e.x+1)/2*n),t.y=Math.round(-(e.y-1)/2*i),t},ie.getOrthoCameraMoveVec=function(e,t){var n=t.right/t.zoom,i=t.top/t.zoom,r=new Re;return r.set(e.x*n,e.y*i,0).applyQuaternion(t.quaternion),r},ie.VectorFactory={fromArray:function(e){if(e)return(e.length<2||3<e.length)&&console.error("Wrong number of ordinates for a point!"),(new(3===e.length?Re:Le)).fromArray(e)},fromArray3:function(e){if(e)return 3!==e.length&&console.error("Wrong number of ordinates for a point!"),(new Re).fromArray(e)},fromArray2:function(e){if(e)return 2!==e.length&&console.error("Wrong number of ordinates for a point!"),(new Le).fromArray(e)},toString:function(e){return e.x.toFixed(8)+","+e.y.toFixed(8)+","+e.z.toFixed(3)}},ie.QuaternionFactory={rot90:(new X).setFromAxisAngle(new Re(0,0,1),Be.degToRad(-90)),fromArray:function(e){if(e)return 4!==e.length&&console.error("Wrong number of ordinates for a quaternion!"),new X(e[1],e[2],e[3],e[0]).multiply(this.rot90)},toArray:function(e){if(e)return[(e=e.clone().multiply(a).toArray())[3],e[0],e[1],e[2]]},fromLonLat:function(e){if(e)return(new X).setFromEuler(new ki(e.lon,e.lat,0))},toLonLat:function(e){if(e)return{lon:(e=(new ki).setFromQuaternion(e)).x,lat:e.y}}},ie.datasetPosTransform=function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=t.pointcloud||viewer.scene.pointclouds.find(function(e){return e.dataset_id==t.datasetId});if(n?e="merge"==Potree.settings.editType?t.fromDataset?n.matrixWorld:(new _e).copy(n.matrixWorld).invert():t.fromDataset?n.transformMatrix:n.transformInvMatrix:Potree.settings.intersectOnObjs&&(n=t.object||viewer.objs.children.find(function(e){return e.dataset_id==t.datasetId}))&&(e=t.fromDataset?n.matrixWorld:(new _e).copy(n.matrixWorld).invert()),e)return(new Re).copy(t.position).applyMatrix4(e);null!=t.datasetId&&console.error("datasetPosTransform找不到datasetId为".concat(t.datasetId,"的数据集或模型,请检查数据, 模型未创建或删除"))},ie.datasetRotTransform=function(){var e,t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=n.pointcloud||viewer.scene.pointclouds.find(function(e){return e.dataset_id==n.datasetId});if(i){if(n.rotation)e=(new _e).makeRotationFromEuler(n.rotation);else if(n.quaternion)e=(new _e).makeRotationFromQuaternion(n.quaternion);else{if(!n.matrix)return;e=n.matrix.clone()}i=n.fromDataset?i.rotateMatrix:i.rotateInvMatrix,i=(new _e).multiplyMatrices(i,e);return n.getRotation?t=(new ki).setFromRotationMatrix(i):n.getQuaternion?t=(new X).setFromRotationMatrix(i):n.getMatrix&&(t=i),t}},ie.isInsideFrustum=function(e,t){var n=new _e,t=(n.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),new xa);return t.setFromProjectionMatrix(n),e instanceof gi?t.intersectsSphere(e):t.intersectsBox(e)},ie.isIntersectBox=function(e,t){var n=new Re(.5,0,0).applyMatrix4(t),i=new Re(-.5,0,0).applyMatrix4(t),r=new Re(0,.5,0).applyMatrix4(t),a=new Re(0,-.5,0).applyMatrix4(t),o=new Re(0,0,.5).applyMatrix4(t),s=new Re(0,0,-.5).applyMatrix4(t),l=(new Re).subVectors(i,n).normalize(),u=l.clone().multiplyScalar(-1),c=(new Re).subVectors(a,r).normalize(),h=c.clone().multiplyScalar(-1),d=(new Re).subVectors(s,o).normalize(),p=d.clone().multiplyScalar(-1),l=(new $i).setFromNormalAndCoplanarPoint(l,n),n=(new $i).setFromNormalAndCoplanarPoint(u,i),u=(new $i).setFromNormalAndCoplanarPoint(c,r),i=(new $i).setFromNormalAndCoplanarPoint(h,a),c=(new $i).setFromNormalAndCoplanarPoint(d,o),r=(new $i).setFromNormalAndCoplanarPoint(p,s),h=new xa(l,n,u,i,c,r);if(e instanceof Y){a=new Y(new Re(-.5,-.5,-.5),new Re(.5,.5,.5)).applyMatrix4(t);if(e.intersectsBox(a))return h.intersectsBox(e)}else{if(e instanceof Array)return(d=new gi).setFromPoints(e),this.isIntersectBox(d,t);if(e instanceof gi)return h.intersectsSphere(e);{if(e instanceof Re)return h.containsPoint(e);0 instanceof _e}}},ie.getIntersect=function(e,t,n,i){e.updateMatrixWorld(),i||(i=new gd,r=new Re(n.x,n.y,-1).unproject(e),n=new Re(n.x,n.y,1).unproject(e).sub(r).normalize(),i.set(r,n)),t.forEach(function(e){i.layers.enable(ee.getBaseLog(e.layers.mask,2))});var r,e=i.intersectObjects(t);return 0===e.length?null:e[0]},Hf.prototype.load=function(t){var n=this;if(!t.loaded){var i=t.getURL(),r=(this.version.equalOrHigher("1.4")&&(i+=".bin"),i+="?m="+t.pcoGeometry.timeStamp,uf.createXMLHttpRequest());r.open("GET",i,!0),r.responseType="arraybuffer",r.overrideMimeType("text/plain; charset=x-user-defined"),r.onreadystatechange=function(){if(4===r.readyState){if(200!==r.status&&0!==r.status||null===r.response)throw new Error("Failed to load file! HTTP status: ".concat(r.status,", file: ").concat(i));var e=r.response;n.parse(t,e)}};try{r.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}},w.RGBA_PACKED=new w("rgba",Vf.DATA_TYPE_INT8,4),w.COLOR_PACKED=w.RGBA_PACKED,w.INTENSITY=new w("intensity",Vf.DATA_TYPE_UINT16,1),w.CLASSIFICATION=new w("classification",Vf.DATA_TYPE_UINT8,1),w.GPS_TIME=new w("gps-time",Vf.DATA_TYPE_DOUBLE,1),Mm.prototype.initTHREE=function(){this.renderer=new Ts({alpha:!0,premultipliedAlpha:!1}),this.renderer.setClearColor(0,0),this.renderer.setSize(10,10),this.renderer.autoClear=!1,this.renderArea.append($(this.renderer.domElement)),this.renderer.domElement.tabIndex="2222",$(this.renderer.domElement).css("width","100%"),$(this.renderer.domElement).css("height","100%");var e=this.renderer.getContext();if(null==e.createVertexArray){var t=e.getExtension("OES_vertex_array_object");if(!t)throw new Error("OES_vertex_array_object extension not supported");e.createVertexArray=t.createVertexArrayOES.bind(t),e.bindVertexArray=t.bindVertexArrayOES.bind(t)}this.camera=new mh(-1e3,1e3,1e3,-1e3,-1e3,1e3),this.camera.up.set(0,0,1),this.camera.rotation.order="ZXY",this.camera.rotation.x=Math.PI/2,this.scene=new Ps,this.profileScene=new Ps;e=new Hu(1,16,16),t=new sc;this.pickSphere=new Z(e,t),this.scene.add(this.pickSphere),this.viewerPickSphere=new Z(e,t)},Potree.updatePointClouds=function(e,t,n){var i,r=q(e);try{for(r.s();!(i=r.n()).done;){var a,o=i.value,s=performance.now(),l=q(o.profileRequests);try{for(l.s();!(a=l.n()).done;)if(a.value.update(),5<performance.now()-s)break}catch(e){l.e(e)}finally{l.f()}performance.now()}}catch(e){r.e(e)}finally{r.f()}var u,t=Potree.updateVisibility(e,t,n),c=q(e);try{for(c.s();!(u=c.n()).done;)u.value.updateVisibleBounds()}catch(e){c.e(e)}finally{c.f()}return Potree.lru.freeMemory(),t},Potree.updateVisibilityStructures=function(e,t,n){for(var i=[],r=[],a=new BinaryHeap(function(e){return 1/e.weight}),o=0;o<e.length;o++){var s=e[o];if(s.initialized()){s.numVisibleNodes=0,s.numVisiblePoints=0,s.deepestVisibleLevel=0,s.visibleNodes=[],s.visibleGeometry=[],t.updateMatrixWorld();var l=new xa,u=t.matrixWorldInverse,c=s.matrixWorld,h=t.clone(),h=(h.zoom=t.zoom,h.near=Math.min(t.near,.1),h.updateProjectionMatrix(),t.projectionMatrix),h=(new _e).multiply(h).multiply(u).multiply(c),u=(l.setFromProjectionMatrix(h),i.push(l),t.matrixWorld),h=c.clone().invert(),l=(new _e).multiply(h).multiply(u),c=(new Re).setFromMatrixPosition(l);r.push(c),(s.visible||!s.hasDepthTex&&s.unvisibleReasons&&1==s.unvisibleReasons.length&&"displayMode"==s.unvisibleReasons[0].reason&&null!==s.root)&&a.push({pointcloud:o,node:s.root,weight:Number.MAX_VALUE}),s.root.isTreeNode()&&s.hideDescendants(s.root.sceneNode);for(var d=0;d<s.boundingBoxNodes.length;d++)s.boundingBoxNodes[d].visible=!1}}return{frustums:i,camObjPositions:r,priorityQueue:a}},Potree.updateVisibility=function(E,C,e){var t,B=0,_=new Map(E.map(function(e){return[e,0]})),M=[],T=[],S=[],I=1/0,n=Potree.updateVisibilityStructures(E,C,e),D=n.frustums,P=n.camObjPositions,k=n.priorityQueue,L=0,n=(e.x,e.y),e=C.fov*Math.PI/180,R=.5*n/Math.tan(e/2),F=(Potree._pointcloudTransformVersion||(Potree._pointcloudTransformVersion=new Map),Potree._pointcloudTransformVersion),i=q(E);try{for(i.s();!(t=i.n()).done;){var r,a=t.value;(a.hasDepthTex?a.visible:viewer.getObjVisiByReason(a,"datasetSelection"))&&(a.updateMatrixWorld(),F.has(a)?(r=F.get(a)).transform.equals(a.matrixWorld)||(r.number++,r.transform.copy(a.matrixWorld),a.dispatchEvent({type:"transformation_changed",target:a})):F.set(a,{number:0,transform:a.matrixWorld.clone()}))}}catch(e){i.e(e)}finally{i.f()}for(var o=function(){function e(e){var t=r.matrixWorld.clone().invert();return t.multiply(e.box.matrixWorld),Potree.Utils.isIntersectBox(a,t)}var t=k.pop(),n=t.node,i=t.parent,r=E[t.pointcloud],a=n.getBoundingBox(),o=D[t.pointcloud],s=P[t.pointcloud],o=o.intersectsBox(a),l=null==r.maxLevel?1/0:r.maxLevel,u=n.getLevel(),c=(o=(o=o&&!(B+n.getNumPoints()>Potree.pointBudget))&&!(_.get(r)+n.getNumPoints()>r.pointBudget),r.material.clipBoxes_in),h=(r.material.clipBoxes_out,r.material.bigClipInBox);if((o=o&&u<=l)&&h&&(e(h)||(o=!1)),o&&0<c.length){for(var d=!1,p=0,f=c.length;p<f;p++)if(e(c[p])){d=!0;break}d||(o=!1)}if(n.spacing?I=Math.min(I,n.spacing):n.geometryNode&&n.geometryNode.spacing&&(I=Math.min(I,n.geometryNode.spacing)),B+n.getNumPoints()>Potree.pointBudget)return"break";if(!o)return"continue";B+=n.getNumPoints();for(var u=_.get(r),m=(_.set(r,u+n.getNumPoints()),r.numVisibleNodes++,r.numVisiblePoints+=n.getNumPoints(),!n.isGeometryNode()||i&&!i.isTreeNode()||(n.isLoaded()&&L<2?(n=r.toTreeNode(n,i),L++):(S.push({pointcloud:r,node:n}),T.push(n))),n.isTreeNode()&&(Potree.lru.touch(n.geometryNode),n.sceneNode.visible=!0,n.sceneNode.material=r.material,M.push(n),r.visibleNodes.push(n),void 0===n._transformVersion&&(n._transformVersion=-1),l=F.get(r),n._transformVersion!==l.number&&(n.sceneNode.updateMatrix(),n.sceneNode.matrixWorld.multiplyMatrices(r.matrixWorld,n.sceneNode.matrix),n._transformVersion=l.number),r.showBoundingBox&&!n.boundingBoxNode&&n.getBoundingBox?((h=new Im(n.getBoundingBox())).matrixAutoUpdate=!1,r.boundingBoxNodes.push(h),n.boundingBoxNode=h,n.boundingBoxNode.matrix.copy(r.matrixWorld)):r.showBoundingBox?(n.boundingBoxNode.visible=!0,n.boundingBoxNode.matrix.copy(r.matrixWorld)):!r.showBoundingBox&&n.boundingBoxNode&&(n.boundingBoxNode.visible=!1)),n.getChildren()),v=0;v<m.length;v++){var g=m[v],A=0;if(C.isPerspectiveCamera){var y=g.getBoundingSphere(),w=(y.center,y.center.distanceToSquared(s)),b=Math.pow(w,.75),y=y.radius,x=y*(R/b);if(x<r.minimumNodePixelSize/Math.pow(w,.25))continue;A=x,b-y<0&&(A=Number.MAX_VALUE)}else{w=g.getBoundingSphere();if(w.radius*C.zoom<r.minimumNodePixelSize)continue;x=w.center.distanceToSquared(s),A=w.radius/x}k.push({pointcloud:t.pointcloud,node:g,parent:n,weight:A})}};0<k.size();){var s=o();if("break"===s)break}var l,u=q(E.filter(function(e){return e.generateDEM&&e.dem instanceof Potree.DEM}));try{for(u.s();!(l=u.n()).done;){var c=l.value,h=c.visibleNodes.filter(function(e){return e.getLevel()<=4});c.dem.update(h)}}catch(e){u.e(e)}finally{u.f()}for(var d=0;d<Math.min(Potree.maxNodesLoading,S.length);d++)S[d].node.load(S[d].pointcloud.pcoGeometry);return Potree.numVisiblePoints=B,{visibleNodes:M,numVisiblePoints:B,lowestSpacing:I}},Lm.prototype.init);Lm.prototype.init=function(){Nm(),viewer.addEventListener("resize",this.resize.bind(this))},Lm.prototype.resize=function(e){this.rtDepth.setSize(e.canvasWidth,e.canvasHeight),this.rtAttribute.setSize(e.canvasWidth,e.canvasHeight)},Lm.prototype.clear=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(this.init(),this.viewer),n=t.renderer,t=t.background;"skybox"===t||"gradient"===t?n.setClearColor(0,0):"black"===t?n.setClearColor(0,1):"white"===t?n.setClearColor(16777215,1):n.setClearColor(0,0),e.target||n.clear(),this.clearTargets(e)},Lm.prototype.render=function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(this.init(),this.viewer),i=t.camera||n.scene.getActiveCamera(),r=t.width?t:this.viewer.renderer.getSize(new Le),a=r.width,o=r.height,r=(n.renderer.setRenderTarget(t.target||null),n.dispatchEvent({type:"render.pass.begin",viewer:n}),n.scene.pointclouds.filter(function(e){return e.visible})),s=new Map,l=q(r);try{for(l.s();!(e=l.n()).done;){var u,c,h=e.value;s.set(h,h.material),this.attributeMaterials.has(h)||(u=new Fm,this.attributeMaterials.set(h,u)),this.depthMaterials.has(h)||((c=new Fm).setDefine("depth_pass","#define hq_depth_pass"),c.setDefine("use_edl","#define use_edl"),this.depthMaterials.set(h,c))}}catch(e){l.e(e)}finally{l.f()}var d,p=q(r);try{for(p.s();!(d=p.n()).done;){var f=d.value,m=f.pcoGeometry.boundingBox.getSize(new Re).x,v=s.get(f),g=this.depthMaterials.get(f);g.size=v.size,g.minSize=v.minSize,g.maxSize=v.maxSize,g.pointSizeType=v.pointSizeType,g.visibleNodesTexture=v.visibleNodesTexture,g.weighted=!1,g.screenWidth=a,g.shape=PointShape.CIRCLE,g.screenHeight=o,g.uniforms.visibleNodes.value=v.visibleNodesTexture,g.uniforms.octreeSize.value=m,g.spacing=f.pcoGeometry.spacing,g.classification=v.classification,g.uniforms.classificationLUT.value.image.data=v.uniforms.classificationLUT.value.image.data,g.classificationTexture.needsUpdate=!0,g.uniforms.uFilterReturnNumberRange.value=v.uniforms.uFilterReturnNumberRange.value,g.uniforms.uFilterNumberOfReturnsRange.value=v.uniforms.uFilterNumberOfReturnsRange.value,g.uniforms.uFilterGPSTimeClipRange.value=v.uniforms.uFilterGPSTimeClipRange.value,g.uniforms.uFilterPointSourceIDClipRange.value=v.uniforms.uFilterPointSourceIDClipRange.value,g.clipTask=v.clipTask,g.clipMethod=v.clipMethod,g.setClipBoxes(v.clipBoxes),g.setClipPolygons(v.clipPolygons),f.material=g}}catch(e){p.e(e)}finally{p.f()}n.pRenderer.render(n.scene.scenePointCloud,i,t.rtEDL||this.rtDepth,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof SphereVolume})});var A,y=q(r);try{for(y.s();!(A=y.n()).done;){var w=A.value,b=w.pcoGeometry.boundingBox.getSize(new Re).x,x=s.get(w),E=this.attributeMaterials.get(w);E.size=x.size,E.minSize=x.minSize,E.maxSize=x.maxSize,E.pointSizeType=x.pointSizeType,E.activeAttributeName=x.activeAttributeName,E.visibleNodesTexture=x.visibleNodesTexture,E.weighted=!0,E.screenWidth=a,E.screenHeight=o,E.shape=PointShape.CIRCLE,E.uniforms.visibleNodes.value=x.visibleNodesTexture,E.uniforms.octreeSize.value=b,E.spacing=w.pcoGeometry.spacing,E.classification=x.classification,E.uniforms.classificationLUT.value.image.data=x.uniforms.classificationLUT.value.image.data,E.classificationTexture.needsUpdate=!0,E.uniforms.uFilterReturnNumberRange.value=x.uniforms.uFilterReturnNumberRange.value,E.uniforms.uFilterNumberOfReturnsRange.value=x.uniforms.uFilterNumberOfReturnsRange.value,E.uniforms.uFilterGPSTimeClipRange.value=x.uniforms.uFilterGPSTimeClipRange.value,E.uniforms.uFilterPointSourceIDClipRange.value=x.uniforms.uFilterPointSourceIDClipRange.value,E.elevationGradientRepeat=x.elevationGradientRepeat,E.elevationRange=x.elevationRange,E.gradient=x.gradient,E.matcap=x.matcap,E.intensityRange=x.intensityRange,E.intensityGamma=x.intensityGamma,E.intensityContrast=x.intensityContrast,E.intensityBrightness=x.intensityBrightness,E.rgbGamma=x.rgbGamma,E.rgbContrast=x.rgbContrast,E.rgbBrightness=x.rgbBrightness,E.weightRGB=x.weightRGB,E.weightIntensity=x.weightIntensity,E.weightElevation=x.weightElevation,E.weightRGB=x.weightRGB,E.weightClassification=x.weightClassification,E.weightReturnNumber=x.weightReturnNumber,E.weightSourceID=x.weightSourceID,E.color=x.color,E.clipTask=x.clipTask,E.clipMethod=x.clipMethod,E.setClipBoxes(x.clipBoxes),E.setClipPolygons(x.clipPolygons),w.material=E}}catch(e){y.e(e)}finally{y.f()}var C,r=this.gl,B=(n.pRenderer.render(n.scene.scenePointCloud,i,this.rtAttribute,{clipSpheres:n.scene.volumes.filter(function(e){return e instanceof SphereVolume}),blendFunc:[r.SRC_ALPHA,r.ONE],depthWrite:!1}),q(s));try{for(B.s();!(C=B.n()).done;){var _=N(C.value,2),M=_[0],T=_[1];M.material=T}}catch(e){B.e(e)}finally{B.f()}"skybox"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.skybox.camera.rotation.copy(n.scene.cameraP.rotation),n.skybox.camera.fov=n.scene.cameraP.fov,n.skybox.camera.aspect=n.scene.cameraP.aspect,n.skybox.parent.rotation.x=0,n.skybox.parent.updateMatrixWorld(),n.skybox.camera.updateProjectionMatrix(),n.renderer.render(n.skybox.scene,n.skybox.camera)):"gradient"===n.background?(n.renderer.setClearColor(0,0),n.renderer.clear(),n.renderer.render(n.scene.sceneBG,n.scene.cameraBG)):("black"===n.background?n.renderer.setClearColor(0,1):"white"===n.background?n.renderer.setClearColor(16777215,1):n.renderer.setClearColor(0,0),n.renderer.clear());r=this.useEDL?this.normalizationEDLMaterial:this.normalizationMaterial;this.useEDL&&(r.uniforms.edlStrength.value=n.edlStrength,r.uniforms.radius.value=n.edlRadius,r.uniforms.screenWidth.value=a,r.uniforms.screenHeight.value=o,r.uniforms.uEDLMap.value=(t.rtEDL||this.rtDepth).texture),r.uniforms.uWeightMap.value=this.rtAttribute.texture,r.uniforms.uDepthMap.value=this.rtAttribute.depthTexture,ie.screenPass.render(n.renderer,r),n.renderer.render(n.scene.scene,i),n.dispatchEvent({type:"render.pass.scene",viewer:n}),n.renderer.render(n.scene.sceneOverlay,i),n.renderer.clearDepth(),n.transformationTool.update(),t.target||(n.dispatchEvent({type:"render.pass.perspective_overlay",viewer:n,camera:i}),n.renderer.render(n.overlay,i)),n.renderer.render(n.controls.sceneControls,i),n.renderer.render(n.clippingTool.sceneVolume,i),n.renderer.render(n.transformationTool.scene,i),n.renderer.setViewport(a-n.navigationCube.width,o-n.navigationCube.width,n.navigationCube.width,n.navigationCube.width),n.renderer.render(n.navigationCube,n.navigationCube.camera),n.renderer.setViewport(0,0,a,o),n.dispatchEvent({type:"render.pass.end",viewer:n}),n.renderer.setRenderTarget(null)},em.prototype.loadHierachyThenPoints=function(e){var E=this;if(E.level%E.pcoGeometry.hierarchyStepSize==0){var C=E.pcoGeometry.octreeDir+"/"+E.getHierarchyPath()+"/"+E.name+".hrc",B=(C+="?m="+E.pcoGeometry.timeStamp,uf.createXMLHttpRequest());B.open("GET",C,!0),B.responseType="arraybuffer",B.overrideMimeType("text/plain; charset=x-user-defined"),B.onreadystatechange=function(){if(4===B.readyState)if(200===B.status||0===B.status){var e=B.response,t=E,n=e;performance.now();for(var i=new DataView(n),r=[],e=i.getUint8(0),a=i.getUint32(1,!0),o=(t.numPoints=a,r.push({children:e,numPoints:a,name:t.name}),[]),s=5;0<r.length;){for(var l,u,c,h=r.shift(),d=1,p=0;p<8;p++)0!=(h.children&d)&&(l=h.name+p,u=i.getUint8(s),c=i.getUint32(s+1,!0),r.push({children:u,numPoints:c,name:l}),o.push({children:u,numPoints:c,name:l}),s+=5),d*=2;if(s===n.byteLength)break}for(var f={},m=(f[t.name]=t).pcoGeometry,v=0,g=0;g<o.length;g++){var A=o[g].name,y=o[g].numPoints,w=parseInt(A.charAt(A.length-1)),b=f[A.substring(0,A.length-1)],x=A.length-1,v=Math.max(v,x),w=ie.createChildAABB(b.boundingBox,w),w=new em(A,m,w);w.level=x,w.numPoints=y,w.hasChildren=0<o[g].children,w.spacing=m.spacing/Math.pow(2,x),b.addChild(w),f[A]=w}m.dispatchEvent({type:"updateNodeMaxLevel",level:v}),performance.now(),t.loadPoints()}else console.log("Failed to load file! HTTP status: "+B.status+", file: "+C),Potree.numNodesLoading--};try{B.send(null)}catch(e){console.log("fehler beim laden der punktwolke: "+e)}}},em.prototype.traverse=function(e,t){for(var n,i=(t=void 0===t?!0:t)?[this]:[];void 0!==(n=i.pop());){e(n);for(var r=0,a=n.children;r<a.length;r++){var o=a[r];null!==o&&i.push(o)}}},Object.assign($f.prototype,zn.prototype),ip.prototype.freeMemory=function(){if(!(this.elements<=1))for(var e=sf.isMobile?2:3,t=viewer.viewports.length*e*Potree.pointBudget;this.numPoints>t;){var n=this.getLRUItem();n&&this.disposeDescendants(n)}},Sm.prototype.update=function(){},Sm.prototype.startInsertion=function(){var n,i=this,r=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=this.viewer.scene.getActiveCamera(),a=r.type?new r.type:new Potree.BoxVolume(Object.assign(r,{clip:!0})),o=(a.highlight=!0,a.name=r.name||"Volume-"+r.clipTask,a.isNew=!0,viewer.transformObject(null),r.clipTask==Potree.ClipTask.SHOW_INSIDE&&(n=viewer.scene.volumes.filter(function(e){return e.clipTask==Potree.ClipTask.SHOW_INSIDE&&!e.highlight})).forEach(function(e){return e.highlight=!0}),function(){var e=ee.getScaleForConstantSize({width2d:300,camera:t,position:a.getWorldPosition(new Re),resolution:viewer.mainViewport.resolution}),e=(isNaN(e)||a.scale.set(e,e,e),viewer.mainViewport.view.direction.setZ(0));a.quaternion.copy(ee.getQuaByAim(e))}),s=(this.dispatchEvent({type:"start_inserting_volume",volume:a}),o(),this.viewer.scene.addVolume(a),this.scene.add(a),function(e){var t=ie.getMousePointCloudIntersection(viewer.mainViewport,viewer.inputHandler.mouse,viewer.inputHandler.pointer,i.viewer.scene.getActiveCamera(),i.viewer,i.viewer.scene.pointclouds,{pickClipped:r.clipTask==Potree.ClipTask.SHOW_OUTSIDE}),t=t&&t.location;t&&(a.position.copy(t),o())}),l=function(){e("remove")},e=function e(t){if("remove"!=(t=t.button==le.RIGHT&&t.pressDistance<=Potree.config.clickMaxDragDis?"remove":t)&&(!t.isAtDomElement||t.pressDistance>Potree.config.clickMaxDragDis))return u();a.removeEventListener("drag",s),a.removeEventListener("drop",e),i.viewer.removeEventListener("cancel_insertions",l),a.isNew=!1,viewer.removeEventListener("camera_changed",o),"remove"==t?viewer.scene.removeVolume(a):(viewer.transformObject(a),a.highlight=!1),a.dispatchEvent({type:"createFinish",success:"remove"!=t}),n&&n.forEach(function(e){return e.highlight=!1})},u=function(){return setTimeout(function(){a.parent&&a.isNew&&viewer.inputHandler.startDragging(a,{notPressMouse:!0})},1)};return a.addEventListener("drag",s),a.addEventListener("drop",e),this.viewer.addEventListener("cancel_insertions",l),viewer.addEventListener("camera_changed",o),this.viewer.inputHandler.startDragging(a,{notPressMouse:!0}),a};var Gm={displayMode:{showPointCloud:{atPano:{showPoint:!0,showSkybox:!(kf.prototype.setPositions=function(e){e=new Float32Array(e);return gf.prototype.setPositions.call(this,e),this}),pointUsePanoTex:!1},transition:{showPoint:!0,showSkybox:!1,pointUsePanoTex:!1},canLeavePano:!0},showPanos:{atPano:{showPoint:!1,showSkybox:!0,pointUsePanoTex:!1},transition:{showSkybox:!0},canLeavePano:!1},showBoth:{atPano:{showPoint:!0,showSkybox:!0,pointUsePanoTex:!1},transition:{showPoint:!0,showSkybox:!0,pointUsePanoTex:!0},canLeavePano:!0},pointUsePanoTex:{atPano:{showPoint:!0,showSkybox:!1,pointUsePanoTex:!0},transition:{showPoint:!0,showSkybox:!0,pointUsePanoTex:!0},canLeavePano:!1}},urls:{prefix1:"https://laser-oss.4dkankan.com",prefix2:"https://testlaser.4dkankan.com",prefix3:"https://4dkk.4dage.com",prefix4:"https://uat-laser.4dkankan.com",prefix5:"https://laser.4dkankan.com",prefix6:"https://mix3d.4dkankan.com/backend"},transitionsTime:{flyMinTime:500,flytimeDistanceMultiplier:150,panoToPanoMax:2e3,flyIn:1e3,flyOut:1e3},view:{fov:70,near:.1,far:1e4},map:{mapHeight:-1e3,cameraHeight:1e3},minNodeSize:30,pointDensity:{magnifier:{maxLevelPercent:1,pointBudget:8e6},panorama:{maxLevelPercent:.6,pointBudget:sf.isMobile()?1e5:4e5,minNodeSize:100},fourViewports:{maxLevelPercent:.4,pointBudget:1e6,minNodeSize:70},fourViewportsMain:{maxLevelPercent:.8,pointBudget:1e6,minNodeSize:70},panoEdit:{maxLevelPercent:1,pointBudget:4e6,percentByUser:!0,minNodeSize:50},low:{maxLevelPercent:.4,percentByUser:!0,pointBudget:sf.isMobile()?1e6:2e6,minNodeSize:40},middle:{maxLevelPercent:.7,percentByUser:!0,pointBudget:sf.isMobile()?2e6:35e5,minNodeSize:30},high:{maxLevelPercent:1,percentByUser:!0,pointBudget:sf.isMobile()?3e6:6e6,minNodeSize:30}},clip:{color:"#FFC266"},panoFieldRadius:10,measure:{color:"#00C8AF",default:{color:"#64C8BB",opacity:.7},highlight:{color:"#00C8AF",opacity:1},guide:{color:"#FFFFFF",opacity:1},backColor:"#333333",lineWidth:4,textColor:"#FFFFFF"},material:{pointSize:.1,realPointSize:.1,minSize:.1,maxSize:1e4,pointSizeType:"ATTENUATED",absolutePanoramaSize:1.3,pointColor:"#ffffff"},skyboxBgWidth:100,renderLayers:{bg:20,bg2:21,skybox:1,pointcloud:11,sceneObjects:0,model:2,measure:4,magnifier:5,magnifierContent:16,volume:6,transformationTool:7,map:8,mapObjects:9,bothMapAndScene:3,siteModeOnlyMapVisi:12,siteModelMapUnvisi:13,siteModeSideVisi:14,layer1:10,layer2:15},renderOrders:{model:10},siteModel:{names:{building:"建筑",floor:"楼层",room:"房间"},floorHeightDefault:5},panosEdit:{},tiling:{panoPreRenderRepeatDelay:2500,panoPreRenderDelay:500,preRenderTourPanos:sf.valueFromHash("tileprerender",0),tilingFlagNames:["usetiles","tiles"],maxNavPanoQuality:sf.valueFromHash("maxtileq",null),maxZoomPanoQuality:sf.valueFromHash("maxztileq",null),overlayStyle:sf.valueFromHash("tileoverlay",0),uploadIntervalDelay:sf.valueFromHash("tileupdelay",10),initialIntervalDelay:sf.valueFromHash("itiledelay",0),maxNonBaseUploadsPerFrame:sf.valueFromHash("maxnbtpf",2),maxBaseUploadsPerFrame:sf.valueFromHash("maxbtpf",6),customCompression:sf.valueFromHash("tilecustcomp",0),mobileHighQualityOverride:!1,allowUltraHighResolution:!0},navigation:{panoScores:!1,mouseDirection:!0,filterStrictness:.75,angleFactor:-30,directionFactor:10,distanceFactor:-1,optionalityFactor:3},axis:{x:{color:"#ea3f3f"},y:{color:"#86c215"},z:{color:"#3396f8"},xyz:{color:"#ccc"}},highQualityMaxZoom:2,ultraHighQualityMaxZoom:3,clickMaxDragDis:5,clickMaxPressTime:500,doubleClickTime:200,background:"#232323",mapBG:"#F5F5F5",colors:{red:[213,0,0],pink:[197,17,98],purple:[170,0,255],"deep purple":[98,0,234],blue:[41,98,255],"light blue":[0,145,234],cyan:[0,184,212],teal:[0,191,165],green:[0,200,83],"light green":[100,221,23],lime:[174,234,0],yellow:[255,214,0],amber:[255,171,0],orange:[255,109,0],"deep orange":[255,61,0]}};Gm.OrthoCameraLimit={standard:{zoom:{min:.001,max:500},posBound:{min:{x:-1e5,y:-1e5,z:Gm.map.cameraHeight},max:{x:1e5,y:1e5,z:1/0}}},expand:{zoom:{min:4e-4,max:100},posBound:{min:{x:-5e6,y:-1e6,z:Gm.map.cameraHeight},max:{x:5e6,y:1e6,z:1/0}}}};var zd={editType:"",number:"",originDatasetId:"",isOfficial:!(window.testLevelSteps=function(e){e||(e=[(t=Potree.config.pointDensity).low.maxLevelPercent,t.middle.maxLevelPercent,t.high.maxLevelPercent]);for(var t,n=1;++n<=12;){var i=e.map(function(e){return e*n}),r=e.map(function(e){return Math.round(e*n)});console.log("当nodeMaxLevel为".concat(n,"时,每一级的level分别为").concat(r,", (小数:").concat(i,")"))}console.log("请检查每一层的三个level是否有重复")}),webSite:"testdata",isLocal:!1,libsUrl:"../libs/",displayMode:"",isTest:sf.urlHasValue("test"),prefix:window.location.href.split("//")[1].split("/")[0],pointDensity:"",UserPointDensity:"",UserDensityPercent:null,ifShowMarker:!0,floorplanType:{},floorplanEnable:!1,floorplanEnables:{},floorplanRequests:{},mapEnable:!0,cameraFar:Gm.view.far,showPanoMesh:!1,dblToFocusPoint:!1,unableNavigate:!1,sizeFitToLevel:!1,zoom:{enabled:!0,min:1,max:Gm.highQualityMaxZoom},navConstantly:!0,navTileClass:sf.isMobile()?"1k":"2k",tileClass:"4k",drawEntityData:!1,zoomFromPointert:{whenPanos:!0,whenPointCloud:!0,map:!0},rotAroundPoint:!0,tourTestCameraMove:!1,cameraAniSmoothRatio:20,urls:$.extend({},Gm.urls,{prefix:Gm.urls.prefix4}),useDepthTex:!0,datasetsPanos:{},boundAddObjs:!1,intersectOnObjs:!1,intersectWhenHover:!0,depTexLocBindDataset:!0,notAdditiveBlending:!1,precision:2,testV4url:!0},Um=(zd.isLocalhost=zd.prefix.includes("localhost"),function(){y(i,Yf);var n=C(i);function i(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return te(this,i),(e=n.call(this)).icon=t.icon||"",e.tooltip=t.tooltip,void 0!==t.onclick&&(e.onclick=t.onclick),e}return A(i,[{key:"onclick",value:function(e){}},{key:"pairWith",value:function(e){}},{key:"setIcon",value:function(e){var t=this.icon;e!==t&&(this.icon=e,this.dispatchEvent({type:"icon_changed",action:this,icon:e,oldIcon:t}))}}]),i}()),zm=function(){y(s,Yf);var o=C(s);function s(){var n,e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,s),(n=o.call(this)).scene=null,n._title=t.title||"No Title",n._description=t.description||"",n.offset=new Re,n.uuid=Be.generateUUID(),t.position?null!=t.position.x?n.position=t.position:n.position=re(Re,J(t.position)):n.position=null,n.cameraPosition=t.cameraPosition instanceof Array?(new Re).fromArray(t.cameraPosition):t.cameraPosition,n.cameraTarget=t.cameraTarget instanceof Array?(new Re).fromArray(t.cameraTarget):t.cameraTarget,n.radius=t.radius,n.view=t.view||null,n.keepOpen=!1,n.descriptionVisible=!1,n.showDescription=!0,n.actions=t.actions||[],n.isHighlighted=!1,n._visible=!0,n.__visible=!0,n._display=!0,n._expand=!1,n.collapseThreshold=[t.collapseThreshold,100].find(function(e){return void 0!==e}),n.children=[],n.parent=null,n.boundingBox=new Y,W.resourcePath+"/icons/close.svg"),i=(n.domElement=$('\n\t\t\t<div class="annotation" oncontextmenu="return false;">\n\t\t\t\t<div class="annotation-titlebar">\n\t\t\t\t\t<span class="annotation-label"></span>\n\t\t\t\t</div>\n\t\t\t\t<div class="annotation-description">\n\t\t\t\t\t<span class="annotation-description-close">\n\t\t\t\t\t\t<img src="'.concat(t,'" width="16px">\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class="annotation-description-content">').concat(n._description,"</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t")),n.elTitlebar=n.domElement.find(".annotation-titlebar"),n.elTitle=n.elTitlebar.find(".annotation-label"),n.elTitle.append(n._title),n.elDescription=n.domElement.find(".annotation-description"),n.elDescriptionClose=n.elDescription.find(".annotation-description-close"),n.clickTitle=function(){n.hasView()&&n.moveHere(n.scene.getActiveCamera()),n.dispatchEvent({type:"click",target:G(n)})},n.elTitle.click(n.clickTitle),n.actions=n.actions.map(function(e){return e instanceof Um?e:new Um(e)}),q(n.actions));try{for(i.s();!(e=i.n()).done;)e.value.pairWith(G(n))}catch(e){i.e(e)}finally{i.f()}var r,a=q(n.actions.filter(function(e){return void 0===e.showIn||e.showIn.includes("scene")}));try{for(a.s();!(r=a.n()).done;)!function(){var e=r.value,t=$('<img src="'.concat(e.icon,'" class="annotation-action-icon">'));n.elTitlebar.append(t),t.click(function(){return e.onclick({annotation:G(n)})})}()}catch(e){a.e(e)}finally{a.f()}return n.elDescriptionClose.hover(function(e){return n.elDescriptionClose.css("opacity","1")},function(e){return n.elDescriptionClose.css("opacity","0.5")}),n.elDescriptionClose.click(function(e){return n.setHighlighted(!1)}),n.domElement.mouseenter(function(e){return n.setHighlighted(!0)}),n.domElement.mouseleave(function(e){return n.setHighlighted(!1)}),n.domElement.on("touchstart",function(e){n.setHighlighted(!n.isHighlighted)}),n.display=!1,n}return A(s,[{key:"installHandles",value:function(o){var i,r,a,s,l,u,c,h,e,d=this;void 0===this.handles&&(i=$('\n\t\t\t<div style="position: absolute; left: 300; top: 200; pointer-events: none">\n\t\t\t\t<svg width="300" height="600">\n\t\t\t\t\t<line x1="0" y1="0" x2="1200" y2="200" style="stroke: black; stroke-width:2" />\n\t\t\t\t\t<circle cx="50" cy="50" r="4" stroke="black" stroke-width="2" fill="gray" />\n\t\t\t\t\t<circle cx="150" cy="50" r="4" stroke="black" stroke-width="2" fill="gray" />\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t'),r=i.find("svg")[0],a=i.find("line")[0],s=i.find("circle")[0],l=i.find("circle")[1],u=function(e,t){s.setAttribute("cx","".concat(e.x)),s.setAttribute("cy","".concat(e.y)),l.setAttribute("cx","".concat(t.x)),l.setAttribute("cy","".concat(t.y)),a.setAttribute("x1",e.x),a.setAttribute("y1",e.y),a.setAttribute("x2",t.x),a.setAttribute("y2",t.y);var n=r.getBBox(),n=(r.setAttribute("width","".concat(n.width)),r.setAttribute("height","".concat(n.height)),r.setAttribute("viewBox","".concat(n.x," ").concat(n.y," ").concat(n.width," ").concat(n.height)),e.y-t.y),t=e.x-t.x;0<n&&(e.y=e.y-n),0<t&&(e.x=e.x-t),i.css("left","".concat(e.x,"px")),i.css("top","".concat(e.y,"px"))},$(o.renderArea).append(i),c=this.position.clone(),h=this.offset.clone(),$(this.domElement).draggable({start:function(e,t){c=d.position.clone(),h=d.offset.clone(),$(d.domElement).find(".annotation-titlebar").css("pointer-events","none"),console.log($(d.domElement).find(".annotation-titlebar"))},stop:function(){$(d.domElement).find(".annotation-titlebar").css("pointer-events","")},drag:function(e,t){var n=o.renderer.getSize(new Le).width,i=-(t.originalPosition.left-t.position.left)/n*2,t=(t.originalPosition.top-t.position.top)/n*2,n=o.scene.getActiveCamera(),r=(new Re).addVectors(c,h).project(n).clone(),i=(r.x+=i,r.y+=t,r.clone()),t=(i.unproject(n),(new Re).subVectors(i,d.position));d.offset.copy(t)}}),o.addEventListener("update",e=function(){d.position;function e(e){var t=i.getActiveCamera(),n=new Re,t=(new _e).multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse);return(e=new Kn(e.x,e.y,e.z,1).applyMatrix4(t)).w=Math.max(e.w,.1),e.divideScalar(e.w),n.copy(e),n.x=r*(n.x+1)/2,n.y=a*(1-(n.y+1)/2),n}var i=o.scene,t=o.renderer.getSize(new Le),r=t.width,a=t.height,t=d.position.clone(),n=(new Re).addVectors(d.position,d.offset),t=e(t),n=e(n);u(t,n)}),this.handles={domElement:i,setCoordinates:u,updateCallback:e})}},{key:"removeHandles",value:function(e){void 0!==this.handles&&(this.handles.domElement.remove(),e.removeEventListener("update",this.handles.updateCallback),delete this.handles)}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",annotation:this}))}},{key:"display",get:function(){return this._display},set:function(e){this._display!==e&&((this._display=e)?this.domElement.show():this.domElement.hide())}},{key:"expand",get:function(){return this._expand},set:function(e){this._expand!==e&&(e?this.display=!1:(this.display=!0,this.traverseDescendants(function(e){e.display=!1})),this._expand=e)}},{key:"title",get:function(){return this._title},set:function(e){this._title!==e&&(this._title=e,this.elTitle.empty(),this.elTitle.append(this._title),this.dispatchEvent({type:"annotation_changed",annotation:this}))}},{key:"description",get:function(){return this._description},set:function(e){this._description!==e&&(this._description=e,(e=this.elDescription.find(".annotation-description-content")).empty(),e.append(this._description),this.dispatchEvent({type:"annotation_changed",annotation:this}))}},{key:"add",value:function(e){if(!this.children.includes(e)){this.children.push(e),e.parent=this;var t=[];e.traverse(function(e){t.push(e)});for(var n=0,i=t;n<i.length;n++)for(var r=i[n],a=this;null!==a;)a.dispatchEvent({type:"annotation_added",annotation:r}),a=a.parent}}},{key:"level",value:function(){return null===this.parent?0:this.parent.level()+1}},{key:"hasChild",value:function(e){return this.children.includes(e)}},{key:"remove",value:function(t){this.hasChild(t)&&(t.removeAllChildren(),t.dispose(),this.children=this.children.filter(function(e){return e!==t}),t.parent=null)}},{key:"removeAllChildren",value:function(){var t=this;this.children.forEach(function(e){0<e.children.length&&e.removeAllChildren(),t.remove(e)})}},{key:"updateBounds",value:function(){var e,t=new Y,n=(this.position&&t.expandByPoint(this.position),q(this.children));try{for(n.s();!(e=n.n()).done;){var i=e.value;i.updateBounds(),t.union(i.boundingBox)}}catch(e){n.e(e)}finally{n.f()}this.boundingBox.copy(t)}},{key:"traverse",value:function(e){var t=e(this);if(void 0===t||!0===t){var n,i=q(this.children);try{for(i.s();!(n=i.n()).done;)n.value.traverse(e)}catch(e){i.e(e)}finally{i.f()}}}},{key:"traverseDescendants",value:function(e){var t,n=q(this.children);try{for(n.s();!(t=n.n()).done;)t.value.traverse(e)}catch(e){n.e(e)}finally{n.f()}}},{key:"flatten",value:function(){var t=[];return this.traverse(function(e){t.push(e)}),t}},{key:"descendants",value:function(){var t=this,n=[];return this.traverse(function(e){e!==t&&n.push(e)}),n}},{key:"setHighlighted",value:function(e){e?(this.domElement.css("opacity","0.8"),this.elTitlebar.css("box-shadow","0 0 5px #fff"),this.domElement.css("z-index","1000"),this._description&&(this.descriptionVisible=!0,this.elDescription.fadeIn(200),this.elDescription.css("position","relative"))):(this.domElement.css("opacity","0.5"),this.elTitlebar.css("box-shadow",""),this.domElement.css("z-index","100"),this.descriptionVisible=!1,this.elDescription.css("display","none")),this.isHighlighted=e}},{key:"hasView",value:function(){var e=null!=this.cameraTarget.x&&null!=this.cameraPosition.x,t=void 0!==this.radius;return e||t}},{key:"moveHere",value:function(e){var t,n,i,r,a,o;this.hasView()&&(t=this.scene.view,n=TWEEN.Easing.Quartic.Out,o=this.cameraTarget||this.position||this.boundingBox.getCenter(new Re),this.cameraPosition?(a=this.cameraPosition,ie.moveTo(this.scene,a,o)):this.radius&&(a=t.direction,o=o.clone().add(a.multiplyScalar(-this.radius)),i=t.radius,r=this.radius,(a=new TWEEN.Tween(t.position).to(o,500)).easing(n),a.start(),(o=new TWEEN.Tween({x:0}).to({x:1},500).onUpdate(function(){t.radius=this.x*r+(1-this.x)*i})).easing(n),o.start()))}},{key:"dispose",value:function(){this.domElement.parentElement&&this.domElement.parentElement.removeChild(this.domElement)}},{key:"toString",value:function(){return"Annotation: "+this._title}}]),s}(),Hm=function(){function t(){te(this,t)}return A(t,null,[{key:"toVector3",value:function(e,t){return(new Re).fromArray(e,t||0)}},{key:"toBox3",value:function(e){return new Y(t.toVector3(e),t.toVector3(e,3))}},{key:"findDim",value:function(e,t){e=e.find(function(e){return e.name==t});if(e)return e;throw new Error("Failed to find "+t+" in schema")}},{key:"sphereFrom",value:function(e){return e.getBoundingSphere(new gi)}}]),t}(),Zl=A(function e(t,n){te(this,e);n.version;var i=n.schema,r=n.bounds,a=n.boundsConforming,o=[Hm.findDim(i,"X"),Hm.findDim(i,"Y"),Hm.findDim(i,"Z")],s=o.map(function(e){return e.scale||1}),o=o.map(function(e){return e.offset||0});this.eptScale=Hm.toVector3(s),this.eptOffset=Hm.toVector3(o),this.url=t,this.info=n,this.type="ept",this.schema=i,this.span=n.span||n.ticks,this.boundingBox=Hm.toBox3(r),this.tightBoundingBox=Hm.toBox3(a),this.offset=Hm.toVector3([0,0,0]),this.boundingSphere=Hm.sphereFrom(this.boundingBox),this.tightBoundingSphere=Hm.sphereFrom(this.tightBoundingBox),this.version=new Potree.Version("1.7"),this.projection=null,this.fallbackProjection=null,n.srs&&n.srs.horizontal&&(this.projection=n.srs.authority+":"+n.srs.horizontal),n.srs.wkt&&(this.projection?this.fallbackProjection=n.srs.wkt:this.projection=n.srs.wkt);try{proj4(this.projection)}catch(e){this.projection=null}s=new Wf,s.add(w.POSITION_CARTESIAN),s.add(new w("rgba",Vf.DATA_TYPE_UINT8,4)),s.add(new w("intensity",Vf.DATA_TYPE_UINT16,1)),s.add(new w("classification",Vf.DATA_TYPE_UINT8,1)),s.add(new w("gps-time",Vf.DATA_TYPE_DOUBLE,1)),s.add(new w("returnNumber",Vf.DATA_TYPE_UINT8,1)),s.add(new w("number of returns",Vf.DATA_TYPE_UINT8,1)),s.add(new w("return number",Vf.DATA_TYPE_UINT8,1)),s.add(new w("source id",Vf.DATA_TYPE_UINT16,1)),this.pointAttributes=s,this.spacing=(this.boundingBox.max.x-this.boundingBox.min.x)/this.span,n.hierarchyType,o=n.dataType;if("laszip"==o)this.loader=new Potree.EptLaszipLoader;else if("binary"==o)this.loader=new Potree.EptBinaryLoader;else{if("zstandard"!=o)throw new Error("Could not read data type: "+o);this.loader=new Potree.EptZstandardLoader}}),mp=function(){function o(e,t,n,i,r,a){te(this,o),this.ept=e,this.b=t,this.d=n,this.x=i||0,this.y=r||0,this.z=a||0}return A(o,[{key:"name",value:function(){return this.d+"-"+this.x+"-"+this.y+"-"+this.z}},{key:"step",value:function(e,t,n){var i=this.b.min.clone(),r=this.b.max.clone(),a=(new Re).subVectors(r,i);return e?i.x+=a.x/2:r.x-=a.x/2,t?i.y+=a.y/2:r.y-=a.y/2,n?i.z+=a.z/2:r.z-=a.z/2,new Potree.EptKey(this.ept,new Y(i,r),this.d+1,2*this.x+e,2*this.y+t,2*this.z+n)}},{key:"children",value:function(){for(var e=[],t=0;t<2;++t)for(var n=0;n<2;++n)for(var i=0;i<2;++i){var r=this.step(t,n,i).name();e.includes(r)||(e=e.concat(r))}return e}}]),o}(),Fd=function(){y(l,Kf);var e,s=C(l);function l(e,t,n,i,r,a){te(this,l),(o=s.call(this)).ept=e,o.key=new Potree.EptKey(o.ept,t||o.ept.boundingBox,n||0,i,r,a),o.id=l.IDCount++,o.geometry=null,o.boundingBox=o.key.b,o.tightBoundingBox=o.boundingBox,o.spacing=o.ept.spacing/Math.pow(2,o.key.d),o.boundingSphere=Hm.sphereFrom(o.boundingBox),o.hasChildren=!1,o.children={},o.numPoints=-1,o.level=o.key.d,o.loaded=!1,o.loading=!1,o.oneTimeDisposeHandlers=[];var o,e=o.key;return o.name=o.toPotreeName(e.d,e.x,e.y,e.z),o.index=parseInt(o.name.charAt(o.name.length-1)),o}return A(l,[{key:"isGeometryNode",value:function(){return!0}},{key:"getLevel",value:function(){return this.level}},{key:"isTreeNode",value:function(){return!1}},{key:"isLoaded",value:function(){return this.loaded}},{key:"getBoundingSphere",value:function(){return this.boundingSphere}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"url",value:function(){return this.ept.url+"ept-data/"+this.filename()}},{key:"getNumPoints",value:function(){return this.numPoints}},{key:"filename",value:function(){return this.key.name()}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"addChild",value:function(e){(this.children[e.index]=e).parent=this}},{key:"load",value:function(){this.loaded||this.loading||Potree.numNodesLoading>=Potree.maxNodesLoading||(this.loading=!0,++Potree.numNodesLoading,-1==this.numPoints&&this.loadHierarchy(),this.loadPoints())}},{key:"loadPoints",value:function(){this.ept.loader.load(this)}},{key:"loadHierarchy",value:(e=d(V().mark(function e(){var l,t,u,c=this;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return((l={})[this.filename()]=this).hasChildren=!1,t="".concat(this.ept.url,"ept-hierarchy/").concat(this.filename(),".json"),e.next=6,fetch(t);case 6:return t=e.sent,e.next=9,t.json();case 9:u=e.sent,Object.keys(u).sort(function(e,t){var e=N(e.split("-").map(function(e){return parseInt(e,10)}),4),n=e[0],i=e[1],r=e[2],e=e[3],t=N(t.split("-").map(function(e){return parseInt(e,10)}),4),a=t[0],o=t[1],s=t[2],t=t[3];return n<a?-1:a<n?1:i<o?-1:o<i?1:r<s?-1:s<r?1:e<t?-1:t<e?1:0}).forEach(function(e){var t=N(e.split("-").map(function(e){return parseInt(e,10)}),4),n=t[0],i=t[1],r=t[2],t=t[3],a=1&i,o=1&r,s=1&t,i=l[n-1+"-"+(i>>1)+"-"+(r>>1)+"-"+(t>>1)];i&&(i.hasChildren=!0,r=i.key.step(a,o,s),(t=new Potree.PointCloudEptGeometryNode(c.ept,r.b,r.d,r.x,r.y,r.z)).level=n,t.numPoints=u[e],i.addChild(t),l[r.name()]=t)});case 12:case"end":return e.stop()}},e,this)})),function(){return e.apply(this,arguments)})},{key:"doneLoading",value:function(e,t,n,i){e.boundingBox=this.boundingBox,this.geometry=e,this.tightBoundingBox=t,this.numPoints=n,this.mean=i,this.loaded=!0,this.loading=!1,--Potree.numNodesLoading}},{key:"toPotreeName",value:function(e,t,n,i){for(var r="r",a=0;a<e;++a){var o=1<<e-a-1,s=0;t&o&&(s+=4),n&o&&(s+=2),i&o&&(s+=1),r+=s}return r}},{key:"dispose",value:function(){if(this.geometry&&null!=this.parent){this.geometry.dispose(),this.geometry=null,this.loaded=!1;for(var e=0;e<this.oneTimeDisposeHandlers.length;e++)(0,this.oneTimeDisposeHandlers[e])();this.oneTimeDisposeHandlers=[]}}}]),l}(),Qm=(Fd.IDCount=0,function(){y(i,vm);var n=C(i);function i(e,t){return te(this,i),t=t||new Fm,(e=n.call(this,e,t)).boundingBox=e.pcoGeometry.tightBoundingBox,e.boundingSphere=e.boundingBox.getBoundingSphere(new gi),e.nodeMaxLevel=0,e.maxLevel=1/0,e.temp={sizeFitToLevel:{},opacity:{}},e.panos=[],e.matrixAutoUpdate=!1,e.orientationUser=0,e.translateUser=new Re,e.rotateMatrix=new _e,e.transformMatrix=new _e,e.transformInvMatrix=new _e,e.rotateInvMatrix=new _e,e.nodeMaxLevelPredict=e.predictNodeMaxLevel(),e.testMaxNodeCount=e.testMaxNodeCount2=0,e.material.spacing=e.pcoGeometry.spacing,e._visible=!0,e.pcoGeometry.addEventListener("updateNodeMaxLevel",e.updateNodeMaxLevel.bind(G(e))),e.isPointcloud=!0,e}return A(i,[{key:"updateNodeMaxLevel",value:function(e){e=Math.max(e.level,this.nodeMaxLevel);e!=this.nodeMaxLevel&&(this.nodeMaxLevel=e,console.log("updateNodeMaxLevel "+this.dataset_id+" : "+this.nodeMaxLevel),this.setPointLevel(),Potree.settings.sizeFitToLevel||this.changePointSize())}},{key:"testMaxNodeLevel",value:function(e){if(!this.testMaxNodeLevelDone){if(0==this.nodeMaxLevel)return!0;if("OrthographicCamera"==e.type){if(!Potree.Utils.isInsideFrustum(this.pcoGeometry.tightBoundingBox,e))return!0}else if(!viewer.atDatasets.includes(this))return!0;var e=this.visibleNodes.map(function(e){return e.getLevel()});return Math.max.apply(null,e)<this.maxLevel?!0:(e=this.maxLevel,this.maxLevel=12,Potree.updatePointClouds([this],viewer.scene.getActiveCamera(),viewer.mainViewport.resolution),this.visibleNodes.map(function(e){return e.getLevel()}),this.maxLevel=e,this.testMaxNodeCount++,500<this.testMaxNodeCount?(console.log("testMaxNodeLevel次数超出,强制结束:",this.dataset_id,this.nodeMaxLevel,this.nodeMaxLevelPredict.min),void(this.testMaxNodeLevelDone="moreThanMaxCount")):this.nodeMaxLevel<this.nodeMaxLevelPredict.min||(this.testMaxNodeCount2++,this.testMaxNodeCount2<50)||void(this.testMaxNodeLevelDone=!0))}}},{key:"setPointLevel",value:function(){var e=Potree.settings.pointDensity,e=Potree.config.pointDensity[e];e&&(e=e.percentByUser&&null!=Potree.settings.UserDensityPercent?Potree.settings.UserDensityPercent:e.maxLevelPercent,this.maxLevel=Math.round(e*this.nodeMaxLevel),Potree.settings.sizeFitToLevel&&this.changePointSize(),this.changePointOpacity())}},{key:"predictNodeMaxLevel",value:function(){var e=.005,t=.014;return{min:Math.log2(this.material.spacing/t),max:Math.log2(this.material.spacing/e)}}},{key:"getHighestNodeSpacing",value:function(){return this.material.spacing/Math.pow(2,this.nodeMaxLevel)}},{key:"updateMaterial",value:function(e,t,n,i,r){e.fov=n.fov*(Math.PI/180),e.resolution=r,e.near=n.near,e.far=n.far,e.uniforms.octreeSize.value=this.pcoGeometry.boundingBox.getSize(new Re).x}},{key:"pick",value:function(e,t,n,i){function r(e,t){return null!=e?e:t}var a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},o=e.renderer,e=e.pRenderer,s=(performance.mark("pick-start"),Be.clamp(Math.round(80*(1.1-this.maxLevel/this.nodeMaxLevel)),5,100)),l=r(a.pickWindowSize,s),s=(r(a.pickOutsideClipRegion,!1),t?t.resolution:o.getSize(new Le)),t=Math.ceil(r(a.width,s.width)),s=Math.ceil(r(a.height,s.height)),u=r(a.pointSizeType,this.material.pointSizeType),c=r(a.pointSize,this.material.size),h=this.nodesOnRay(this.visibleNodes,i);if(0===h.length)return null;this.pickState||(i=new Ps,(p=new Fm).activeAttributeName="indices",d=new Zn(1,1,{minFilter:U,magFilter:ut,format:St}),this.pickState={renderTarget:d,material:p,scene:i});for(var d=this.pickState,p=d.material,i=(p.pointSizeType=u,p.shape=Potree.PointShape.PARABOLOID,p.uniforms.uFilterReturnNumberRange.value=this.material.uniforms.uFilterReturnNumberRange.value,p.uniforms.uFilterNumberOfReturnsRange.value=this.material.uniforms.uFilterNumberOfReturnsRange.value,p.uniforms.uFilterGPSTimeClipRange.value=this.material.uniforms.uFilterGPSTimeClipRange.value,p.uniforms.uFilterPointSourceIDClipRange.value=this.material.uniforms.uFilterPointSourceIDClipRange.value,p.activeAttributeName="indices",p.size=c,p.uniforms.minSize.value=this.material.uniforms.minSize.value,p.uniforms.maxSize.value=this.material.uniforms.maxSize.value,p.classification=this.material.classification,p.recomputeClassification(),p.clipBoxes_in=this.material.clipBoxes_in,p.clipBoxes_out=this.material.clipBoxes_out,p.bigClipInBox=this.material.bigClipInBox,p.uniforms.clipBoxes_in=this.material.uniforms.clipBoxes_in,p.uniforms.clipBoxes_out=this.material.uniforms.clipBoxes_out,p.uniforms.clipBoxBig_in=this.material.uniforms.clipBoxBig_in,this.updateMaterial(p,h,n,o,new Le(t,s)),d.renderTarget.setSize(t,s),new Le(a.x,a.y)),u=o.getContext(),c=(u.enable(u.SCISSOR_TEST),u.scissor(parseInt(i.x-(l-1)/2),parseInt(i.y-(l-1)/2),parseInt(l),parseInt(l)),o.state.buffers.depth.setTest(p.depthTest),o.state.buffers.depth.setMask(p.depthWrite),o.state.setBlending(ge),o.setRenderTarget(d.renderTarget),u.clearColor(0,0,0,0),o.clear(!0,!0,!0),this.material),e=(this.material=p,e.renderOctree(this,h,n,d.renderTarget),window.testScreen&&(p=Potree.Utils.renderTargetToDataUrl(d.renderTarget,t,s,o),Common.downloadFile(p,"screenshot.jpg"),window.testScreen=0),this.material=c,function(e,t,n){return Math.min(Math.max(t,e),n)}),n=parseInt(e(i.x-(l-1)/2,0,t)),c=parseInt(e(i.y-(l-1)/2,0,s)),t=new Uint8Array(4*(l*l)),f=(u.readPixels(n,c,l,l,u.RGBA,u.UNSIGNED_BYTE,t),o.setRenderTarget(null),o.state.reset(),o.setScissorTest(!1),u.disable(u.SCISSOR_TEST),t),m=new Uint32Array(t.buffer),v=(Number.MAX_VALUE,[]),g=0;g<l;g++)for(var A=0;A<l;A++){var y=g+A*l,w=Math.pow(g-(l-1)/2,2)+Math.pow(A-(l-1)/2,2),b=f[4*y+3],y=(f[4*y+3]=0,m[y]);0===b&&0===y||void 0===b||void 0===y||(y={pIndex:y,pcIndex:b,distanceToCenter:w},!a.all&&0<v.length?w<v[0].distanceToCenter&&(v[0]=y):v.push(y))}for(var x=0,E=v;x<E.length;x++){var C=E[x],B={};if(!h[C.pcIndex])return null;var _,M=h[C.pcIndex],T=M.sceneNode,S=M.geometryNode.geometry;for(_ in S.attributes){var I,D,P,k,L=S.attributes[_];"position"===_?(P=L.array[3*C.pIndex+0],I=L.array[3*C.pIndex+1],D=L.array[3*C.pIndex+2],(P=new Re(P,I,D)).applyMatrix4(T.matrixWorld),B[_]=P):"indices"!==_&&(k=L.array.slice(L.itemSize*C.pIndex,L.itemSize*(C.pIndex+1)),L.potree&&function(){var e=L.potree,t=e.scale,n=e.offset;k=k.map(function(e){return e/t+n})}(),B[_]=k)}C.point=B}return performance.mark("pick-end"),performance.measure("pick","pick-start","pick-end"),a.all?v.map(function(e){return e.point}):0===v.length?null:v[0].point}},{key:"changePointSize",value:function(e,t){if(this.material.pointSizeType!=cm.ATTENUATED)return e&&(this.material.size=e/Potree.config.material.realPointSize/1.3);var n;null==e?e=this.temp.pointSize:this.temp.pointSize=e,e/=Potree.config.material.realPointSize/Potree.config.material.pointSize,e=6*Math.pow(e,1.05),t||Potree.settings.sizeFitToLevel?(t=this.temp.pointSize+":"+this.maxLevel+":"+this.nodeMaxLevel,(n=this.temp.sizeFitToLevel[t])?this.material.size=n:(n=this.material.spacing/Math.pow(2,this.maxLevel),n*=0<this.nodeMaxLevel?Math.max(.1,Math.pow(this.maxLevel/this.nodeMaxLevel,1.4)):.1,this.material.size=5*n*e,this.temp.sizeFitToLevel[t]=this.material.size)):this.material.size=.035*e}},{key:"changePointOpacity",value:function(e,t){if(null==e?e=this.temp.pointOpacity:this.temp.pointOpacity=e,"merge"==Potree.settings.editType)return this.material.opacity=e;var n,i,r;1==e?this.material.opacity=1:(n=(Potree.settings.sizeFitToLevel?"sizeFit:":"")+(t?"canMoreThanOne:":"")+this.temp.pointOpacity+":"+this.maxLevel+":"+this.nodeMaxLevel,(i=this.temp.opacity[n])?this.material.opacity=i:(Potree.settings.sizeFitToLevel?(i=this.material.spacing/Math.pow(1.5,this.maxLevel),r=this.material.spacing/Math.pow(1.5,this.nodeMaxLevel),r=Math.min(1/i,1/r/3),this.material.opacity=i*r*e):(i=this.material.spacing/Math.pow(1.8,this.maxLevel),r=this.material.spacing/Math.pow(1.8,this.nodeMaxLevel),r=Math.min(1/i,1/r/6),this.material.opacity=i*r*e),t||(this.material.opacity=Be.clamp(this.material.opacity,0,.999)),this.temp.opacity[n]=this.material.opacity))}},{key:"updateBound",value:function(){var e=this.pcoGeometry.tightBoundingBox.clone().applyMatrix4(this.matrixWorld);this.bound=e,this.bound2=this.getBoundWithPanos()}},{key:"getBoundWithPanos",value:function(){var n=this.bound.clone();return this.panos.forEach(function(e){var t=new Y;t.expandByPoint(e.position),t.expandByVector(new Re(1,1,1)),n.union(t)}),n}},{key:"getPanosBound",value:function(){var e;0<this.panos.length?(e=new Re(1,1,1),this.panosBound=ee.getBoundByPoints(this.panos.map(function(e){return e.position}),e)):this.panosBound=null}},{key:"getUnrotBoundPoint",value:function(e){var t=this,n=this.pcoGeometry.tightBoundingBox;return"all"==e?[new Re(n.min.x,n.min.y,n.min.z),new Re(n.max.x,n.min.y,n.min.z),new Re(n.max.x,n.max.y,n.min.z),new Re(n.min.x,n.max.y,n.min.z),new Re(n.min.x,n.min.y,n.max.z),new Re(n.max.x,n.min.y,n.max.z),new Re(n.max.x,n.max.y,n.max.z),new Re(n.min.x,n.max.y,n.max.z)].map(function(e){return e.applyMatrix4(t.matrixWorld)}):[new Re(n.min.x,n.min.y,0),new Re(n.max.x,n.min.y,0),new Re(n.max.x,n.max.y,0),new Re(n.min.x,n.max.y,0)].map(function(e){return e.applyMatrix4(t.matrixWorld)})}},{key:"getVolume",value:function(){var e=this.pcoGeometry.tightBoundingBox.clone().getSize(new Re);return e.x*e.y*e.z}},{key:"ifContainsPoint",value:function(e){var t=this.pcoGeometry.tightBoundingBox,n=t.getCenter(new Re),t=t.getSize(new Re),n=(new _e).setPosition(n.x,n.y,n.z);return n.scale(t),n.premultiply(this.matrixWorld),Potree.Utils.isIntersectBox(e,n)}},{key:"intersectBox",value:function(e){e=e.clone().premultiply(this.matrixWorld.clone().invert());return Potree.Utils.isIntersectBox(this.pcoGeometry.tightBoundingBox,e)}}]),i}()),Vm=function(){function u(e){te(this,u),this.profile=e,this.segments=[],this.boundingBox=new Y;for(var t=0;t<e.points.length-1;t++){var n=e.points[t],i=e.points[t+1],r=new Re(n.x,n.y,0),a=new Re(i.x,i.y,0),o=(new Re).addVectors(a,r).multiplyScalar(.5),s=r.distanceTo(a),a=(new Re).subVectors(a,r).normalize(),l=new Re(0,0,1),l=(new Re).crossVectors(a,l).normalize(),n={start:n,end:i,cutPlane:(new $i).setFromNormalAndCoplanarPoint(l,r),halfPlane:(new $i).setFromNormalAndCoplanarPoint(a,o),length:s,points:new Jf};this.segments.push(n)}}return A(u,[{key:"size",value:function(){var e,t=0,n=q(this.segments);try{for(n.s();!(e=n.n()).done;)t+=e.value.points.numPoints}catch(e){n.e(e)}finally{n.f()}return t}}]),u}(),Rd=function(){function r(e,t,n,i){te(this,r),this.pointcloud=e,this.profile=t,this.maxDepth=n||Number.MAX_VALUE,this.callback=i,this.temporaryResult=new Vm(this.profile),this.pointsServed=0,this.highestLevelServed=0,this.priorityQueue=new BinaryHeap(function(e){return 1/e.weight}),this.initialize()}return A(r,[{key:"initialize",value:function(){this.priorityQueue.push({node:this.pointcloud.pcoGeometry.root,weight:1/0})}},{key:"traverse",value:function(e){for(var t=[],n=0;n<8;n++){var i=e.children[n];i&&this.pointcloud.nodeIntersectsProfile(i,this.profile)&&t.push(i)}for(;0<t.length;){var r=t.pop(),a=r.boundingSphere.radius;if(this.priorityQueue.push({node:r,weight:a}),r.level<this.maxDepth)for(var o=0;o<8;o++){var s=r.children[o];s&&this.pointcloud.nodeIntersectsProfile(s,this.profile)&&t.push(s)}}}},{key:"update",value:function(){this.updateGeneratorInstance||(this.updateGeneratorInstance=this.updateGenerator()),this.updateGeneratorInstance.next().done&&(this.updateGeneratorInstance=null)}},{key:"updateGenerator",value:V().mark(function e(){var t,n,i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:performance.now(),t=1,n=[],i=0;case 4:if(i<Math.min(t,this.priorityQueue.size())){if(r=this.priorityQueue.pop(),(a=r.node).level>this.maxDepth)return e.abrupt("continue",10);e.next=9}else e.next=13;break;case 9:a.loaded?(n.push(a),W.lru.touch(a),this.highestLevelServed=Math.max(a.getLevel(),this.highestLevelServed),s=a.pcoGeometry,s=s?s.hierarchyStepSize:1,(0===a.getLevel()||a.level%s==0&&a.hasChildren)&&this.traverse(a)):(a.load(),this.priorityQueue.push(r));case 10:i++,e.next=4;break;case 13:if(!(0<n.length)){e.next=33;break}o=q(this.getPointsInsideProfile(n,this.temporaryResult)),e.prev=15,o.s();case 17:if((s=o.n()).done){e.next=24;break}if(s.value){e.next=22;break}return!(e.next=22);case 22:e.next=17;break;case 24:e.next=29;break;case 26:e.prev=26,e.t0=e.catch(15),o.e(e.t0);case 29:return e.prev=29,o.f(),e.finish(29);case 32:100<this.temporaryResult.size()&&(this.pointsServed+=this.temporaryResult.size(),this.callback.onProgress({request:this,points:this.temporaryResult}),this.temporaryResult=new Vm(this.profile));case 33:return 0===this.priorityQueue.size()&&(0<this.temporaryResult.size()&&(this.pointsServed+=this.temporaryResult.size(),this.callback.onProgress({request:this,points:this.temporaryResult}),this.temporaryResult=new Vm(this.profile)),this.callback.onFinish({request:this}),0<=(l=this.pointcloud.profileRequests.indexOf(this)))&&this.pointcloud.profileRequests.splice(l,1),e.next=36,!0;case 36:case"end":return e.stop()}},e,this,[[15,26,29,32]])})},{key:"getAccepted",value:V().mark(function e(t,n,i,r,a,o,s){var l,u,c,h,d,p,f,m,v,g,A;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:l=performance.now(),u=new Uint32Array(t),c=new Float64Array(t),h=new Float32Array(3*t),d=0,p=new Re,f=new Re,m=new Float32Array(n.geometry.attributes.position.array),v=0;case 9:if(v<t){if(p.set(m[3*v+0],m[3*v+1],m[3*v+2]),p.applyMatrix4(i),A=Math.abs(r.cutPlane.distanceToPoint(p)),g=Math.abs(r.halfPlane.distanceToPoint(p)),A<this.profile.width/2&&g<r.length/2&&(f.subVectors(p,r.start),A=a.dot(f),u[d]=v,c[d]=A+s,o.boundingBox.expandByPoint(p),p.sub(this.pointcloud.position),h[3*d+0]=p.x,h[3*d+1]=p.y,h[3*d+2]=p.z,d++),v%1e3==0&&4<performance.now()-l)return!(e.next=20);e.next=21}else e.next=24;break;case 20:l=performance.now();case 21:v++,e.next=9;break;case 24:return u=u.subarray(0,d),c=c.subarray(0,d),h=h.subarray(0,3*d),e.next=29,[u,c,h];case 29:case"end":return e.stop()}},e,this)})},{key:"getPointsInsideProfile",value:V().mark(function e(O,t){var n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B,_,M,T,S,I,D,P,k,L,R,F;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=performance.now(),i=0,r=q(t.segments),e.prev=4,r.s();case 6:if((a=r.n()).done){e.next=86;break}a=a.value,o=q(O),e.prev=9,o.s();case 11:if((s=o.n()).done){e.next=75;break}if(s=s.value,l=s.numPoints,u=s.geometry,l){e.next=17;break}return e.abrupt("continue",73);case 17:if(c=s.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld),c=c.getBoundingSphere(new gi),h=new Re(a.start.x,a.start.y,c.center.z),d=new Re(a.end.x,a.end.y,c.center.z),h=new Cd(h,d).closestPointToPoint(c.center,!0,new Re),d=h.distanceTo(c.center),d<c.radius+t.profile.width){e.next=26;break}return e.abrupt("continue",73);case 26:h=(new Re).subVectors(a.end,a.start).setZ(0),d=h.clone().normalize(),p=new Jf,g=(c=new _e).makeTranslation.apply(c,J(s.boundingBox.min.toArray())),g=(new _e).multiplyMatrices(this.pointcloud.matrixWorld,g),v=m=f=null,g=q(this.getAccepted(l,s,g,a,d,p,i)),e.prev=36,g.s();case 38:if((A=g.n()).done){e.next=53;break}if(A=A.value){e.next=47;break}return performance.now(),!(e.next=44);case 44:n=performance.now(),e.next=51;break;case 47:y=N(A,3),f=y[0],m=y[1],v=y[2];case 51:e.next=38;break;case 53:e.next=58;break;case 55:e.prev=55,e.t0=e.catch(36),g.e(e.t0);case 58:return e.prev=58,g.f(),e.finish(58);case 61:if(4<performance.now()-n)return!(e.next=65);e.next=66;break;case 65:n=performance.now();case 66:p.data.position=v,y=Object.keys(u.attributes).filter(function(e){return!["position","indices"].includes(e)}),w=q(y);try{for(w.s();!(b=w.n()).done;){for(x=b.value,E=u.attributes[x],C=E.array.length/l,parseInt(C),B=E.array.constructor,_=new B(C*f.length),M=E.array,T=_,S=0;S<f.length;S++)I=f[S],P=(D=I*C)+C,k=M.subarray(D,P),T.set(k,S*C);p.data[x]=_}}catch(e){w.e(e)}finally{w.f()}p.data.mileage=m,p.numPoints=f.length,a.points.add(p);case 73:e.next=11;break;case 75:e.next=80;break;case 77:e.prev=77,e.t1=e.catch(9),o.e(e.t1);case 80:return e.prev=80,o.f(),e.finish(80);case 83:i+=a.length;case 84:e.next=6;break;case 86:e.next=91;break;case 88:e.prev=88,e.t2=e.catch(4),r.e(e.t2);case 91:return e.prev=91,r.f(),e.finish(91);case 94:L=q(t.segments);try{for(L.s();!(R=L.n()).done;)F=R.value,t.boundingBox.union(F.points.boundingBox)}catch(e){L.e(e)}finally{L.f()}return e.next=98,!0;case 98:case"end":return e.stop()}},e,this,[[4,88,91,94],[9,77,80,83],[36,55,58,61]])})},{key:"finishLevelThenCancel",value:function(){this.cancelRequested||(this.maxDepth=this.highestLevelServed,this.cancelRequested=!0)}},{key:"cancel",value:function(){this.callback.onCancel(),this.priorityQueue=new BinaryHeap(function(e){return 1/e.weight});var e=this.pointcloud.profileRequests.indexOf(this);0<=e&&this.pointcloud.profileRequests.splice(e,1)}}]),r}(),jm=function(){y(a,pa);var r=C(a);function a(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,a),viewer.renderer.getSize(new Le)),n=t.width,t=t.height,n={resolution:{type:"v2",value:new Le(n,t)},viewportOffset:{type:"v2",value:new Le(0,0)},nearPlane:{type:"f",value:.1},farPlane:{type:"f",value:1e4},depthTexture:{type:"t",value:null},opacity:{type:"f",value:1},map:{type:"t",value:e.map},baseColor:{type:"v3",value:e.color?new Me(e.color):new Me("#ffffff")},backColor:{type:"v3",value:e.backColor?new Me(e.backColor):new Me("#ddd")},clipDistance:{type:"f",value:e.clipDistance||4},occlusionDistance:{type:"f",value:e.occlusionDistance||1},maxClipFactor:{type:"f",value:e.maxClipFactor||1}},i=r.call(this,{uniforms:n,vertexShader:nm["depthBasic.vs"],fragmentShader:nm["depthBasic.fs"],depthWrite:!1,depthTest:!1,transparent:null==e.transparent||e.transparent,side:e.side||0});return i.events={setSize:function(e){var t;i.useDepth&&e.viewport.camera.isPerspectiveCamera&&e.viewport&&(t=(e=e.viewport).offset||new Le,i.uniforms.resolution.value.copy(e.resolution),i.uniforms.viewportOffset.value.copy(t))},render:function(e){i.updateDepthParams(e)},cameraChange:function(e){e.changeInfo.projectionChanged&&i.events.setSize(e)}},null!=e.opacity&&(i.opacity=e.opacity),i.useDepth=e.useDepth,i.map=e.map,i}return A(a,[{key:"useDepth",get:function(){return this.useDepth_},set:function(e){this.useDepth_!=e&&(e&&Qf.EXT_DEPTH.isSupported()?(this.defines.useDepth="",viewer.addEventListener("render.begin",this.events.render),viewer.addEventListener("camera_changed",this.events.cameraChange),this.events.setSize({viewport:viewer.mainViewport}),this.updateDepthParams()):(delete this.defines.useDepth,viewer.removeEventListener("render.begin",this.events.render),viewer.removeEventListener("camera_changed",this.events.cameraChange)),this.useDepth_=e,this.needsUpdate=!0)}},{key:"map",get:function(){return this.uniforms.map.value},set:function(e){(this.uniforms.map.value=e)?this.defines.use_map="":delete this.defines.use_map}},{key:"opacity",get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms&&(this.uniforms.opacity.value=e)}},{key:"color",get:function(){return this.uniforms.baseColor.value},set:function(e){this.uniforms&&this.uniforms.baseColor.value.set(e)}},{key:"copy",value:function(e){return k(_(a.prototype),"copy",this).call(this,e),this.useDepth=e.useDepth,this.map=e.map,this}},{key:"updateDepthParams",value:function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).viewport||viewer.mainViewport,t=e.camera;this.useDepth&&t.isPerspectiveCamera&&(this.uniforms.depthTexture.value=viewer.getPRenderer().getRtEDL(e).depthTexture,this.uniforms.nearPlane.value=t.near,this.uniforms.farPlane.value=t.far)}}]),a}(),Wm=new Ba(1,1),Jm=function(){y(a,Z);var r=C(a);function a(e){function t(e){i.update(e)}function n(e){i.applyMatrix(e)}var i;te(this,a),(i=r.call(this,Wm,e.mat||new jm(e))).root=e.root||G(i),i.renderOrder=null!=e.renderOrder?e.renderOrder:4,i.pickOrder=e.pickOrder||0,i.sizeInfo=e.sizeInfo,i.dontFixOrient=e.dontFixOrient,i.root.matrixAutoUpdate=!1,i.matrixMap=new Map,i.name=e.name||"sprite",i.useViewport=null,i.viewports=e.viewports,i.visible_=!0,viewer.mapViewer&&viewer.mapViewer.addEventListener("camera_changed",t),viewer.addEventListener("camera_changed",t);return viewer.addEventListener("raycaster",n),viewer.addEventListener("render.begin",n),i.addEventListener("dispose",function(){viewer.mapViewer&&viewer.mapViewer.removeEventListener("camera_changed",t),viewer.removeEventListener("camera_changed",t),viewer.removeEventListener("raycaster",n),viewer.removeEventListener("render.begin",n),i.dispose()}),i}return A(a,[{key:"visible",get:function(){return this.visible_},set:function(e){(this.visible_=e)&&this.update()}},{key:"realVisible",value:function(){for(var e,t=this,n=!0,i=this;i;){if(!1===i.visible){n=!1;break}i=(e=i).parent}return!n||e instanceof Ps||(n=!1),!this.latestRealVisi&&n?(this.latestRealVisi=!0,setTimeout(function(){t.update()},1),!1):this.latestRealVisi=n}},{key:"update",value:function(e){var t,n,i,r=this;if(!e)return(t=this.viewports||viewer.viewports)?void t.forEach(function(e){r.update({viewport:e})}):void 0;this.root&&this.realVisible()&&(this.viewports&&!this.viewports.includes(e.viewport)||"magnifier"!=e.viewport.name&&(t=e.viewport.camera,this.dontFixOrient||(n=this.root.parent.getWorldQuaternion(new X),this.root.quaternion.multiplyQuaternions(n.invert(),t.quaternion)),(n=this.sizeInfo)&&(this.root.updateMatrix(),this.root.updateMatrixWorld(!0),i=n.restricMeshScale?(i=t.position.distanceTo(this.root.getWorldPosition(new Re)))<n.nearBound?n.scale*i/n.nearBound:n.scale:ee.getScaleForConstantSize($.extend(n,{camera:t,position:this.root.getWorldPosition(new Re),resolution:e.viewport.resolution})),isNaN(i)||this.root.scale.set(i,i,i)),this.root.updateMatrix(),this.root.updateMatrixWorld(!0),this.matrixMap.set(e.viewport,this.root.matrix.clone()),this.useViewport=e.viewport))}},{key:"applyMatrix",value:function(e){var t;"magnifier"==(e=e||{viewport:viewer.mainViewport}).viewport.name||this.viewports&&!this.viewports.includes(e.viewport)||this.root&&this.realVisible()&&((t=this.matrixMap.get(e.viewport))||(this.update(e),t=this.matrixMap.get(e.viewport)),e.viewport!=this.useViewport)&&(this.useViewport=e.viewport,this.root.matrix.copy(t),this.root.updateMatrixWorld(!0))}},{key:"setUniforms",value:function(e,t){this.material.setUniforms(e,t)}},{key:"dispose",value:function(){this.removeAllListeners(),this.parent&&this.parent.remove(this)}}]),a}(),qm=function(){y(r,K);var i=C(r);function r(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=(te(this,r),e=i.call(this),new Xn);return n.minFilter=U,n.magFilter=U,e.sprite=new Jm(Object.assign({root:G(e)},t,{map:n})),e.add(e.sprite),e.fontWeight=null==t.fontWeight?"Bold":t.fontWeight,e.rectBorderThick=t.rectBorderThick||0,e.textBorderThick=t.textBorderThick||0,e.fontface="Arial",e.fontsize=t.fontsize||16,e.textBorderColor=t.textBorderColor||{r:0,g:0,b:0,a:0},e.backgroundColor=t.backgroundColor||{r:255,g:255,b:255,a:1},e.textColor=t.textColor||{r:0,g:0,b:0,a:1},e.borderColor=t.borderColor||{r:0,g:0,b:0,a:0},e.borderRadius=t.borderRadius||6,null!=t.text&&e.setText(t.text),e.name=t.name,e.addEventListener("dispose",e.dispose.bind(G(e))),e}return A(r,[{key:"setText",value:function(e){this.text!==e&&(this.text=e+"",this.updateTexture())}},{key:"setTextColor",value:function(e){this.textColor=e,this.updateTexture()}},{key:"setBorderColor",value:function(e){this.borderColor=e,this.updateTexture()}},{key:"setBackgroundColor",value:function(e){this.backgroundColor=e,this.updateTexture()}},{key:"setPos",value:function(e){this.position.copy(e),this.sprite.update()}},{key:"update",value:function(){this.sprite.update()}},{key:"setVisible",value:function(e){this.visible=e}},{key:"setUniforms",value:function(e,t){this.sprite.setUniforms(e,t)}},{key:"updateTexture",value:function(){var e=document.createElement("canvas"),t=e.getContext("2d");t.font=this.fontWeight+" "+this.fontsize+"px "+this.fontface;var n=t.measureText(this.text).width,i=new Le(this.fontsize,Math.max(.4*this.fontsize,10)),n=2*i.x+n+2*this.rectBorderThick,r=2*i.y+this.fontsize+2*this.rectBorderThick,t=(t.canvas.width=n,t.canvas.height=r,t.font=this.fontWeight+" "+this.fontsize+"px "+this.fontface,t.textBaseline="middle",t.strokeStyle="rgba("+this.borderColor.r+","+this.borderColor.g+","+this.borderColor.b+","+this.borderColor.a+")",t.lineWidth=this.rectBorderThick,t.fillStyle="rgba("+this.backgroundColor.r+","+this.backgroundColor.g+","+this.backgroundColor.b+","+this.backgroundColor.a+")",this.roundRect(t,this.rectBorderThick/2,this.rectBorderThick/2,n-this.rectBorderThick,r-this.rectBorderThick,this.borderRadius),this.textBorderThick&&(t.strokeStyle="rgba("+this.textBorderColor.r+","+this.textBorderColor.g+","+this.textBorderColor.b+","+this.textBorderColor.a+")",t.lineWidth=this.textBorderThick,t.strokeText(this.text,this.rectBorderThick+i.x,r/2+2)),t.fillStyle="rgba("+this.textColor.r+","+this.textColor.g+","+this.textColor.b+","+this.textColor.a+")",t.fillText(this.text,this.rectBorderThick+i.x,r/2+2),new Xn(e));t.minFilter=U,t.magFilter=U,t.needsUpdate=!0,this.sprite.material.map&&this.sprite.material.map.dispose(),this.sprite.material.map=t,this.sprite.scale.set(.01*n,.01*r,1)}},{key:"roundRect",value:function(e,t,n,i,r,a){e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+i-a,n),e.arcTo(t+i,n,t+i,n+a,a),e.lineTo(t+i,n+r-a),e.arcTo(t+i,n+r,t+i-a,n+r,a),e.lineTo(t+a,n+r),e.arcTo(t,n+r,t,n+r-a,a),e.lineTo(t,n+a),e.arcTo(t,n,t+a,n,a),e.closePath(),e.fill(),e.stroke()}},{key:"dispose",value:function(){this.sprite.material.uniforms.map.value.dispose(),this.parent&&this.parent.remove(this),this.sprite.dispatchEvent({type:"dispose"}),this.removeAllListeners()}}]),r}(),Tu=function(){function e(){te(this,e),this.workers={}}return A(e,[{key:"getWorker",value:function(e){var t;return this.workers[e]||(this.workers[e]=[]),0===this.workers[e].length&&(t=new Worker(e),this.workers[e].push(t)),this.workers[e].pop()}},{key:"returnWorker",value:function(e,t){this.workers[e].push(t)}}]),e}();function Xm(e){var t,n=e.material,i=[],r=q(n.ranges);try{for(r.s();!(t=r.n()).done;){var a=N(t.value,2),o=a[0],s=a[1];i.push({name:o,value:s})}}catch(e){r.e(e)}finally{r.f()}"number"==typeof n.elevationRange[0]&&i.push({name:"elevationRange",value:n.elevationRange}),"number"==typeof n.intensityRange[0]&&i.push({name:"intensityRange",value:n.intensityRange});var l=Object.entries(Potree.PointSizeType).find(function(e){return e[1]===n.pointSizeType})[0],l={activeAttributeName:n.activeAttributeName,ranges:i,size:n.size,minSize:n.minSize,pointSizeType:l,matcap:n.matcap};return{name:e.name,url:e.pcoGeometry.url,position:e.position.toArray(),rotation:e.rotation.toArray(),scale:e.scale.toArray(),material:l}}function Ym(e){return{uuid:e.uuid,name:e.name,points:e.points.map(function(e){return e.toArray()}),height:e.height,width:e.width}}function Km(e){return{uuid:e.uuid,type:e.constructor.name,name:e.name,position:e.position.toArray(),rotation:e.rotation.toArray(),scale:e.scale.toArray(),visible:e.visible,clip:e.clip}}function Zm(e){var t=e.controlPoints.map(function(e){return{position:e.position.toArray(),target:e.target.toArray()}});return{uuid:e.uuid,name:e.name,duration:e.duration,t:e.t,curveType:e.curveType,visible:e.visible,controlPoints:t}}function $m(e){return{uuid:e.uuid,name:e.name,points:e.points.map(function(e){return e.position.toArray()}),showDistances:e.showDistances,showCoordinates:e.showCoordinates,showArea:e.showArea,closed:e.closed,showAngles:e.showAngles,showHeight:e.showHeight,showCircle:e.showCircle,showAzimuth:e.showAzimuth,showEdges:e.showEdges,color:e.color.toArray()}}function ev(e){return{cameraParamsPath:e.cameraParamsPath,imageParamsPath:e.imageParamsPath}}function tv(e){return{path:e.path}}function nv(e){var t,i=new Map,n=(e.scene.annotations.traverseDescendants(function(e){var t,n;n={uuid:(t=e).uuid,title:t.title.toString(),description:t.description,position:t.position.toArray(),offset:t.offset.toArray(),children:[]},t.cameraPosition&&(n.cameraPosition=t.cameraPosition.toArray()),t.cameraTarget&&(n.cameraTarget=t.cameraTarget.toArray()),void 0!==t.radius&&(n.radius=t.radius),i.set(e,n)}),q(i));try{for(n.s();!(t=n.n()).done;){var r,a=N(t.value,2),o=a[0],s=a[1],l=q(o.children);try{for(l.s();!(r=l.n()).done;){var u=r.value,c=i.get(u);s.children.push(c)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){n.e(e)}finally{n.f()}return e.scene.annotations.children.map(function(e){return i.get(e)})}var iv=A(function e(){te(this,e),this.position=new Re(0,0,0),this.target=new Re(0,0,0),this.positionHandle=null,this.targetHandle=null}),rv=function(){y(d,Yf);var n=C(d);function d(e){var t;return te(this,d),(t=n.call(this)).viewer=e,t.selectedElement=null,t.controlPoints=[],t.uuid=Be.generateUUID(),t.node=new K,t.node.name="camera animation",t.viewer.scene.scene.add(t.node),t.frustum=t.createFrustum(),t.node.add(t.frustum),t.name="Camera Animation",t.duration=5,t.t=0,t.curveType="centripetal",t.visible=!0,t.createUpdateHook(),t.createPath(),t}return A(d,[{key:"createUpdateHook",value:function(){var f=this,m=this.viewer;m.addEventListener("update",function(){var e,t=m.scene.getActiveCamera(),n=m.renderer.getSize(new Le),i=n.width,r=n.height,a=(f.node.visible=f.visible,q(f.controlPoints));try{for(a.s();!(e=a.n()).done;){var o,s,l,u,c=e.value,h=c.position.clone().project(t),d=(f.visible&&h.z<1&&-1<h.z?(o=i*(.5*h.x+.5),s=r-r*(.5*h.y+.5),c.positionHandle.svg.style.left=o-c.positionHandle.svg.clientWidth/2,c.positionHandle.svg.style.top=s-c.positionHandle.svg.clientHeight/2,c.positionHandle.svg.style.display=""):c.positionHandle.svg.style.display="none",c.target.clone().project(t));f.visible&&d.z<1&&-1<d.z?(l=i*(.5*d.x+.5),u=r-r*(.5*d.y+.5),c.targetHandle.svg.style.left=l-c.targetHandle.svg.clientWidth/2,c.targetHandle.svg.style.top=u-c.targetHandle.svg.clientHeight/2,c.targetHandle.svg.style.display=""):c.targetHandle.svg.style.display="none"}}catch(e){a.e(e)}finally{a.f()}f.line.material.resolution.set(i,r),f.updatePath();var n=f.at(f.t),p=f.frustum;p.position.copy(n.position),p.lookAt.apply(p,J(n.target.toArray())),p.scale.set(20,20,20),p.material.resolution.set(i,r)})}},{key:"createControlPoint",value:function(e){void 0===e&&(e=this.controlPoints.length);var t,n,i,r=new iv;return 2<=this.controlPoints.length&&0===e?(i=this.controlPoints[0],n=this.controlPoints[1],t=i.position.clone().sub(n.position).multiplyScalar(.5),r.position.copy(i.position).add(t),t=i.target.clone().sub(n.target).multiplyScalar(.5),r.target.copy(i.target).add(t)):2<=this.controlPoints.length&&e===this.controlPoints.length?(n=this.controlPoints[this.controlPoints.length-2],t=(i=this.controlPoints[this.controlPoints.length-1]).position.clone().sub(n.position).multiplyScalar(.5),r.position.copy(n.position).add(t),t=i.target.clone().sub(n.target).multiplyScalar(.5),r.target.copy(i.target).add(t)):2<=this.controlPoints.length&&(n=this.controlPoints[e-1],i=this.controlPoints[e],r.position.copy(n.position.clone().add(i.position).multiplyScalar(.5)),r.target.copy(n.target.clone().add(i.target).multiplyScalar(.5))),r.positionHandle=this.createHandle(r.position),r.targetHandle=this.createHandle(r.target),this.controlPoints.splice(e,0,r),this.dispatchEvent({type:"controlpoint_added",controlpoint:r}),r}},{key:"removeControlPoint",value:function(t){this.controlPoints=this.controlPoints.filter(function(e){return e!==t}),this.dispatchEvent({type:"controlpoint_removed",controlpoint:t}),t.positionHandle.svg.remove(),t.targetHandle.svg.remove()}},{key:"createPath",value:function(){var e=new kf,t=new Af({color:65280,dashSize:5,gapSize:2,linewidth:2,resolution:new Le(1e3,1e3)}),e=new Lf(e,t),t=(this.line=e,this.node.add(e),new kf),e=new Af({color:255,dashSize:5,gapSize:2,linewidth:2,resolution:new Le(1e3,1e3)}),t=new Lf(t,e);this.targetLine=t,this.node.add(t)}},{key:"createFrustum",value:function(){var e=[0,0,0,-.3,-.3,1,0,0,0,.3,-.3,1,0,0,0,.3,.3,1,0,0,0,-.3,.3,1,-.3,-.3,1,.3,-.3,1,.3,-.3,1,.3,.3,1,.3,.3,1,-.3,.3,1,-.3,.3,1,-.3,-.3,1],t=new kf,e=(t.setPositions(e),t.verticesNeedUpdate=!0,t.computeBoundingSphere(),new Af({color:16711680,linewidth:2,resolution:new Le(1e3,1e3)})),t=new Lf(t,e);return t.computeLineDistances(),t}},{key:"updatePath",value:function(){for(var e=this.controlPoints.map(function(e){return e.position}),t=e[0],n=new Jc(e),i=(n.curveType=this.curveType,[]),r=0;r<=100;r++){var a=n.getPoint(r/100).sub(t);i.push(a.x,a.y,a.z)}this.line.geometry.setPositions(i),this.line.geometry.verticesNeedUpdate=!0,this.line.geometry.computeBoundingSphere(),this.line.position.copy(t),this.line.computeLineDistances(),this.cameraCurve=n;for(var e=this.controlPoints.map(function(e){return e.target}),o=e[0],s=new Jc(e),l=(s.curveType=this.curveType,[]),u=0;u<=100;u++){var c=s.getPoint(u/100).sub(o);l.push(c.x,c.y,c.z)}this.targetLine.geometry.setPositions(l),this.targetLine.geometry.verticesNeedUpdate=!0,this.targetLine.geometry.computeBoundingSphere(),this.targetLine.position.copy(o),this.targetLine.computeLineDistances(),this.targetCurve=s}},{key:"at",value:function(e){return 1<e?e=1:e<0&&(e=0),{position:this.cameraCurve.getPointAt(e),target:this.targetCurve.getPointAt(e)}}},{key:"set",value:function(e){this.t=e}},{key:"createHandle",value:function(o){var s=this,e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg"),e=(t.setAttribute("width","2em"),t.setAttribute("height","2em"),t.setAttribute("position","absolute"),t.style.left="50px",t.style.top="50px",t.style.position="absolute",t.style.zIndex="10000",document.createElementNS(e,"circle"));e.setAttributeNS(null,"cx","1em"),e.setAttributeNS(null,"cy","1em"),e.setAttributeNS(null,"r","0.5em"),e.setAttributeNS(null,"style","fill: red; stroke: black; stroke-width: 0.2em;"),t.appendChild(e);this.viewer.renderer.domElement.parentElement.appendChild(t);var n=function(e){var t,n,i,r,a;s.selectedElement&&(e.preventDefault(),n=viewer.renderer.domElement.getBoundingClientRect(),a=e.clientX-n.x,e=e.clientY-n.y,t=(n=s.viewer.renderer.getSize(new Le)).width,n=n.height,i=s.viewer.scene.getActiveCamera(),(r=o.clone().project(i)).x=(a/t-.5)/.5,r.y=(-(e-n)/n-.5)/.5,a=r.clone().unproject(i),o.set(a.x,a.y,a.z))};return t.addEventListener("mousedown",function(e){s.selectedElement=t,document.addEventListener("mousemove",n)}),t.addEventListener("mouseup",function(e){s.selectedElement=null,document.removeEventListener("mousemove",n)}),{svg:t}}},{key:"setVisible",value:function(e){var t,n=(this.node.visible=e)?"":"none",i=q(this.controlPoints);try{for(i.s();!(t=i.n()).done;){var r=t.value;r.positionHandle.svg.style.display=n,r.targetHandle.svg.style.display=n}}catch(e){i.e(e)}finally{i.f()}this.visible=e}},{key:"setDuration",value:function(e){this.duration=e}},{key:"getDuration",value:function(e){return this.duration}},{key:"play",value:function(){function i(e){var t=(performance.now()-a)/1e3/o,n=(r.set(t),r.at(t));viewer.scene.view.position.copy(n.position),viewer.scene.view.lookAt(n.target),1<t&&(r.setVisible(s),r.viewer.removeEventListener("update",i))}var r=this,a=performance.now(),o=this.duration,s=this.visible;this.setVisible(!1);this.viewer.addEventListener("update",i)}}],[{key:"defaultFromView",value:function(e){for(var t=new d(e),n=e.scene.getActiveCamera(),e=e.scene.view.getPivot(),i=new Re(.3*n.position.x+.7*e.x,.3*n.position.y+.7*e.y,.3*n.position.z+.7*e.z),r=new Re(.05*n.position.x+.95*e.x,.05*n.position.y+.95*e.y,.05*n.position.z+.95*e.z),a=.3*n.position.distanceTo(e),o=ie.computeAzimuth(n.position,e),s=0;s<5;s++){var l,u=1.5*Math.PI*(s/5)+o,c=a*Math.cos(u),u=a*Math.sin(u),h=[i.x+c,i.y+u,i.z],c=[r.x+.1*c,r.y+.1*u,r.z],u=t.createControlPoint();(l=u.position).set.apply(l,h),(l=u.target).set.apply(l,c)}return t}}]),d}();function av(s,l){return new Promise(function(o){s.scene.pointclouds.map(function(e){return e.name}).includes(l.name)?o():Potree.loadPointCloud(l.url,l.name,function(e){var t,e=e.pointcloud,n=((t=e.position).set.apply(t,J(l.position)),(t=e.rotation).set.apply(t,J(l.rotation)),(t=e.scale).set.apply(t,J(l.scale)),e.material);if(l.material){if(null!=l.material.activeAttributeName&&(n.activeAttributeName=l.material.activeAttributeName),null!=l.material.ranges){var i,r=q(l.material.ranges);try{for(r.s();!(i=r.n()).done;){var a=i.value;"elevationRange"===a.name?n.elevationRange=a.value:"intensityRange"===a.name?n.intensityRange=a.value:n.setRange(a.name,a.value)}}catch(e){r.e(e)}finally{r.f()}}null!=l.material.size&&(n.size=l.material.size),null!=l.material.minSize&&(n.minSize=l.material.minSize),null!=l.material.pointSizeType&&(n.pointSizeType=cm[l.material.pointSizeType]),null!=l.material.matcap&&(n.matcap=l.material.matcap)}else null!=l.activeAttributeName&&(n.activeAttributeName=l.activeAttributeName);s.scene.addPointCloud(e),o(e)})})}function ov(h,e){if(e){var t,n=function e(t,n){i=t,r=null,h.scene.annotations.traverse(function(e){e.uuid===i.uuid&&(r=e)});var i,r,a=r;if(!a){(s=new zm({position:(a=t).position,title:a.title,cameraPosition:a.cameraPosition,cameraTarget:a.cameraTarget})).description=a.description,s.uuid=a.uuid,a.offset&&(o=s.offset).set.apply(o,J(a.offset));var o,s,l,u=s,c=q(t.children);try{for(c.s();!(l=c.n()).done;)e(l.value,u)}catch(e){c.e(e)}finally{c.f()}n.add(u)}},i=q(e);try{for(i.s();!(t=i.n()).done;)n(t.value,h.scene.annotations)}catch(e){i.e(e)}finally{i.f()}}}function sv(){return(sv=d(V().mark(function e(r,a){var o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("Potree"!==a.type)return console.error("not a valid Potree project"),e.abrupt("return");e.next=3;break;case 3:n=r,(i=a.settings)&&(n.setPointBudget(i.pointBudget),n.setFOV(i.fov),n.setEDLEnabled(i.edlEnabled),n.setEDLRadius(i.edlRadius),n.setEDLStrength(i.edlStrength),n.setBackground(i.background),n.setMinNodeSize(i.minNodeSize),n.setShowBoundingBox(i.showBoundingBoxes)),n=r,i=a.view,t=void 0,(t=n.scene.view.position).set.apply(t,J(i.position)),(t=n.scene.view).lookAt.apply(t,J(i.target)),o=[],s=q(a.pointclouds);try{for(s.s();!(l=s.n()).done;)u=l.value,c=av(r,u),o.push(c)}catch(e){s.e(e)}finally{s.f()}h=q(a.measurements);try{for(h.s();!(d=h.n()).done;)p=d.value,!function(e,t){var n=e.scene.measurements.find(function(e){return e.uuid===t.uuid});if(!n){var i,r=new Gf,a=(r.uuid=t.uuid,r.name=t.name,r.showDistances=t.showDistances,r.showCoordinates=t.showCoordinates,r.showArea=t.showArea,r.closed=t.closed,r.showAngles=t.showAngles,r.showHeight=t.showHeight,r.showCircle=t.showCircle,r.showAzimuth=t.showAzimuth,r.showEdges=t.showEdges,q(t.points));try{for(a.s();!(i=a.n()).done;){var o=i.value,s=re(Re,J(o));r.addMarker(s)}}catch(e){a.e(e)}finally{a.f()}e.scene.addMeasurement(r)}}(r,p)}catch(e){h.e(e)}finally{h.f()}f=q(a.volumes);try{for(f.s();!(m=f.n()).done;)v=m.value,!function(e,t){var n,i;e.scene.volumes.find(function(e){return e.uuid===t.uuid})||((i=new Potree[t.type]).uuid=t.uuid,i.name=t.name,(n=i.position).set.apply(n,J(t.position)),(n=i.rotation).set.apply(n,J(t.rotation)),(n=i.scale).set.apply(n,J(t.scale)),i.visible=t.visible,i.clip=t.clip,e.scene.addVolume(i))}(r,v)}catch(e){f.e(e)}finally{f.f()}g=q(a.cameraAnimations);try{for(g.s();!(A=g.n()).done;)y=A.value,!function(e,t){var n=e.scene.cameraAnimations.find(function(e){return e.uuid===t.uuid});if(!n){var i,r=new rv(e),a=(r.uuid=t.uuid,r.name=t.name,r.duration=t.duration,r.t=t.t,r.curveType=t.curveType,r.visible=t.visible,r.controlPoints=[],q(t.controlPoints));try{for(a.s();!(i=a.n()).done;){var o,s,l=i.value,u=r.createControlPoint();(o=u.position).set.apply(o,J(l.position)),(s=u.target).set.apply(s,J(l.target))}}catch(e){a.e(e)}finally{a.f()}e.scene.addCameraAnimation(r)}}(r,y)}catch(e){g.e(e)}finally{g.f()}w=q(a.profiles);try{for(w.s();!(b=w.n()).done;)x=b.value,!function(e,t){var n=t.name,i=t.points,r=e.scene.profiles.find(function(e){return e.uuid===t.uuid});if(!r){var a,o=new Potree.Profile,s=(o.name=n,o.uuid=t.uuid,o.setWidth(t.width),q(i));try{for(s.s();!(a=s.n()).done;){var l=a.value;o.addMarker(re(Re,J(l)))}}catch(e){s.e(e)}finally{s.f()}e.scene.addProfile(o)}}(r,x)}catch(e){w.e(e)}finally{w.f()}if(a.orientedImages){E=q(a.orientedImages);try{for(E.s();!(C=E.n()).done;)B=C.value,!function(t,e){var n=e.cameraParamsPath,i=e.imageParamsPath;t.scene.orientedImages.find(function(e){return e.imageParamsPath===i})||Potree.OrientedImageLoader.load(n,i,t).then(function(e){t.scene.addOrientedImages(e)})}(r,B)}catch(e){E.e(e)}finally{E.f()}}return ov(r,a.annotations),n=r,(t=a.classification)&&n.setClassifications(t),ie.waitAny(o).then(function(){if(a.geopackages){var e,t=q(a.geopackages);try{for(t.s();!(e=t.n()).done;){var n=e.value;!function(t,e){var n=e.path;t.scene.geopackages.find(function(e){return e.path===n})||(e=t.getProjection(),proj4.defs("WGS84","+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),proj4.defs("pointcloud",e),e=proj4("WGS84","pointcloud"),Potree.GeoPackageLoader.loadUrl(n,{transform:e}).then(function(e){t.scene.addGeopackage(e)}))}(r,n)}}catch(e){t.e(e)}finally{t.f()}}}),e.next=22,Promise.all(o);case 22:case"end":return e.stop()}var t,n,i},e)}))).apply(this,arguments)}var lv=function(){y(n,nc);var t=C(n);function n(){var e;te(this,n);return(e=t.call(this)).setValues({uniforms:{screenWidth:{type:"f",value:0},screenHeight:{type:"f",value:0},edlStrength:{type:"f",value:1},uNear:{type:"f",value:1},uFar:{type:"f",value:1},radius:{type:"f",value:1},neighbours:{type:"2fv",value:[]},depthMap:{type:"t",value:null},uEDLColor:{type:"t",value:null},uEDLDepth:{type:"t",value:null},opacity:{type:"f",value:1},uProj:{type:"Matrix4fv",value:[]}},vertexShader:e.getDefines()+nm["edl.vs"],fragmentShader:e.getDefines()+nm["edl.fs"],lights:!1}),e.neighbourCount=8,e}return A(n,[{key:"getDefines",value:function(){var e="";return e+="#define NEIGHBOUR_COUNT "+this.neighbourCount+"\n"}},{key:"updateShaderSource",value:function(){var e=this.getDefines()+nm["edl.vs"],t=this.getDefines()+nm["edl.fs"];this.setValues({vertexShader:e,fragmentShader:t}),this.uniforms.neighbours.value=this.neighbours,this.needsUpdate=!0}},{key:"neighbourCount",get:function(){return this._neighbourCount},set:function(e){if(this._neighbourCount!==e){this._neighbourCount=e,this.neighbours=new Float32Array(2*this._neighbourCount);for(var t=0;t<this._neighbourCount;t++)this.neighbours[2*t+0]=Math.cos(2*t*Math.PI/this._neighbourCount),this.neighbours[2*t+1]=Math.sin(2*t*Math.PI/this._neighbourCount);this.updateShaderSource()}}}]),n}(),uv=function(){function h(e,t){te(this,h),this.version="string"==typeof e?new zf(e):e,this.extension=t}var n;return A(h,[{key:"load",value:function(t){var n,i,r=this;t.loaded||(n=t.getURL(),this.version.equalOrHigher("1.4")&&(n+=".".concat(this.extension)),(i=uf.createXMLHttpRequest()).open("GET",n,!0),i.responseType="arraybuffer",i.overrideMimeType("text/plain; charset=x-user-defined"),i.onreadystatechange=function(){var e;4===i.readyState&&(200===i.status||0===i.status?(e=i.response,r.parse(t,e)):console.log("Failed to load file! HTTP status: "+i.status+", file: "+n))},i.send(null))}},{key:"parse",value:(n=d(V().mark(function e(t,n){var i,r,a,o,s,l,u,c;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=new LASFile(n),r=new cv(t),e.prev=2,e.next=5,i.open();case 5:i.isOpen=!0,e.next=12;break;case 8:return e.prev=8,e.t0=e.catch(2),console.log("failed to open file. :("),e.abrupt("return");case 12:return e.next=14,i.getHeader();case 14:a=e.sent,s=0,l=(o=1)<=1?a.pointsCount:a.pointsCount/o,u=!0;case 19:if(u)return e.next=22,i.readData(1e6,0,o);e.next=29;break;case 22:c=e.sent,r.push(new LASDecoder(c.buffer,a.pointsFormatId,a.pointsStructSize,c.count,a.scale,a.offset,a.mins,a.maxs)),s+=c.count,h.progressCB(s/l),u=c.hasMoreData,e.next=19;break;case 29:return a.totalRead=s,a.versionAsString=i.versionAsString,a.isCompressed=i.isCompressed,h.progressCB(1),e.prev=33,e.next=36,i.close();case 36:i.isOpen=!1,e.next=43;break;case 39:throw e.prev=39,e.t1=e.catch(33),console.error("failed to close las/laz file!!!"),e.t1;case 43:case"end":return e.stop()}},e,null,[[2,8],[33,39]])})),function(e,t){return n.apply(this,arguments)})},{key:"handle",value:function(e,t){}}],[{key:"progressCB",value:function(){}}]),h}(),cv=function(){function t(e){te(this,t),this.node=e}return A(t,[{key:"push",value:function(d){var p=this,f=Potree.scriptPath+"/workers/LASDecoderWorker.js",m=Potree.workerPool.getWorker(f),v=this.node.pcoGeometry.pointAttributes,e=(m.onmessage=function(i){var e,t=new j,n=d.pointsCount,r=new Float32Array(i.data.position),a=new Uint8Array(i.data.color),o=new Float32Array(i.data.intensity),s=new Uint8Array(i.data.classification),l=new Uint8Array(i.data.returnNumber),u=new Uint8Array(i.data.numberOfReturns),c=new Uint16Array(i.data.pointSourceID),h=new Uint8Array(i.data.indices);t.setAttribute("position",new Q(r,3)),t.setAttribute("color",new Q(a,4,!0)),t.setAttribute("intensity",new Q(o,1)),t.setAttribute("classification",new Q(s,1)),t.setAttribute("return number",new Q(l,1)),t.setAttribute("number of returns",new Q(u,1)),t.setAttribute("source id",new Q(c,1)),t.setAttribute("indices",new Q(h,4)),t.attributes.indices.normalized=!0;for(e in i.data.ranges)!function(t){var e=i.data.ranges[t],n=v.attributes.find(function(e){return e.name===t});n.range[0]=Math.min(n.range[0],e[0]),n.range[1]=Math.max(n.range[1],e[1])}(e);r=new Y((new Re).fromArray(i.data.tightBoundingBox.min),(new Re).fromArray(i.data.tightBoundingBox.max));t.boundingBox=p.node.boundingBox,p.node.tightBoundingBox=r,p.node.geometry=t,p.node.numPoints=n,p.node.loaded=!0,p.node.loading=!1,Potree.numNodesLoading--,p.node.mean=re(Re,J(i.data.mean)),Potree.workerPool.returnWorker(f,m)},{buffer:d.arrayb,numPoints:d.pointsCount,pointSize:d.pointSize,pointFormatID:2,scale:d.scale,offset:d.offset,mins:d.mins,maxs:d.maxs});m.postMessage(e,[e.buffer])}}]),t}();function hv(e){var t=new zf(e.version),n={COLOR_PACKED:"rgba",RGBA:"rgba",INTENSITY:"intensity",CLASSIFICATION:"classification",GPS_TIME:"gps-time"},i=[];if(t.upTo("1.7")){var r,a=q(e.pointAttributes);try{for(a.s();!(r=a.n()).done;){var o=r.value,s=w[o],l={name:s.name,size:s.byteSize,elements:s.numElements,elementSize:s.byteSize/s.numElements,type:s.type.name,description:""};i.push(l)}}catch(e){a.e(e)}finally{a.f()}}else i.push.apply(i,J(e.pointAttributes));for(var u=new Wf,c={int8:Vf.DATA_TYPE_INT8,int16:Vf.DATA_TYPE_INT16,int32:Vf.DATA_TYPE_INT32,int64:Vf.DATA_TYPE_INT64,uint8:Vf.DATA_TYPE_UINT8,uint16:Vf.DATA_TYPE_UINT16,uint32:Vf.DATA_TYPE_UINT32,uint64:Vf.DATA_TYPE_UINT64,double:Vf.DATA_TYPE_DOUBLE,float:Vf.DATA_TYPE_FLOAT},h=0,d=i;h<d.length;h++){var p,f,m,v=d[h];null==v.name?(p=w[v],u.add(p)):(p=v.name,f=c[v.type],m=v.elements,v.description,v=new w(n[p]||p,f,m),u.add(v))}return void 0!==i.find(function(e){return"NormalX"===e.name})&&void 0!==i.find(function(e){return"NormalY"===e.name})&&void 0!==i.find(function(e){return"NormalZ"===e.name})&&u.addVector({name:"NORMAL",attributes:["NormalX","NormalY","NormalZ"]}),u}function dv(){var e=new Wf;return e.add(w.POSITION_CARTESIAN),e.add(new w("rgba",Vf.DATA_TYPE_UINT8,4)),e.add(new w("intensity",Vf.DATA_TYPE_UINT16,1)),e.add(new w("classification",Vf.DATA_TYPE_UINT8,1)),e.add(new w("gps-time",Vf.DATA_TYPE_DOUBLE,1)),e.add(new w("number of returns",Vf.DATA_TYPE_UINT8,1)),e.add(new w("return number",Vf.DATA_TYPE_UINT8,1)),e.add(new w("source id",Vf.DATA_TYPE_UINT16,1)),e}var pv=function(){function e(){te(this,e)}return A(e,[{key:"loadPointAttributes",value:function(e){for(var t=e.pointAttributes,n=new Wf,i=0;i<t.length;i++){var r=w[t[i]];n.add(r)}return n}},{key:"createChildAABB",value:function(e,t){var n=e.min.clone(),e=e.max.clone(),i=(new Re).subVectors(e,n);return 0<(1&t)?n.z+=i.z/2:e.z-=i.z/2,0<(2&t)?n.y+=i.y/2:e.y-=i.y/2,0<(4&t)?n.x+=i.x/2:e.x-=i.x/2,new Y(n,e)}}],[{key:"load",value:function(d,e,p){try{var f=new $f,m=(f.timeStamp=e,f.url=d,uf.createXMLHttpRequest());m.open("GET",d+"?m="+e,!0),m.onreadystatechange=function(){if(4===m.readyState&&(200===m.status||0===m.status)){var e=JSON.parse(m.responseText),t=new zf(e.version),n=(0===e.octreeDir.indexOf("http")?f.octreeDir=e.octreeDir:f.octreeDir=d+"/../"+e.octreeDir,f.spacing=e.spacing,f.hierarchyStepSize=e.hierarchyStepSize,f.pointAttributes=e.pointAttributes,new Re(e.boundingBox.lx,e.boundingBox.ly,e.boundingBox.lz)),i=new Re(e.boundingBox.ux,e.boundingBox.uy,e.boundingBox.uz),i=new Y(n,i),r=i.clone(),n=(e.tightBoundingBox&&(r.min.copy(new Re(e.tightBoundingBox.lx,e.tightBoundingBox.ly,e.tightBoundingBox.lz)),r.max.copy(new Re(e.tightBoundingBox.ux,e.tightBoundingBox.uy,e.tightBoundingBox.uz))),n.clone()),a=(i.min.sub(n),i.max.sub(n),r.min.sub(n),r.max.sub(n),f.boundingBox=i,f.tightBoundingBox=r,f.boundingSphere=i.getBoundingSphere(new gi),f.tightBoundingSphere=r.getBoundingSphere(new gi),f.offset=n,"LAS"===e.pointAttributes?(f.loader=new uv(e.version,"las"),f.pointAttributes=dv()):"LAZ"===e.pointAttributes?(f.loader=new uv(e.version,"laz"),f.pointAttributes=dv()):(f.loader=new Hf(e.version,i,e.scale),f.pointAttributes=hv(e)),{}),r=new em("r",f,i);if(r.level=0,r.hasChildren=!0,r.spacing=f.spacing,t.upTo("1.5")?r.numPoints=e.hierarchy[0][1]:r.numPoints=0,f.root=r,f.root.load(),a.r=r,t.upTo("1.4"))for(var o=1;o<e.hierarchy.length;o++){var s=e.hierarchy[o][0],l=e.hierarchy[o][1],u=parseInt(s.charAt(s.length-1)),c=a[s.substring(0,s.length-1)],h=s.length-1,u=ie.createChildAABB(c.boundingBox,u),u=new em(s,f,u);u.level=h,u.numPoints=l,u.spacing=f.spacing/Math.pow(2,h),c.addChild(u),a[s]=u}f.nodes=a,p(f)}},m.send(null)}catch(e){console.log("loading failed: '"+d+"'"),console.log(e),p()}}}]),e}(),fv=A(function e(){te(this,e),this.url=null,this.spacing=0,this.boundingBox=null,this.root=null,this.pointAttributes=null,this.loader=null}),mv=function(){function i(e,t,n){te(this,i),this.id=i.IDCount++,this.name=e,this.index=parseInt(e.charAt(e.length-1)),this.octreeGeometry=t,this.boundingBox=n,this.boundingSphere=n.getBoundingSphere(new gi),this.children={},this.numPoints=0,this.level=null,this.oneTimeDisposeHandlers=[]}return A(i,[{key:"isGeometryNode",value:function(){return!0}},{key:"getLevel",value:function(){return this.level}},{key:"isTreeNode",value:function(){return!1}},{key:"isLoaded",value:function(){return this.loaded}},{key:"getBoundingSphere",value:function(){return this.boundingSphere}},{key:"getBoundingBox",value:function(){return this.boundingBox}},{key:"getChildren",value:function(){for(var e=[],t=0;t<8;t++)this.children[t]&&e.push(this.children[t]);return e}},{key:"load",value:function(){Potree.numNodesLoading>=Potree.maxNodesLoading||this.octreeGeometry.loader.load(this)}},{key:"getNumPoints",value:function(){return this.numPoints}},{key:"dispose",value:function(){if(this.geometry&&null!=this.parent){this.geometry.dispose(),this.geometry=null,this.loaded=!1;for(var e=0;e<this.oneTimeDisposeHandlers.length;e++)(0,this.oneTimeDisposeHandlers[e])();this.oneTimeDisposeHandlers=[]}}}]),i}(),vv=(mv.IDCount=0,function(){function t(e){te(this,t),this.url=e}var n,i;return A(t,[{key:"load",value:(i=d(V().mark(function e(o){var t,n,i,r,a,s,l,u,c,h,d,p,f,m;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(o.loaded||o.loading)return e.abrupt("return");e.next=2;break;case 2:if(o.loading=!0,Potree.numNodesLoading++,e.prev=4,2===o.nodeType)return e.next=8,this.loadHierarchy(o);e.next=8;break;case 8:n=o.byteOffset,a=o.byteSize,t="".concat(this.url,"/../octree.bin"),i=(n=n)+a-1n,0n!==a?e.next=17:(r=new ArrayBuffer(0),console.warn("loaded node with 0 bytes: ".concat(o.name)),e.next=23);break;case 17:return e.next=19,fetch(t,{headers:{"content-type":"multipart/byteranges",Range:"bytes=".concat(n,"-").concat(i)}});case 19:return a=e.sent,e.next=22,a.arrayBuffer();case 22:r=e.sent;case 23:s="BROTLI"===this.metadata.encoding?Potree.scriptPath+"/workers/2.0/DecoderWorker_brotli.js":Potree.scriptPath+"/workers/2.0/DecoderWorker.js",(l=Potree.workerPool.getWorker(s)).onmessage=function(e){var t,e=e.data,n=e.attributeBuffers,i=(Potree.workerPool.returnWorker(s,l),new j);for(t in n){var r,a=n[t].buffer;"position"===t?i.setAttribute("position",new Q(new Float32Array(a),3)):"rgba"===t?i.setAttribute("rgba",new Q(new Uint8Array(a),4,!0)):"NORMAL"===t?i.setAttribute("normal",new Q(new Float32Array(a),3)):"INDICES"===t?((r=new Q(new Uint8Array(a),4)).normalized=!0,i.setAttribute("indices",r)):(r=new Q(new Float32Array(a),1),a=n[t].attribute,r.potree={offset:n[t].offset,scale:n[t].scale,preciseBuffer:n[t].preciseBuffer,range:a.range},i.setAttribute(t,r))}o.density=e.density,o.geometry=i,o.loaded=!0,o.loading=!1,Potree.numNodesLoading--},m=o.octreeGeometry.pointAttributes,u=o.octreeGeometry.scale,h=o.boundingBox,c=o.octreeGeometry.offset.clone().add(h.min),h=h.max.clone().sub(h.min),d=c.clone().add(h),p=o.numPoints,f=o.octreeGeometry.loader.offset,m={name:o.name,buffer:r,pointAttributes:m,scale:u,min:c,max:d,size:h,offset:f,numPoints:p},l.postMessage(m,[m.buffer]),e.next=46;break;case 38:e.prev=38,e.t0=e.catch(4),o.loaded=!1,o.loading=!1,Potree.numNodesLoading--,console.log("failed to load ".concat(o.name)),console.log(e.t0),console.log("trying again!");case 46:case"end":return e.stop()}},e,this,[[4,38]])})),function(e){return i.apply(this,arguments)})},{key:"parseHierarchy",value:function(e,t){for(var n=new DataView(t),i=(performance.now(),t.byteLength/22),r=e.octreeGeometry,a=new Array(i),o=(a[0]=e,1),s=0;s<i;s++){var l=a[s],u=n.getUint8(22*s+0),c=n.getUint8(22*s+1),h=n.getUint32(22*s+2,!0),d=n.getBigInt64(22*s+6,!0),p=n.getBigInt64(22*s+14,!0);if(2!==l.nodeType&&2===u?(l.hierarchyByteOffset=d,l.hierarchyByteSize=p):(l.byteOffset=d,l.byteSize=p),l.numPoints=h,0n===l.byteSize&&(l.numPoints=0),l.nodeType=u,2!==l.nodeType)for(var f,m,v=0;v<8;v++)0!=(1<<v&c)&&(f=l.name+v,m=function(e,t){var n=e.min.clone(),e=e.max.clone(),i=gv.subVectors(e,n);0<(1&t)?n.z+=i.z/2:e.z-=i.z/2;0<(2&t)?n.y+=i.y/2:e.y-=i.y/2;0<(4&t)?n.x+=i.x/2:e.x-=i.x/2;return new Y(n,e)}(l.boundingBox,v),(m=new mv(f,r,m)).name=f,m.spacing=l.spacing/2,m.level=l.level+1,(l.children[v]=m).parent=l,a[o]=m,o++)}performance.now()}},{key:"loadHierarchy",value:(n=d(V().mark(function e(t){var n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.hierarchyByteOffset,n=t.hierarchyByteSize,i="".concat(this.url,"/../hierarchy.bin"),n=(r=r)+n-1n,e.next=6,fetch(i,{headers:{"content-type":"multipart/byteranges",Range:"bytes=".concat(r,"-").concat(n)}});case 6:return i=e.sent,e.next=9,i.arrayBuffer();case 9:r=e.sent,this.parseHierarchy(t,r);case 11:case"end":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})}]),t}()),gv=new Re;var Av={double:Vf.DATA_TYPE_DOUBLE,float:Vf.DATA_TYPE_FLOAT,int8:Vf.DATA_TYPE_INT8,uint8:Vf.DATA_TYPE_UINT8,int16:Vf.DATA_TYPE_INT16,uint16:Vf.DATA_TYPE_UINT16,int32:Vf.DATA_TYPE_INT32,uint32:Vf.DATA_TYPE_UINT32,int64:Vf.DATA_TYPE_INT64,uint64:Vf.DATA_TYPE_UINT64},Iu=function(){function s(){te(this,s)}var t;return A(s,null,[{key:"parseAttributes",value:function(e){var t,n=new Wf,i={rgb:"rgba"},r=q(e);try{for(r.s();!(t=r.n()).done;){var a=t.value,o=a.name,s=(a.description,a.size,a.numElements),l=(a.elementSize,a.min),u=a.max,c=Av[a.type],h=new w(i[o]||o,c,s);h.range=1===s?[l[0],u[0]]:[l,u],"gps-time"===o&&h.range[0]===h.range[1]&&(h.range[1]+=1),h.initialRange=h.range,n.add(h)}}catch(e){r.e(e)}finally{r.f()}return void 0!==n.attributes.find(function(e){return"NormalX"===e.name})&&void 0!==n.attributes.find(function(e){return"NormalY"===e.name})&&void 0!==n.attributes.find(function(e){return"NormalZ"===e.name})&&n.addVector({name:"NORMAL",attributes:["NormalX","NormalY","NormalZ"]}),n}},{key:"load",value:(t=d(V().mark(function e(t){var n,i,r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return n=e.sent,e.next=5,n.json();case 5:return n=e.sent,r=s.parseAttributes(n.attributes),(i=new vv(t)).metadata=n,i.attributes=r,i.scale=n.scale,i.offset=n.offset,(r=new fv).url=t,r.spacing=n.spacing,r.scale=n.scale,a=re(Re,J(n.boundingBox.min)),o=re(Re,J(n.boundingBox.max)),o=new Y(a,o),a=a.clone(),o.min.sub(a),o.max.sub(a),r.projection=n.projection,r.boundingBox=o,r.tightBoundingBox=o.clone(),r.boundingSphere=o.getBoundingSphere(new gi),r.tightBoundingSphere=o.getBoundingSphere(new gi),r.offset=a,r.pointAttributes=s.parseAttributes(n.attributes),r.loader=i,(a=new mv("r",r,o)).level=0,a.nodeType=2,a.hierarchyByteOffset=0n,a.hierarchyByteSize=BigInt(n.hierarchy.firstChunkSize),a.hasChildren=!1,a.spacing=r.spacing,a.byteOffset=0,r.root=a,i.load(a),o={geometry:r},e.abrupt("return",o);case 42:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}]),s}(),yv=function(){function e(){te(this,e)}var n;return A(e,null,[{key:"load",value:(n=d(V().mark(function e(t,n){var i,r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return i=e.sent,e.next=5,i.json();case 5:i=e.sent,r=t.substr(0,t.lastIndexOf("ept.json")),r=new Potree.PointCloudEptGeometry(r,i),a=new Potree.PointCloudEptGeometryNode(r),r.root=a,r.root.load(),n(r);case 12:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})}]),e}(),wv=function(){function e(){te(this,e)}return A(e,[{key:"extension",value:function(){return".bin"}},{key:"workerPath",value:function(){return Potree.scriptPath+"/workers/EptBinaryDecoderWorker.js"}},{key:"load",value:function(t){var n=this;if(!t.loaded){var i=t.url()+this.extension(),r=uf.createXMLHttpRequest();r.open("GET",i,!0),r.responseType="arraybuffer",r.overrideMimeType("text/plain; charset=x-user-defined"),r.onreadystatechange=function(){var e;4===r.readyState&&(200===r.status?(e=r.response,n.parse(t,e)):console.log("Failed "+i+": "+r.status))};try{r.send(null)}catch(e){console.log("Failed request: "+e)}}}},{key:"parse",value:function(r,e){var a=this.workerPath(),o=Potree.workerPool.getWorker(a),e=(o.onmessage=function(e){var t=new j,n=e.data.numPoints,i=new Float32Array(e.data.position),i=(t.setAttribute("position",new Q(i,3)),new Uint8Array(e.data.indices)),i=(t.setAttribute("indices",new Q(i,4)),e.data.color&&(i=new Uint8Array(e.data.color),t.setAttribute("color",new Q(i,4,!0))),e.data.intensity&&(i=new Float32Array(e.data.intensity),t.setAttribute("intensity",new Q(i,1))),e.data.classification&&(i=new Uint8Array(e.data.classification),t.setAttribute("classification",new Q(i,1))),e.data.returnNumber&&(i=new Uint8Array(e.data.returnNumber),t.setAttribute("return number",new Q(i,1))),e.data.numberOfReturns&&(i=new Uint8Array(e.data.numberOfReturns),t.setAttribute("number of returns",new Q(i,1))),e.data.pointSourceId&&(i=new Uint16Array(e.data.pointSourceId),t.setAttribute("source id",new Q(i,1))),t.attributes.indices.normalized=!0,new Y((new Re).fromArray(e.data.tightBoundingBox.min),(new Re).fromArray(e.data.tightBoundingBox.max)));r.doneLoading(t,i,n,re(Re,J(e.data.mean))),Potree.workerPool.returnWorker(a,o)},{buffer:e,schema:r.ept.schema,scale:r.ept.eptScale,offset:r.ept.eptOffset,mins:[(e=r.key.b.min).x,e.y,e.z]});o.postMessage(e,[e.buffer])}}]),e}(),Th=function(){function e(){te(this,e)}var n;return A(e,[{key:"load",value:function(t){var n,i,r=this;t.loaded||(n=t.url()+".laz",(i=uf.createXMLHttpRequest()).open("GET",n,!0),i.responseType="arraybuffer",i.overrideMimeType("text/plain; charset=x-user-defined"),i.onreadystatechange=function(){var e;4===i.readyState&&(200===i.status?(e=i.response,r.parse(t,e)):console.log("Failed "+n+": "+i.status))},i.send(null))}},{key:"parse",value:(n=d(V().mark(function e(t,n){var i,r,a,o,s,l,u,c,h;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=new LASFile(n),r=new bv(t),e.prev=2,e.next=5,i.open();case 5:return i.isOpen=!0,e.next=8,i.getHeader();case 8:a=e.sent,o=0,s=(l=function(e){return[e.x,e.y,e.z]})(t.key.b.min),l=l(t.key.b.max),u=!0;case 14:if(u)return e.next=17,i.readData(1e6,0,1);e.next=26;break;case 17:c=e.sent,(h=new LASDecoder(c.buffer,a.pointsFormatId,a.pointsStructSize,c.count,a.scale,a.offset,s,l)).extraBytes=a.extraBytes,h.pointsFormatId=a.pointsFormatId,r.push(h),o+=c.count,u=c.hasMoreData,e.next=14;break;case 26:return a.totalRead=o,a.versionAsString=i.versionAsString,a.isCompressed=i.isCompressed,e.next=31,i.close();case 31:i.isOpen=!1,e.next=42;break;case 34:if(e.prev=34,e.t0=e.catch(2),console.error("Error reading LAZ:",e.t0),i.isOpen)return e.next=40,i.close();e.next=41;break;case 40:i.isOpen=!1;case 41:throw e.t0;case 42:case"end":return e.stop()}},e,null,[[2,34]])})),function(e,t){return n.apply(this,arguments)})}]),e}(),bv=function(){function t(e){te(this,t),this.node=e}return A(t,[{key:"push",value:function(d){var p=this,f=Potree.scriptPath+"/workers/EptLaszipDecoderWorker.js",m=Potree.workerPool.getWorker(f),e=(m.onmessage=function(e){var t=new j,n=d.pointsCount,i=new Float32Array(e.data.position),r=new Uint8Array(e.data.color),a=new Float32Array(e.data.intensity),o=new Uint8Array(e.data.classification),s=new Uint8Array(e.data.returnNumber),l=new Uint8Array(e.data.numberOfReturns),u=new Uint16Array(e.data.pointSourceID),c=new Uint8Array(e.data.indices),h=new Float32Array(e.data.gpsTime),i=(t.setAttribute("position",new Q(i,3)),t.setAttribute("rgba",new Q(r,4,!0)),t.setAttribute("intensity",new Q(a,1)),t.setAttribute("classification",new Q(o,1)),t.setAttribute("return number",new Q(s,1)),t.setAttribute("number of returns",new Q(l,1)),t.setAttribute("source id",new Q(u,1)),t.setAttribute("indices",new Q(c,4)),t.setAttribute("gpsTime",new Q(h,1)),p.node.gpsTime=e.data.gpsMeta,t.attributes.indices.normalized=!0,new Y((new Re).fromArray(e.data.tightBoundingBox.min),(new Re).fromArray(e.data.tightBoundingBox.max)));p.node.doneLoading(t,i,n,re(Re,J(e.data.mean))),Potree.workerPool.returnWorker(f,m)},{buffer:d.arrayb,numPoints:d.pointsCount,pointSize:d.pointSize,pointFormatID:d.pointsFormatId,scale:d.scale,offset:d.offset,mins:d.mins,maxs:d.maxs});m.postMessage(e,[e.buffer])}}]),t}(),Pu=function(){y(t,wv);var e=C(t);function t(){return te(this,t),e.apply(this,arguments)}return A(t,[{key:"extension",value:function(){return".zst"}},{key:"workerPath",value:function(){return Potree.scriptPath+"/workers/EptZstandardDecoderWorker.js"}}]),t}(),up=function(){function e(){te(this,e),this.transform=null}var t,n;return A(e,[{key:"load",value:(n=d(V().mark(function e(t){var n,i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=new Af({color:16711680,linewidth:3,resolution:new Le(1e3,1e3),dashed:!1}),e.next=3,this.loadShapefileFeatures(t);case 3:l=e.sent,i=new K,r=q(l);try{for(r.s();!(a=r.n()).done;)o=a.value,s=this.featureToSceneNode(o,n),i.add(s)}catch(e){r.e(e)}finally{r.f()}return l={features:l,node:i,setResolution:function(e,t){n.resolution.set(e,t)}},e.abrupt("return",l);case 10:case"end":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:"featureToSceneNode",value:function(e,t){var n,i=e.geometry,r=(new Me(1,1,1),this.transform);if(null===r&&(r={forward:function(e){return e}}),"Point"===e.geometry.type)return n=new Z(new Hu(1,18,18),new sc),d=(h=N(i.coordinates,2))[0],h=h[1],d=r.forward([d,h]),(h=n.position).set.apply(h,J(d).concat([20])),n.scale.set(10,10,10),n;if("LineString"===i.type){for(var a=[],o=new Re(1/0,1/0,1/0),s=0;s<i.coordinates.length;s++){var l=N(i.coordinates[s],2),u=l[0],l=l[1],u=r.forward([u,l]);o.x=Math.min(o.x,u[0]),o.y=Math.min(o.y,u[1]),o.z=Math.min(o.z,20),a.push.apply(a,J(u).concat([20])),0<s&&s<i.coordinates.length-1&&a.push.apply(a,J(u).concat([20]))}for(var c=0;c<a.length;c+=3)a[c+0]-=o.x,a[c+1]-=o.y,a[c+2]-=o.z;var h=new kf,d=(h.setPositions(a),new Lf(h,t));return d.computeLineDistances(),d.scale.set(1,1,1),d.position.copy(o),d}if("Polygon"===i.type){var p,f=q(i.coordinates);try{for(f.s();!(p=f.n()).done;){for(var m=p.value,v=[],g=new Re(1/0,1/0,1/0),A=0;A<m.length;A++){var y=N(m[A],2),w=y[0],b=y[1],x=r.forward([w,b]);g.x=Math.min(g.x,x[0]),g.y=Math.min(g.y,x[1]),g.z=Math.min(g.z,20),v.push.apply(v,J(x).concat([20])),0<A&&A<m.length-1&&v.push.apply(v,J(x).concat([20]))}for(var E=0;E<v.length;E+=3)v[E+0]-=g.x,v[E+1]-=g.y,v[E+2]-=g.z;var C=new kf,B=(C.setPositions(v),new Lf(C,t));return B.computeLineDistances(),B.scale.set(1,1,1),B.position.copy(g),B}}catch(e){f.e(e)}finally{f.f()}}else console.log("unhandled feature: ",e)}},{key:"loadShapefileFeatures",value:(t=d(V().mark(function e(t){var n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=[],e.next=3,shapefile.open(t);case 3:i=e.sent;case 4:return e.next=7,i.read();case 7:if((r=e.sent).done)return e.abrupt("break",13);e.next=10;break;case 10:r.value&&"Feature"===r.value.type&&void 0!==r.value.geometry&&n.push(r.value),e.next=4;break;case 13:return e.abrupt("return",n);case 14:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})}]),e}(),xv={landuse:[.5,.5,.5],natural:[0,1,0],places:[1,0,1],points:[0,1,1],roads:[1,1,0],waterways:[0,0,1],default:[.9,.6,.1]};var Ev,Cv,Bv,_v,Mv,Tv,Sv,Iv=A(function e(){te(this,e),this.path=null,this.node=null}),Dd=function(){function C(){te(this,C)}var n,i;return A(C,null,[{key:"loadUrl",value:(i=d(V().mark(function e(t,n){var i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([ie.loadScript("".concat(Potree.scriptPath,"/lazylibs/geopackage/geopackage.js")),ie.loadScript("".concat(Potree.scriptPath,"/lazylibs/sql.js/sql-wasm.js"))]);case 2:return e.next=4,fetch(t);case 4:return i=e.sent,e.next=7,i.arrayBuffer();case 7:return i=e.sent,(n=n||{}).source=t,e.abrupt("return",C.loadBuffer(i,n));case 11:case"end":return e.stop()}},e)})),function(e,t){return i.apply(this,arguments)})},{key:"loadBuffer",value:(n=d(V().mark(function e(x,E){var t;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all([ie.loadScript("".concat(Potree.scriptPath,"/lazylibs/geopackage/geopackage.js")),ie.loadScript("".concat(Potree.scriptPath,"/lazylibs/sql.js/sql-wasm.js"))]);case 2:return E=E||{},t=function(){var t=d(V().mark(function e(t){var n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=(n=E.transform)||{forward:function(e){return e}},i="".concat(Potree.scriptPath,"/lazylibs/sql.js/sql-wasm.wasm"),e.next=5,initSqlJs({locateFile:function(e){return i}});case 5:return e.sent,a=new Uint8Array(x),e.next=9,geopackage.open(a);case 9:r=e.sent,window.data=r,(a=new K).name=E.source,a.potree={source:E.source},(o=new Iv).path=E.source,o.node=a,s=r.getTables(),l=q(s.features);try{for(l.s();!(u=l.n()).done;)for(h=u.value,d=r.getFeatureDao(h),p=(p=d.getBoundingBox()).projectBoundingBox(d.projection,"EPSG:4326"),f=r.queryForGeoJSONFeaturesInTable(h,p),m=new Af({color:(c=new Me).setRGB.apply(c,J(xv[h]||xv.default)),linewidth:2,resolution:new Le(1e3,1e3),dashed:!1}),(v=new K).name=h,o.node.add(v),g=0,A=Object.entries(f);g<A.length;g++)y=N(A[g],2),y[0],w=y[1],b=C.featureToSceneNode(w,m,d.projection,n),v.add(b)}catch(e){l.e(e)}finally{l.f()}t(o);case 21:case"end":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}(),e.abrupt("return",new Promise(t));case 5:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})},{key:"featureToSceneNode",value:function(e,t,n,i){var r,a=e.geometry;new Me(1,1,1);if("Point"===e.geometry.type)return r=new Z(new Hu(1,18,18),new sc),p=(d=N(a.coordinates,2))[0],d=d[1],p=i.forward(n.forward([p,d])),(d=r.position).set.apply(d,J(p).concat([20])),r.scale.set(10,10,10),r;if("LineString"===a.type){for(var o=[],s=new Re(1/0,1/0,1/0),l=0;l<a.coordinates.length;l++){var u=N(a.coordinates[l],2),c=u[0],u=u[1],c=i.forward(n.forward([c,u]));s.x=Math.min(s.x,c[0]),s.y=Math.min(s.y,c[1]),s.z=Math.min(s.z,20),o.push.apply(o,J(c).concat([20])),0<l&&l<a.coordinates.length-1&&o.push.apply(o,J(c).concat([20]))}for(var h=0;h<o.length;h+=3)o[h+0]-=s.x,o[h+1]-=s.y,o[h+2]-=s.z;var d=new kf,p=(d.setPositions(o),new Lf(d,t));return p.computeLineDistances(),p.scale.set(1,1,1),p.position.copy(s),p}if("Polygon"===a.type){var f,m=q(a.coordinates);try{for(m.s();!(f=m.n()).done;){for(var v=f.value,g=[],A=new Re(1/0,1/0,1/0),y=0;y<v.length;y++){var w=N(v[y],2),b=w[0],x=w[1],E=i.forward(n.forward([b,x]));A.x=Math.min(A.x,E[0]),A.y=Math.min(A.y,E[1]),A.z=Math.min(A.z,20),g.push.apply(g,J(E).concat([20])),0<y&&y<v.length-1&&g.push.apply(g,J(E).concat([20]))}for(var C=0;C<g.length;C+=3)g[C+0]-=A.x,g[C+1]-=A.y,g[C+2]-=A.z;var B=new kf,_=(B.setPositions(g),new Lf(B,t));return _.computeLineDistances(),_.scale.set(1,1,1),_.position.copy(A),_}}catch(e){m.e(e)}finally{m.f()}}else console.log("unhandled feature: ",e)}}]),C}(),Dv=function(){y(o,K);var a=C(o);function o(e){function t(e,t,n){var i=new L({color:n,depthTest:!1,depthWrite:!1}),r=new Hl,n=(r.vertices.push(new Re(0,0,0)),r.vertices.push(new Re(0,1,0)),new vl({color:n,depthTest:!1,depthWrite:!1,transparent:!0}));return(r=new xl(r,n)).name=e+"_shaft",(n=new Z(new Jl(0,.04,.1,10,1,!1),i)).name=e+"_head",n.position.y=1,(i=new K).name=e,i.add(r),i.add(n),i}te(this,o),(n=a.call(this)).constructor.counter=void 0===n.constructor.counter?0:n.constructor.counter+1,n.name="clip_volume_"+n.constructor.counter;var n,i=e.alpha||0,r=e.beta||0,e=e.gamma||0,i=(n.rotation.x=i,n.rotation.y=r,n.rotation.z=e,n.clipOffset=.001,n.clipRotOffset=1,new Ql(1,1,1)),r=(i.computeBoundingBox(),new Hl),e=(r.vertices.push(new Re(-.5,-.5,.5)),r.vertices.push(new Re(.5,-.5,.5)),r.vertices.push(new Re(.5,-.5,.5)),r.vertices.push(new Re(.5,-.5,-.5)),r.vertices.push(new Re(.5,-.5,-.5)),r.vertices.push(new Re(-.5,-.5,-.5)),r.vertices.push(new Re(-.5,-.5,-.5)),r.vertices.push(new Re(-.5,-.5,.5)),r.vertices.push(new Re(-.5,.5,.5)),r.vertices.push(new Re(.5,.5,.5)),r.vertices.push(new Re(.5,.5,.5)),r.vertices.push(new Re(.5,.5,-.5)),r.vertices.push(new Re(.5,.5,-.5)),r.vertices.push(new Re(-.5,.5,-.5)),r.vertices.push(new Re(-.5,.5,-.5)),r.vertices.push(new Re(-.5,.5,.5)),r.vertices.push(new Re(-.5,-.5,.5)),r.vertices.push(new Re(-.5,.5,.5)),r.vertices.push(new Re(.5,-.5,.5)),r.vertices.push(new Re(.5,.5,.5)),r.vertices.push(new Re(.5,-.5,-.5)),r.vertices.push(new Re(.5,.5,-.5)),r.vertices.push(new Re(-.5,-.5,-.5)),r.vertices.push(new Re(-.5,.5,-.5)),r.colors.push(new Re(1,1,1)),new Hl);e.vertices.push(new Re(-.5,-.5,0)),e.vertices.push(new Re(-.5,.5,0)),e.vertices.push(new Re(.5,.5,0)),e.vertices.push(new Re(.5,-.5,0)),e.vertices.push(new Re(-.5,.5,0)),e.vertices.push(new Re(.5,.5,0)),e.vertices.push(new Re(-.5,-.5,0)),e.vertices.push(new Re(.5,-.5,0)),n.dimension=new Re(1,1,1),n.material=new L({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),n.box=new Z(i,n.material),n.box.geometry.computeBoundingBox(),n.boundingBox=n.box.geometry.boundingBox,n.add(n.box),n.frame=new Bl(r,new vl({color:0})),n.add(n.frame),n.planeFrame=new Bl(e,new vl({color:16711680})),n.add(n.planeFrame),n.setScaleZ(.1);return n.arrowX=t("arrow_x",new Re(1,0,0),16711680),n.arrowY=t("arrow_y",new Re(0,1,0),65280),n.arrowZ=t("arrow_z",new Re(0,0,1),255),n.arrowX.rotation.z=-Math.PI/2,n.arrowZ.rotation.x=Math.PI/2,n.arrowX.visible=!1,n.arrowY.visible=!1,n.arrowZ.visible=!1,n.add(n.arrowX),n.add(n.arrowY),n.add(n.arrowZ),n.addEventListener("ui_select",function(e){n.arrowX.visible=!0,n.arrowY.visible=!0,n.arrowZ.visible=!0}),n.addEventListener("ui_deselect",function(e){n.arrowX.visible=!1,n.arrowY.visible=!1,n.arrowZ.visible=!1}),n.addEventListener("select",function(e){var t=$("#"+n.name+" .scene_header");t.next().is(":visible")||t.click()}),n.addEventListener("deselect",function(e){var t=$("#"+n.name+" .scene_header");t.next().is(":visible")&&t.click()}),n.update(),n}return A(o,[{key:"setClipOffset",value:function(e){this.clipOffset=e}},{key:"setClipRotOffset",value:function(e){this.clipRotOffset=e}},{key:"setScaleX",value:function(e){this.box.scale.x=e,this.frame.scale.x=e,this.planeFrame.scale.x=e}},{key:"setScaleY",value:function(e){this.box.scale.y=e,this.frame.scale.y=e,this.planeFrame.scale.y=e}},{key:"setScaleZ",value:function(e){this.box.scale.z=e,this.frame.scale.z=e,this.planeFrame.scale.z=e}},{key:"offset",value:function(e){var t=e.cs||null,n=e.axis||null,e=e.dir||null;t&&n&&e&&("x"===n?"local"===t?this.position.add(this.localX.clone().multiplyScalar(e*this.clipOffset)):"global"===t&&(this.position.x=this.position.x+e*this.clipOffset):"y"===n?"local"===t?this.position.add(this.localY.clone().multiplyScalar(e*this.clipOffset)):"global"===t&&(this.position.y=this.position.y+e*this.clipOffset):"z"===n&&("local"===t?this.position.add(this.localZ.clone().multiplyScalar(e*this.clipOffset)):"global"===t&&(this.position.z=this.position.z+e*this.clipOffset)),this.dispatchEvent({type:"clip_volume_changed",viewer:viewer,volume:this}))}},{key:"rotate",value:function(e){var t=e.cs||null,n=e.axis||null,e=e.dir||null;t&&n&&e&&("local"===t?"x"===n?this.rotateOnAxis(new Re(1,0,0),e*this.clipRotOffset*Math.PI/180):"y"===n?this.rotateOnAxis(new Re(0,1,0),e*this.clipRotOffset*Math.PI/180):"z"===n&&this.rotateOnAxis(new Re(0,0,1),e*this.clipRotOffset*Math.PI/180):"global"===t&&(t=new Kn(1,0,0,0),"y"===n?t=new Kn(0,1,0,0):"z"===n&&(t=new Kn(0,0,1,0)),this.updateMatrixWorld(),n=newthis.matrixWorld.clone().invert(),t=t.applyMatrix4(n).normalize(),t=new Re(t.x,t.y,t.z),this.rotateOnAxis(t,e*this.clipRotOffset*Math.PI/180)),this.updateLocalSystem(),this.dispatchEvent({type:"clip_volume_changed",viewer:viewer,volume:this}))}},{key:"update",value:function(){this.boundingBox=this.box.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new gi),this.box.visible=!1,this.updateLocalSystem()}},{key:"updateLocalSystem",value:function(){var e=this.getWorldQuaternion();this.localX=new Re(1,0,0).applyQuaternion(e).normalize(),this.localY=new Re(0,1,0).applyQuaternion(e).normalize(),this.localZ=new Re(0,0,1).applyQuaternion(e).normalize()}},{key:"raycast",value:function(e,t){var n=[];this.box.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}}]),o}(),Pv=function(){y(i,Yf);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).viewer=e,t.maxPolygonVertices=8,t.addEventListener("start_inserting_clipping_volume",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.sceneMarker=new Ps,t.sceneVolume=new Ps,t.sceneVolume.name="scene_clip_volume",t.viewer.inputHandler.registerInteractiveScene(t.sceneVolume),t.onRemove=function(e){t.sceneVolume.remove(e.volume)},t.onAdd=function(e){t.sceneVolume.add(e.volume)},t.viewer.inputHandler.addEventListener("delete",function(e){e.selection.filter(function(e){return e instanceof Dv}).forEach(function(e){return t.viewer.scene.removeClipVolume(e)}),e.selection.filter(function(e){return e instanceof Uf}).forEach(function(e){return t.viewer.scene.removePolygonClipVolume(e)})}),t}return A(i,[{key:"setScene",value:function(e){this.scene!==e&&(this.scene&&(this.scene.removeEventListeners("clip_volume_added",this.onAdd),this.scene.removeEventListeners("clip_volume_removed",this.onRemove),this.scene.removeEventListeners("polygon_clip_volume_added",this.onAdd),this.scene.removeEventListeners("polygon_clip_volume_removed",this.onRemove)),this.scene=e,this.scene.addEventListener("clip_volume_added",this.onAdd),this.scene.addEventListener("clip_volume_removed",this.onRemove),this.scene.addEventListener("polygon_clip_volume_added",this.onAdd),this.scene.addEventListener("polygon_clip_volume_removed",this.onRemove))}},{key:"startInsertion",value:function(){var e,t,r,n,a,i,o=this;return(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).type||null?(e=this.viewer.renderer.domElement,t=this.viewer.renderer.getSize(new Le),r=$('\n\t\t<svg height="'.concat(t.height,'" width="').concat(t.width,'" style="position:absolute; pointer-events: none">\n\n\t\t\t<defs>\n\t\t\t\t <marker id="diamond" markerWidth="24" markerHeight="24" refX="12" refY="12"\n\t\t\t\t\t\tmarkerUnits="userSpaceOnUse">\n\t\t\t\t\t<circle cx="12" cy="12" r="6" fill="white" stroke="black" stroke-width="3"/>\n\t\t\t\t</marker>\n\t\t\t</defs>\n\n\t\t\t<polyline fill="none" stroke="black" \n\t\t\t\tstyle="stroke:rgb(0, 0, 0);\n\t\t\t\tstroke-width:6;"\n\t\t\t\tstroke-dasharray="9, 6"\n\t\t\t\tstroke-dashoffset="2"\n\t\t\t\t/>\n\n\t\t\t<polyline fill="none" stroke="black" \n\t\t\t\tstyle="stroke:rgb(255, 255, 255);\n\t\t\t\tstroke-width:2;"\n\t\t\t\tstroke-dasharray="5, 10"\n\t\t\t\tmarker-start="url(#diamond)" \n\t\t\t\tmarker-mid="url(#diamond)" \n\t\t\t\tmarker-end="url(#diamond)" \n\t\t\t\t/>\n\t\t</svg>')),$(e.parentElement).append(r),n=new Uf(this.viewer.scene.getActiveCamera().clone()),this.dispatchEvent({type:"start_inserting_clipping_volume"}),this.viewer.scene.addPolygonClipVolume(n),this.sceneMarker.add(n),i=function(i){i.button===le.LEFT?(n.addMarker(),r.find("polyline").each(function(e,t){var n=r[0].createSVGPoint();n.x=i.offsetX,n.y=i.offsetY,t.points.appendItem(n)}),n.markers.length>o.maxPolygonVertices&&a.callback(),o.viewer.inputHandler.startDragging(n.markers[n.markers.length-1])):i.button===le.RIGHT&&a.callback(i)},(a={callback:null}).callback=function(e){r.remove(),3<n.markers.length?(n.removeLastMarker(),n.initialized=!0):o.viewer.scene.removePolygonClipVolume(n),o.viewer.renderer.domElement.removeEventListener("mouseup",i,!0),o.viewer.removeEventListener("cancel_insertions",a.callback),o.viewer.inputHandler.enabled=!0},this.viewer.addEventListener("cancel_insertions",a.callback),this.viewer.renderer.domElement.addEventListener("mouseup",i,!0),this.viewer.inputHandler.enabled=!1,n.addMarker(),this.viewer.inputHandler.startDragging(n.markers[n.markers.length-1]),n):null}},{key:"update",value:function(){}}]),i}(),kv=(Od={},Ev=new sd({LITTLE:"II",BIG:"MM"}),Cv=new sd({BYTE:{value:1,bytes:1},ASCII:{value:2,bytes:1},SHORT:{value:3,bytes:2},LONG:{value:4,bytes:4},RATIONAL:{value:5,bytes:8},SBYTE:{value:6,bytes:1},UNDEFINED:{value:7,bytes:1},SSHORT:{value:8,bytes:2},SLONG:{value:9,bytes:4},SRATIONAL:{value:10,bytes:8},FLOAT:{value:11,bytes:4},DOUBLE:{value:12,bytes:8}}),Bv=new sd({IMAGE_WIDTH:256,IMAGE_HEIGHT:257,BITS_PER_SAMPLE:258,COMPRESSION:259,PHOTOMETRIC_INTERPRETATION:262,STRIP_OFFSETS:273,ORIENTATION:274,SAMPLES_PER_PIXEL:277,ROWS_PER_STRIP:278,STRIP_BYTE_COUNTS:279,X_RESOLUTION:282,Y_RESOLUTION:283,PLANAR_CONFIGURATION:284,RESOLUTION_UNIT:296,SOFTWARE:305,COLOR_MAP:320,SAMPLE_FORMAT:339,MODEL_PIXEL_SCALE:33550,MODEL_TIEPOINT:33922,GEO_KEY_DIRECTORY:34735,GEO_DOUBLE_PARAMS:34736,GEO_ASCII_PARAMS:34737}),_v=new Map([[Cv.BYTE,Uint8Array],[Cv.ASCII,Uint8Array],[Cv.SHORT,Uint16Array],[Cv.LONG,Uint32Array],[Cv.RATIONAL,Uint32Array],[Cv.SBYTE,Int8Array],[Cv.UNDEFINED,Uint8Array],[Cv.SSHORT,Int16Array],[Cv.SLONG,Int32Array],[Cv.SRATIONAL,Int32Array],[Cv.FLOAT,Float32Array],[Cv.DOUBLE,Float64Array]]),Mv=A(function e(t,n,i,r,a){te(this,e),this.tag=t,this.type=n,this.count=i,this.offset=r,this.value=a}),Tv=A(function e(){te(this,e),this.width=0,this.height=0,this.buffer=null,this.metadata=[]}),Fu=function(){function e(){te(this,e)}return A(e,null,[{key:"read",value:function(e){var t=String.fromCharCode.apply(String,J(Array.from(e.slice(0,2))));Ev.fromValue(t);if(42!==e.readUInt8(2))throw new Error("not a valid tiff file");for(var t=e.readUInt32LE(4),r=(console.log("offsetToFirstIFD",t),[]),n=t,i=0;i<100;){console.log("currentIFDOffset",n);for(var a=e.readUInt16LE(n),o=e.readUInt32LE(n+2+12*a),s=(console.log("next offset: ",n+2+12*a),e.slice(n+2,n+2+12*a)),l=0;l<a;l++){var u,F=Bv.fromValue(s.readUInt16LE(12*l)),c=Cv.fromValue(s.readUInt16LE(12*l+2)),h=s.readUInt32LE(12*l+4),d=s.readUInt32LE(12*l+8),p=c.bytes*h,f=void 0,p=(p<=4?f=d:((u=new Uint8Array(p)).set(e.slice(d,d+p)),f=new(_v.get(c))(u.buffer),c===Cv.ASCII&&(f=String.fromCharCode.apply(String,J(f)))),new Mv(F,c,h,d,f));r.push(p)}if(console.log("nextIFDOffset",o),0===o)break;n=o,i++}for(var t=function(e){var t,n=q(r);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(i.tag===e)return i}}catch(e){n.e(e)}finally{n.f()}return null},m=t(Bv.IMAGE_WIDTH).value,v=t(Bv.IMAGE_HEIGHT).value,g=(t(Bv.COMPRESSION).value,t(Bv.ROWS_PER_STRIP).value),A=t(Bv.STRIP_OFFSETS),y=t(Bv.STRIP_BYTE_COUNTS),w=Math.ceil(v/g),b=[],x=0;x<y.count;x++){var E=y.type,C=y.offset+x*E.bytes,B=void 0;E===Cv.SHORT?B=e.readUInt16LE(C):E===Cv.LONG&&(B=e.readUInt32LE(C)),b.push(B)}for(var _=[],M=0;M<A.count;M++){var T=A.type,S=A.offset+M*T.bytes,I=void 0;T===Cv.SHORT?I=e.readUInt16LE(S):T===Cv.LONG&&(I=e.readUInt32LE(S)),_.push(I)}for(var D=new Uint8Array(m*v*3),P=0,k=0;k<w;k++)for(var O=_[k],N=e.slice(O,O+b[k]),L=3*m,R=0;R<g;R++){var G=N.slice(R*L,R*L+L);if(D.set(G,P*L),G.length!==L)break;P++}console.log("width: ".concat(m)),console.log("height: ".concat(v)),console.log("numStrips: ".concat(w)),console.log("stripByteCounts",b.join(", ")),console.log("stripOffsets",_.join(", "));t=new Tv;return t.width=m,t.height=v,t.buffer=D,t.metadata=r,t}}]),e}(),td=function(){function e(){te(this,e)}return A(e,null,[{key:"toTiffBuffer",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=new Uint8Array([73,73,42,0,8,0,0,0]),i=[e.width,e.height],r=i[0],i=i[1],a=[new Mv(Bv.IMAGE_WIDTH,Cv.SHORT,1,null,r),new Mv(Bv.IMAGE_HEIGHT,Cv.SHORT,1,null,i),new Mv(Bv.BITS_PER_SAMPLE,Cv.SHORT,4,null,new Uint16Array([8,8,8,8])),new Mv(Bv.COMPRESSION,Cv.SHORT,1,null,1),new Mv(Bv.PHOTOMETRIC_INTERPRETATION,Cv.SHORT,1,null,2),new Mv(Bv.ORIENTATION,Cv.SHORT,1,null,1),new Mv(Bv.SAMPLES_PER_PIXEL,Cv.SHORT,1,null,4),new Mv(Bv.ROWS_PER_STRIP,Cv.LONG,1,null,i),new Mv(Bv.STRIP_BYTE_COUNTS,Cv.LONG,1,null,r*i*3),new Mv(Bv.PLANAR_CONFIGURATION,Cv.SHORT,1,null,1),new Mv(Bv.RESOLUTION_UNIT,Cv.SHORT,1,null,1),new Mv(Bv.SOFTWARE,Cv.ASCII,6,null,"......"),new Mv(Bv.STRIP_OFFSETS,Cv.LONG,1,null,null),new Mv(Bv.X_RESOLUTION,Cv.RATIONAL,1,null,new Uint32Array([1,1])),new Mv(Bv.Y_RESOLUTION,Cv.RATIONAL,1,null,new Uint32Array([1,1]))],o=(t.ifdEntries&&a.push.apply(a,J(t.ifdEntries)),10+12*a.length+4),s=new Map,l=new Map,u=0,c=a;u<c.length;u++){var h=c[u],d=new ArrayBuffer(12),p=new DataView(d);h.type.bytes,h.count;p.setUint16(0,h.tag.value,!0),p.setUint16(2,h.type.value,!0),p.setUint32(4,h.count,!0),1===h.count&&h.type.bytes<=4?p.setUint32(8,h.value,!0):(p.setUint32(8,o,!0),p=new Uint8Array(h.count*h.type.bytes),h.type===Cv.ASCII?p.set(new Uint8Array(h.value.split("").map(function(e){return e.charCodeAt(0)}))):p.set(new Uint8Array(h.value.buffer)),l.set(h.tag,p),o+=p.byteLength),s.set(h.tag,d)}function f(e){var t,n=e.reduce(function(e,t){return e+t.byteLength},0),i=new Uint8Array(n),r=0,a=q(e);try{for(a.s();!(t=a.n()).done;){var o=t.value;i.set(new Uint8Array(o),r),r+=o.byteLength}}catch(e){a.e(e)}finally{a.f()}return i}t=o;new DataView(s.get(Bv.STRIP_OFFSETS)).setUint32(8,t,!0);return{width:r,height:i,buffer:f([n,f([new Uint16Array([a.length])].concat(J(s.values()),[new Uint32Array([0])])),f(J(l.values())),e.buffer])}}}]),e}(),Od.Tag=Bv,Od.Type=Cv,Od.IFDEntry=Mv,Od.Image=Tv,Od.Reader=Fu,Od.Exporter=td,function(){function n(e){te(this,n),this.content=e;var t="".concat(W.resourcePath,"/icons/close.svg");this.element=$('\n\t\t\t<div class="potree_message">\n\t\t\t\t<span name="content_container" style="flex-grow: 1; padding: 5px"></span>\n\t\t\t\t<img name="close" src="'.concat(t,'" class="button-icon" style="width: 16px; height: 16px;">\n\t\t\t</div>')),this.elClose=this.element.find("img[name=close]"),this.elContainer=this.element.find("span[name=content_container]"),"string"==typeof e?this.elContainer.append($("<span>".concat(e,"</span>"))):this.elContainer.append(e)}return A(n,[{key:"setMessage",value:function(e){this.elContainer.empty(),"string"==typeof e?this.elContainer.append($("<span>".concat(e,"</span>"))):this.elContainer.append(e)}}]),n}()),Nu=function(){function t(e){te(this,t),this.potreeRenderer=e,this.threeRenderer=this.potreeRenderer.threeRenderer,this.target=new Zn(2048,2048,{minFilter:U,magFilter:U,format:St,type:bt}),this.target.depthTexture=new Ol,this.target.depthTexture.type=wt,this.threeRenderer.setClearColor(16711680,1);e=this.threeRenderer.getRenderTarget();this.threeRenderer.setRenderTarget(this.target),this.threeRenderer.clear(!0,!0,!0),this.threeRenderer.setRenderTarget(e)}return A(t,[{key:"setLight",value:function(e){var t=180*(this.light=e).angle/Math.PI,n=e.shadow.mapSize.width/e.shadow.mapSize.height,i=0===e.distance?1e4:e.distance,t=(this.camera=new ma(t,n,.1,i),this.camera.up.set(0,0,1),this.camera.position.copy(e.position),(new Re).subVectors(e.position,e.getWorldDirection(new Re)));this.camera.lookAt(t),this.camera.updateProjectionMatrix(),this.camera.updateMatrix(),this.camera.updateMatrixWorld(),this.camera.matrixWorldInverse.copy(this.camera.matrixWorld).invert()}},{key:"setSize",value:function(e,t){this.target.width===e&&this.target.height===t||this.target.dispose(),this.target.setSize(e,t)}},{key:"render",value:function(e,t){this.threeRenderer.setClearColor(0,1);var n=this.threeRenderer.getRenderTarget();this.threeRenderer.setRenderTarget(this.target),this.threeRenderer.clear(!0,!0,!0),this.potreeRenderer.render(e,this.camera,this.target,{}),this.threeRenderer.setRenderTarget(n)}}]),t}(),Lv=function(){y(r,zn);var i=C(r);function r(){function e(e){t.update(e)}var t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};te(this,r),(t=i.call(this)).position=n.pos,t.text=n.text||"",t.elem=$('<div class="hide"><a></a></div>'),n.className&&t.elem.addClass(n.className),t.elem.find("a").html(t.text),$("#potree_labels").append(t.elem),t.pos2d=new Re,t.dom=n.dom||viewer.renderArea,t.camera=n.camera||viewer.scene.getActiveCamera();return viewer.addEventListener("camera_changed",e),t.addEventListener("dispose",function(){viewer.removeEventListener("camera_changed",e),t.dispose()}),t}return A(r,[{key:"update",value:function(){var e;this.position&&!this.elem.hasClass("unvisible")&&((e=ie.getPos2d(this.position,this.camera,this.dom,viewer.mainViewport)).trueSide?(this.elem.css({left:e.pos.x+"px",top:e.pos.y+"px"}),this.elem.removeClass("hide"),this.pos2d=e.vector):this.elem.addClass("hide"))}},{key:"setVisible",value:function(e){e?(this.elem.removeClass("unvisible"),this.update()):this.elem.addClass("unvisible")}},{key:"setText",value:function(e){this.text=e||"",this.elem.find("a").html(this.text)}},{key:"setPos",value:function(e){this.position=e}},{key:"dispose",value:function(){this.elem.remove(),this.removeAllListeners()}}]),r}(),Rv=new Me(1,1,1),Fv={createLine:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=t.mat||(n=Object.assign({lineWidth:t.lineWidth||1,color:t.color||Rv},t),t.deshed&&(n.dashSize=t.dashSize||.1,n.gapSize=t.gapSize||.1),new Sp[t.deshed?"LineDashedMaterial":"LineBasicMaterial"](n)),n=new Bl(new j,n);return n.renderOrder=t.renderOrder||4,this.moveLine(n,e),n},moveLine:function(e,t){var n;0!=t.length&&(n=[],t.forEach(function(e){return n.push(e.x,e.y,e.z)}),e.geometry.setAttribute("position",new ne(n,3)),e.geometry.attributes.position.needsUpdate=!0,e.geometry.computeBoundingSphere(),e.material instanceof cc)&&(e.computeLineDistances(),e.geometry.verticesNeedUpdate=!0)},createFatLineMat:function(e){var t=!!Qf.EXT_DEPTH.isSupported(),e=$.extend({},{lineWidth:5,color:16777215,transparent:!0,depthWrite:!1,depthTest:!1,dashSize:.1,gapSize:.1},e,{dashed:(!e.dashWithDepth||t)&&!!e.dashed,dashWithDepth:!!e.dashWithDepth,useDepth:!!e.useDepth,supportExtDepth:t});return new Af(e)},createFatLine:function(e,t){var n=new kf,t=(n.setColors(t.color||[1,1,1]),t.material||this.createFatLineMat(t)),n=new Lf(n,t);return n.scale.set(1,1,1),n.renderOrder=2,this.moveFatLine(n,e),n},moveFatLine:function(e,t){var n=e.geometry,i=[];t.forEach(function(e){i.push.apply(i,J(e.toArray()))}),(n=n||(e.geometry=new kf)).attributes.instanceEnd&&n.attributes.instanceEnd.data.array.length!=i.length&&(n.dispose(),n=new kf,e.geometry=n),n.setPositions(i),null!=e.material.defines.USE_DASH&&(e.geometry.computeBoundingSphere(),e.computeLineDistances())},updateLine:function(e,t){e instanceof Lf?Fv.moveFatLine(e,t):Fv.moveLine(e,t)},createBoldLine:function(e,t){function n(){i.lastVector=r;var e=(t=new Re(0,-1,0)).clone().cross(r).normalize(),t=t.angleTo(r);i.quaternion.setFromAxisAngle(e,t)}var i=(t=t||{})&&t.cylinder,r=e[1].clone().sub(e[0]);if(t&&"init"==t.type){if((i=new Z).material=t.mat,0==r.length())return i;n()}if(0!=r.length()){if("update"!=t.type){var a=e[0].clone().add(e[1]).multiplyScalar(.5);if(i.position.copy(a),(!i.lastVector||"moveAndRotate"==t.type||i.lastVector&&0<r.angleTo(i.lastVector))&&n(),config.isEdit&&!objects.mainDesign.editing)return i}var a=e[0].distanceTo(e[1]),o=t&&t.standPos||objects.player.position,s=config.isMobile?20:40,l=e[0].distanceTo(o),u=e[1].distanceTo(o),c=ee.getFootPoint(o,e[0],e[1]);c=t.constantBold||"panorama"!=objects.player.mode?[new Le(.1,a/2),new Le(.1,-a/2)]:0<c.clone().sub(e[0]).dot(c.clone().sub(e[1]))?[new Le(l/s,a/2),new Le(u/s,-a/2)]:(t=c.distanceTo(o),o=c.distanceTo(e[0]),[new Le(l/s,a/2),new Le(t/s,a/2-o),new Le(u/s,-a/2)]),i.geometry&&i.geometry.dispose(),i.geometry=new Su(c,4),i.renderOrder=2}return i},updateBoldLine:function(e,t,n,i,r){this.createBoldLine(t,{type:n,cylinder:e,standPos:i,constantBold:r})}},Ov={getShape:function(e,t){var r=new sh;r.moveTo(e[0].x,e[0].y);for(var n=1,i=e.length;n<i;n++)r.lineTo(e[n].x,e[n].y);return t&&t.forEach(function(e){var t=new oh;t.moveTo(e[0].x,e[0].y);for(var n=1,i=e.length;n<i;n++)t.lineTo(e[n].x,e[n].y);r.holes.push(t)}),r},getShapeGeo:function(e,t){return new Gu(this.getShape(e,t))},getExtrudeGeo:function(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},e=this.getShape(e,t),t=(i.extrudePath&&(n=extrudePath.reduce(function(e,t,n,i){return 0==n?0:e+t.distanceTo(i[n-1])},0),i.extrudePath=new Jc(extrudePath,i.closed,"catmullrom",i.tension)),$.extend(i,{steps:null!=i.steps?i.steps:i.extrudePath?Math.round(n/.3):1,bevelEnabled:!1}));return new Cu(e,t)},getUnPosPlaneGeo:(Tp=new Uint16Array([0,1,2,0,2,3]),Id=new Float32Array([0,0,1,0,1,1,0,1]),(Sv=new j).setIndex(new Q(Tp,1)),Sv.setAttribute("uv",new Q(Id,2)),function(){return Sv}),getPlaneGeo:function(e,t,n,i){var r=this.getUnPosPlaneGeo().clone(),e=[e.x,e.y,e.z,t.x,t.y,t.z,n.x,n.y,n.z,i.x,i.y,i.z];return r.setAttribute("position",new ne(e,3)),r.computeVertexNormals(),r.computeBoundingSphere(),r},drawPlane:function(e,t,n,i,r){return new Z(this.getPlaneGeo(e,t,n,i),r)},movePlane:function(e,t,n,i,r){t=new Float32Array([t.x,t.y,t.z,n.x,n.y,n.z,i.x,i.y,i.z,r.x,r.y,r.z]);e.geometry.addAttribute("position",new Q(t,3)),e.geometry.computeBoundingSphere()},createGeometry:function(e,t,n,i){var r,a,o,s=new j,l=[];return e.forEach(function(e){return l.push(e.x,e.y,e.z)}),s.setAttribute("position",new ne(l,3)),t&&(r=[],t.forEach(function(e){return r.push.apply(r,J(e))}),s.setIndex(r)),n&&(a=[],n.forEach(function(e){return a.push(e.x,e.y)}),s.setAttribute("uv",new ne(a,2))),i&&(o=[],i.forEach(function(e){return o.push(e.x,e.y,e.z)}),s.setAttribute("normal",new ne(o,3))),s},updateGeometry:function(e,t,n,i,r){var a,o,s,l=[];return t.forEach(function(e){return l.push(e.x,e.y,e.z)}),e.setAttribute("position",new ne(l,3)),e.attributes.position.needsUpdate=!0,n&&(a=[],n.forEach(function(e){return a.push.apply(a,J(e))}),e.setIndex(a)),i&&(o=[],i.forEach(function(e){return o.push(e.x,e.y)}),e.setAttribute("uv",new ne(o,2))),r&&(s=[],r.forEach(function(e){return s.push(e.x,e.y,e.z)}),e.setAttribute("normal",new ne(s,3))),e.computeBoundingSphere(),e}},Nv=new Cd,Gv=function(){y(a,K);var r=C(a);function a(e,t){var n,i;for(i in te(this,a),(n=r.call(this)).type=e,n.maxMarkers=Number.MAX_SAFE_INTEGER,n.transformData(t),t)n[i]=t[i];return n.atPlane&&n.closed&&"2d"==n.dimension&&(n.areaPlane=n.createAreaPlane(),n.add(n.areaPlane)),n.points=[],n.markers=[],n.edges=[],n.center,n}return A(a,[{key:"initData",value:function(e){var n=this;if("merge"==Potree.settings.editType)if(this.dataset_points){if(this.dataset_points=this.dataset_points.map(function(e){return e&&(new Re).copy(e)}),e.points=this.dataset_points.map(function(e,t){return Potree.Utils.datasetPosTransform({fromDataset:!0,datasetId:n.points_datasets[t],position:e})}),e.points.some(function(e){return null==e}))return!1}else this.dataset_points=[];if(e.points){var t,i=q(e.points);try{for(i.s();!(t=i.n()).done;){var r=t.value,a=(new Re).copy(r);this.addMarker({point:a})}}catch(e){i.e(e)}finally{i.f()}return"merge"!=Potree.settings.editType&&(null!=this.datasetId?this.dataset_points&&(this.dataset_points=this.dataset_points.map(function(e){return e&&(new Re).copy(e)}),this.transformByPointcloud()):e.dataset_points&&e.dataset_points.some(function(e){return null!=e})&&(console.error("存在测量线的datasetId为空而dataset_points有值,请检查并删除:"+this.sid),console.log(this))),this.getFacePlane(),this.getPoint2dInfo(this.points),this.update({ifUpdateMarkers:!0}),this.setSelected(!1),this.markers.forEach(function(e){e.dispatchEvent("addHoverEvent")}),!0}}},{key:"addMarker",value:function(){var n=this,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=null==i.index?this.points.length:i.index;this.points=[].concat(J(this.points.slice(0,e)),[i.point],J(this.points.slice(e,this.points.length))),i.marker&&(this.add(i.marker),this.markers=[].concat(J(this.markers.slice(0,e)),[i.marker],J(this.markers.slice(e,this.markers.length))),this.updateMarker(i.marker,i.point),i.marker.addEventListener("drag",this.dragMarker.bind(this)),i.marker.addEventListener("drop",this.dropMarker.bind(this)),i.marker.addEventListener("addHoverEvent",function e(t){i.marker.addEventListener("mouseover",function(e){n.setMarkerSelected(e.object,"hover","single"),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),i.marker.addEventListener("mouseleave",function(e){n.setMarkerSelected(e.object,"unhover","single"),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})}),i.marker.removeEventListener("addHoverEvent",e)}),this.isNew||i.marker.dispatchEvent("addHoverEvent")),i.edge&&(this.add(i.edge),this.edges=[].concat(J(this.edges.slice(0,e)),[i.edge],J(this.edges.slice(e,this.edges.length))))}},{key:"dragMarker",value:function(e){var t,n,i;if(e.hoverViewport!=e.drag.dragViewport)viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_AtWrongPlace"});else{if(viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),!(n="mapViewport"==e.drag.dragViewport.name)||!this.unableDragAtMap)return e.drag.object.isDragging=!0,(t=e.intersect&&(e.intersect.orthoIntersect||e.intersect.location))?(-1!==(i=this.markers.indexOf(e.drag.object))&&(this.dragChange(t.clone(),i,n),this.points_datasets)&&(e.intersect.pointcloud?this.points_datasets[i]=e.intersect.pointcloud.dataset_id:e.intersect.object?this.points_datasets[i]=e.intersect.object.dataset_id:this.points_datasets[i]=null),this.editStateChange(!0),!0):void 0;e.drag.object=null}}},{key:"dragChange",value:function(e,t,n){var i=this,r=this.markers.length,a=this.points[t],a=(n&&e.setZ(a.z),e.clone());if(this.faceDirection&&2==this.maxMarkers&&2==r){var o=this.markers[0].position;u="horizontal"==this.faceDirection?a.clone().setZ(o.z):o.clone().setZ(a.z),Fv.updateLine(this.guideLine,[a,u]),a=u,this.guideLine.visible=!0}else if(1<r){var s,l=this.points.map(function(e){return e.clone()});if(l[t].copy(a),"horizontal"==this.faceDirection)2==r&&a.setZ(l[0].z),this.facePlane||(this.facePlane=(new $i).setFromNormalAndCoplanarPoint(new Re(0,0,1),this.points[0]));else if("vertical"==this.faceDirection)if(2==r)this.isRect&&(u=l[0].clone().sub(a),Math.sqrt(u.x*u.x+u.y*u.y)>Math.abs(u.z)?a.setZ(l[0].z):(a.setX(l[0].x),a.setY(l[0].y)));else{this.cannotConfirmNormal=!0;for(var u,c=this.isRect?1:r-2,h=0;h<c;h++){var d=l[h].clone(),p=l[h+1].clone(),d=d.sub(p);if(0!=d.x||0!=d.y){this.cannotConfirmNormal=!1;break}}this.facePlane&&!this.cannotConfirmNormal||(u=Uv(l.map(function(e){return new Le(e.x,e.y)}),2))&&(u=ee.getNormal2d({p1:u[0],p2:u[1]}),u=new Re(u.x,u.y,0),this.facePlane=(new $i).setFromNormalAndCoplanarPoint(u,this.points[0]))}if(2<r){if(!this.faceDirection&&this.showArea&&(3!=r&&!this.isRect||(this.cannotConfirmNormal=!0),this.facePlane&&!this.cannotConfirmNormal||(u=Uv(l,3))&&(this.facePlane=(s=new $i).setFromCoplanarPoints.apply(s,J(u)))),this.facePlane&&!this.cannotConfirmNormal)if(n){if(Nv.set(a.clone().setZ(1e5),a.clone().setZ(-1e5)),!(a=this.facePlane.intersectLine(Nv,new Re)))return}else a=this.facePlane.projectPoint(e,new Re);if(l[t].copy(a),this.isRect&&(o=l[(t-2+r)%r],s=l[(t-1+r)%r],o.equals(s)&&("vertical"==this.faceDirection?s.add(new Re(0,0,1e-4)):s.add(new Re(0,1e-4,0))),n=(u=ee.getFootPoint(a,o,s)).clone().sub(a),s=o.clone().sub(n),l[(t-1+r)%r].copy(u),l[(t+1)%r].copy(s),this.setPosition((t-1+r)%r,u),this.setPosition((t+1)%r,s)),this.getPoint2dInfo(l),this.atPlane&&this.closed&&!this.isRect&&this.intersectSelf(this.point2dInfo.points2d))return viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_isIntersectSelf"}),void(this.isIntersectSelf=!0);this.isIntersectSelf=!1,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_isIntersectSelf"})}1<r&&(this.faceDirection||3<r)&&this.guideLine&&(Fv.updateLine(this.guideLine,[e,a]),this.guideLine.visible=!0)}if(this.restrictArea){o=this.restrictArea.holes.concat(this.restrictArea.parentHoles).filter(function(e){return e!=i&&2<e.points.length}).map(function(e){return e.points});if(!ee.isPointInArea(this.restrictArea.points,o,a))return viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_AtWrongPlace"}),void(this.isAtWrongPlace=!0)}viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),this.isAtWrongPlace=!1,this.setPosition(t,a),this.update(),this.dispatchEvent({type:"dragChange",index:t})}},{key:"dropMarker",value:function(e){if(this.isNew&&e.pressDistance>Potree.config.clickMaxDragDis)return this.continueDrag(null,e);if(e.isTouch){if(e.hoverViewport!=viewer.mainViewport&&this.unableDragAtMap)return viewer.dispatchEvent({type:"reticule_forbit",v:!0}),this.continueDrag(null,e);viewer.dispatchEvent({type:"reticule_forbit",v:!1}),this.dragMarker(e)}var t;return e.button!=le.RIGHT&&(this.isIntersectSelf&&this.isNew||this.isAtWrongPlace&&this.isNew||!e.isAtDomElement&&this.isNew||e.hoverViewport!=viewer.mainViewport&&this.unableDragAtMap||this.isNew&&!Uv(this.points,this.points.length))?this.continueDrag(null,e):(-1!==(t=this.markers.indexOf(e.drag.object))&&(this.dispatchEvent({type:"marker_dropped",index:t}),2<this.markers.length&&this.facePlane&&(this.cannotConfirmNormal=!1),this.guideLine)&&(this.guideLine.visible=!1),this.setMarkerSelected(e.drag.object,"unhover","single"),this.editStateChange(!1),e.drag.endDragFun&&e.drag.endDragFun(e),!0)}},{key:"getFacePlane",value:function(){var e;!this.atPlane||this.points.length<3||(this.facePlane=(e=new $i).setFromCoplanarPoints.apply(e,J(this.points.slice(0,3))))}},{key:"getPoint2dInfo",value:function(e){var t,n;this.facePlane&&(t=e[0].clone(),n=ee.getQuaBetween2Vector(this.facePlane.normal,new Re(0,0,1),new Re(0,0,1)),e=e.map(function(e){return e.clone().applyQuaternion(n)}),this.point2dInfo={originPoint0:t,points2d:e,quaInverse:n.clone().invert()})}},{key:"setPosition",value:function(e,t){var n=this.points[e],t=(n.copy(t),this.markers[e]);this.updateMarker(t,n)}},{key:"updateMarker",value:function(e,t){e.position.copy(t),e.update()}},{key:"intersectSelf",value:function(e){for(var t=e.length,n=0;n<t;n++)for(var i=n+2;i<t;i++)if(!(Math.abs(i-t-n)<2)){var r=e[n],a=e[n+1],o=e[i],s=e[(i+1)%t];if(!(r.equals(a)||o.equals(s)||r.equals(o)||a.equals(o)||r.equals(s)||a.equals(s)))if(ee.isLineIntersect([r,a],[o,s],!1,.001))return!0}}},{key:"removeMarker",value:function(e){this.points.splice(e,1);var t=this.markers[e],n=(this.markers.splice(e,1),t.dispatchEvent({type:"dispose"}),e),i=this.edges[n];i&&(this.remove(i),this.edges.splice(n,1),i.dispatchEvent({type:"dispose"})),this.point2dInfo&&this.point2dInfo.points2d.splice(e,1),this.dispatchEvent({type:"removeMarker",index:e,marker:t})}},{key:"createAreaPlane",value:function(e){return new Z(new Hl,e)}},{key:"updateAreaPlane",value:function(){var e,t;this.point2dInfo&&(this.areaPlane.geometry.dispose(),2<this.points.length?(this.areaPlane.geometry=Ov.getShapeGeo(this.point2dInfo.points2d),t=ee.getCenterOfGravityPoint(this.point2dInfo.points2d),(e=this.point2dInfo.points2d[0].clone()).z=0,e.applyQuaternion(this.point2dInfo.quaInverse),e=this.point2dInfo.originPoint0.clone().sub(e),(t=new Re(t.x,t.y,0)).applyQuaternion(this.point2dInfo.quaInverse),this.areaPlane.quaternion.copy(this.point2dInfo.quaInverse),this.areaPlane.position.copy(e),t.add(e),this.center=t):this.areaPlane.geometry=new Hl)}},{key:"update",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(0!==this.points.length){for(var t=this.points.length-1,n=0;n<=t;n++){var i=t<n+1?0:n+1,r=0===n?t:n-1;if(!this.closed&&0==i)break;var a=this.points[n],i=this.points[i],r=(this.points[r],e.ifUpdateMarkers&&this.updateMarker(this.markers[n],a),this.edges[n]);r&&Fv.updateLine(r,[a,i])}this.areaPlane&&this.updateAreaPlane(),viewer.mapViewer&&viewer.mapViewer.dispatchEvent("content_changed")}}},{key:"dispose",value:function(){this.parent.remove(this),this.markers.concat(this.edges).forEach(function(e){return e.dispatchEvent({type:"dispose"})})}},{key:"reDraw",value:function(){for(var e=this.points.length-(0<arguments.length&&void 0!==arguments[0]?arguments[0]:0);0<e;)this.removeMarker(--e);this.point2dInfo=null,this.facePlane=null}},{key:"setMarkerSelected",value:function(){}},{key:"editStateChange",value:function(e){e||(viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_isIntersectSelf"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),viewer.dispatchEvent({type:"reticule_forbit",v:!1}),this.markers.forEach(function(e){return e.isDragging=!1}))}},{key:"transformData",value:function(e){function t(e,t){return null!=e?e:t}e.showDistances=null===e.showDistances||e.showDistances,e.showArea=t(e.showArea,!1),e.showAngles=t(e.showAngles,!1),e.showCoordinates=t(e.showCoordinates,!1),e.showHeight=t(e.showHeight,!1),e.showCircle=t(e.showCircle,!1),e.showAzimuth=t(e.showAzimuth,!1),e.showEdges=t(e.showEdges,!0),e.closed=t(e.closed,!1),e.maxMarkers=t(e.maxMarkers,1/0),e.direction=e.direction,e.type=e.type,e.showGuideLine=t(e.showGuideLine,!1),e.isRect=t(e.isRect,!1)}},{key:"setSelected",value:function(){}},{key:"continueDrag",value:function(e,t){var n=this,i=e||t.drag.object;return i.isDragging=!0,setTimeout(function(){n.parent&&i.isDragging&&viewer.inputHandler.startDragging(i,{endDragFun:t.drag.endDragFun,notPressMouse:t.drag.notPressMouse,dragViewport:t.drag.dragViewport})},1)}}]),a}();function Uv(e,t){for(var n=[],i=0;i<e.length;i++){var r=e[i];if(!n.find(function(e){return e.equals(r)})&&(n.push(r),n.length==t))break}if(n.length==t)return n}var zv,Hv,Qv=new Nc,t=new Me(Gm.measure.default.color),Vv=new Me(Gm.measure.highlight.color),jv=new Me(Gm.measure.color),ad=new Me(Gm.measure.textColor),Wv={clipDistance:4,occlusionDistance:1},Jv={clipDistance:6,occlusionDistance:2},qv={minSize:25,maxSize:65,nearBound:.2,farBound:4},Xv={width2d:200},Yv={backgroundColor:{r:255*t.r,g:255*t.g,b:255*t.b,a:Gm.measure.default.opacity},textColor:{r:255*ad.r,g:255*ad.g,b:255*ad.b,a:1},fontsize:16,useDepth:!0,renderOrder:5,pickOrder:5},Kv={backgroundColor:{r:255,g:255,b:255,a:1},textColor:{r:0,g:0,b:0,a:1},fontsize:14,renderOrder:4,pickOrder:4},Vu=Be.degToRad(5),Zv=Vu,$v=Math.PI/2-Vu,eg=function(){y(p,Gv);var n=C(p);function p(e){var t;return te(this,p),e.dimension="2d",(t=n.call(this,"measure",e)).constructor.counter=void 0===t.constructor.counter?0:t.constructor.counter+1,t.name=t.measureType+t.constructor.counter,t.markerLabels=[],t.edgeLabels=[],t.angleLabels=[],t.coordinateLabels=[],t.area={value:0,string:""},t.showArea&&(t.areaLabel=t.createAreaLabel(),t.add(t.areaLabel)),(t.atPlane||t.faceDirection)&&t.createGuideLine(),"Distance"==t.measureType&&t.createHorVerGuideLine(),t.selectStates={},t.setUnitSystem(e.unit||viewer.unitConvert.UnitService.defaultSystem),viewer.setObjectLayers(G(t),"measure"),t.initData(e),t.points_datasets||(t.points_datasets=[]),t.addEventListener("marker_dropped",function(e){t.updateDatasetBelong(e.index)}),t.addEventListener("isVisible",function(){viewer.mapViewer&&viewer.mapViewer.dispatchEvent({type:"content_changed"})}),t}return A(p,[{key:"initData",value:function(e){k(_(p.prototype),"initData",this).call(this,e)?this.edges.forEach(function(e){e.dispatchEvent("addHoverEvent")}):this.failBuilded=!0}},{key:"updateDatasetBelong",value:function(e){var t=this;if("merge"==Potree.settings.editType)this.dataset_points[e]=Potree.Utils.datasetPosTransform({toDataset:!0,datasetId:this.points_datasets[e],position:this.points[e].clone()});else{this.datasetId;var n,i={id:null,count:0},r={};for(n in this.points_datasets.forEach(function(e){null!=e&&(r[e]?r[e]++:r[e]=1)}),r)r[n]>i.count&&(i={id:n,count:r[n]});this.datasetId=0<i.count?i.id:null,null==this.datasetId?this.dataset_points=null:this.dataset_points=this.points.map(function(e){return Potree.Utils.datasetPosTransform({toDataset:!0,datasetId:t.datasetId,position:e.clone()})})}}},{key:"transformByPointcloud",value:function(){var t=this;null!=this.datasetId&&(this.points=this.dataset_points.map(function(e){return Potree.Utils.datasetPosTransform({fromDataset:!0,datasetId:t.datasetId,position:e.clone()})}),this.getPoint2dInfo(this.points),this.update({ifUpdateMarkers:!0}),this.setSelected(!1))}},{key:"update",value:function(){var a=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(k(_(p.prototype),"update",this).call(this,e),this.showCoordinates&&0<this.points.length)e=this.points[0],this.markers[0].position.copy(e),r=this.coordinateLabels[0],i=viewer.transform.lonlatToLocal.inverse(e.toArray()),n=viewer.transform.lonlatTo4550.forward(i),i=[e.toArray(),i,n].map(function(e){return e.map(function(e){return ie.addCommas(e.toFixed(10))}).join(", ")}).join("<br>"),r.setText(i),r.setPos(e),r.setVisible(!0);else{for(var t,n,i,r,o=function(e,t,n,i){var r=(new Re).addVectors(t,n).multiplyScalar(.5),r=(e.setPos(r),i=null==i?t.distanceTo(n):i,viewer.unitConvert.convert(i,"distance",Potree.settings.precision,a.unitSystem,.1,!0));return e.setText(r),i},s=this.points.length-1,l=0;l<=s;l++){var u,c,h=this.points[l],d=this.points[s<l+1?0:l+1];this.points[0===l?s:l-1];this.showDistances&&(u=this.edgeLabels[l],c=h.distanceTo(d),u.shouldVisi=(l<s||this.isRect||this.closed&&!this.isNew)&&0<c,u.setVisible(u.shouldVisi),u.visible)&&o(u,h,d,c)}"Distance"==this.measureType&&1<this.points.length&&(n=this.points[0].z>this.points[1].z?(t=this.points[0],this.points[1]):(t=this.points[1],this.points[0]),i=new Re(t.x,t.y,n.z),e=t.distanceTo(i)/n.distanceTo(i),r=Math.atan(e),this.shouldShowHorVerGuide=Zv<r&&r<$v,Fv.updateLine(this.verGuideEdge,[t,i]),Fv.updateLine(this.horGuideEdge,[n,i]),o(this.verEdgeLabel,t,i),o(this.horEdgeLabel,n,i),this.verGuideEdge.visible=this.horGuideEdge.visible=this.shouldShowHorVerGuide,this.verEdgeLabel.visible=this.horEdgeLabel.visible=this.shouldShowHorVerGuide),this.showArea&&this.point2dInfo&&(e=Math.abs(ee.getArea(this.point2dInfo.points2d)),r=viewer.unitConvert.convert(e,"area",Potree.settings.precision,this.unitSystem),this.area={value:e,string:r},this.areaLabel.setPos(this.center),this.areaLabel.setText(r),this.areaLabel.setVisible(!0))}}},{key:"addMarker",value:function(){var t,n=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=new Jm({mat:this.getMarkerMaterial("default"),sizeInfo:qv,name:"measure_point"}),e=(viewer.setObjectLayers(i,"measure"),i.pickOrder=i.renderOrder=3,i.markerSelectStates={},i.addEventListener("startDragging",function(e){"MainView"==e.drag.dragViewport.name&&viewer.inputHandler.dispatchEvent({type:"isMeasuring",v:!0,cause:"startDragging"})}),i.addEventListener("drop",function(e){viewer.inputHandler.dispatchEvent({type:"isMeasuring",v:!1,cause:"stopDragging"})}),(t=Fv.createFatLine([],{material:this.getLineMat("edgeDefault")})).pickOrder=0,viewer.setObjectLayers(t,"measure"),t.addEventListener("addHoverEvent",function e(){t.addEventListener("mouseover",function(e){n.setSelected(!0,"edge")}),t.addEventListener("mouseleave",function(e){n.setSelected(!1,"edge")}),t.removeEventListener("addHoverEvent",e)}),k(_(p.prototype),"addMarker",this).call(this,{point:e.point,marker:i,edge:t}),this.showEdges&&(e=this.createEdgeLabel("edgeLabel",!this.closed),this.edgeLabels.push(e)),this.showCoordinates&&((e=new Lv({className:"measure_pointPos",camera:viewer.scene.getActiveCamera()})).setVisible(!1),this.coordinateLabels.push(e)),{type:"marker_added",measurement:this,marker:i});return this.dispatchEvent(e),this.update(),i}},{key:"editStateChange",value:function(e){var t=this;k(_(p.prototype),"editStateChange",this).call(this,e),e?this.isEditing||(this.dispatchEvent({type:"editStateChange",state:!0}),this.setEdgesDisplay(!0),clearTimeout(this.editStateTimer)):this.editStateTimer=setTimeout(function(){t.isEditing||(t.dispatchEvent({type:"editStateChange",state:!1}),t.setEdgesDisplay(!1))},100),this.isEditing=e}},{key:"setMarkerSelected",value:function(e,t,n){e.markerSelectStates[n]=t;var i,r=!1;for(i in e.markerSelectStates)if("hover"==e.markerSelectStates[i]){r=!0;break}e.material=r?this.getMarkerMaterial("select"):this.getMarkerMaterial("default"),e.selected=r,viewer.mapViewer&&viewer.mapViewer.dispatchEvent("content_changed")}},{key:"setEdgesDisplay",value:function(t,e){this.closed&&this.edgeLabels.forEach(function(e){return e.setVisible(!(!t||!e.shouldVisi))}),e||"Distance"!=this.measureType||(this.horEdgeLabel.visible=this.verEdgeLabel.visible=this.horGuideEdge.visible=this.verGuideEdge.visible=!(!t||!this.shouldShowHorVerGuide))}},{key:"setSelected",value:function(e,t){var n,i=this,r=(t&&(this.selectStates[t]=e),!1);for(n in this.selectStates)if(this.selectStates[n]){r=!0;break}r?(this.markers.forEach(function(e){return i.setMarkerSelected(e,"hover","selectAll")}),this.edges.forEach(function(e){return e.material=i.getLineMat("edgeSelect")}),this.areaPlane&&(this.areaPlane.material=Hv.selected),this.setEdgesDisplay(!0,"screenshot"==t),this.areaLabel&&tg(this.areaLabel,!0),this.closed||this.edgeLabels.forEach(function(e){return tg(e,!0)})):(this.markers.forEach(function(e){return i.setMarkerSelected(e,"unhover","selectAll")}),this.edges.forEach(function(e){return e.material=i.getLineMat("edgeDefault")}),this.areaPlane&&(this.areaPlane.material=Hv.default),this.setEdgesDisplay(!1,"screenshot"==t),this.areaLabel&&tg(this.areaLabel,!1),this.closed||this.edgeLabels.forEach(function(e){return tg(e,!1)})),this.selected=r,viewer.mapViewer&&viewer.mapViewer.dispatchEvent("content_changed"),"byList"!=t&&this.dispatchEvent({type:"highlight",state:this.selected})}},{key:"removeMarker",value:function(e){k(_(p.prototype),"removeMarker",this).call(this,e),this.points_datasets.splice(e,1),this.dataset_points&&this.dataset_points.splice(e,1),this.coordinateLabels.splice(e,1);this.edgeLabels[e]&&(this.edgeLabels[e].dispose(),this.edgeLabels.splice(e,1)),this.update(),this.dispatchEvent({type:"marker_removed",measurement:this})}},{key:"setPosition",value:function(e,t){k(_(p.prototype),"setPosition",this).call(this,e,t);e={type:"marker_moved",measure:this,index:e,position:t.clone()};this.dispatchEvent(e)}},{key:"dispose",value:function(){var e=this.edgeLabels.concat(this.coordinateLabels);this.areaLabel&&e.push(this.areaLabel),e.forEach(function(e){return e.dispatchEvent({type:"dispose"})}),k(_(p.prototype),"dispose",this).call(this)}},{key:"getTotalDistance",value:function(){if(0===this.points.length)return 0;for(var e,t=0,n=1;n<this.points.length;n++){var i=this.points[n-1],r=this.points[n];t+=i.distanceTo(r)}return this.closed&&1<this.points.length&&(e=this.points[0],t+=this.points[this.points.length-1].distanceTo(e)),t}},{key:"getAngleBetweenLines",value:function(e,t,n){t=(new Re).subVectors(t,e),n=(new Re).subVectors(n,e);return 0===Math.sqrt(t.lengthSq()*n.lengthSq())?0:t.angleTo(n)}},{key:"getAngle",value:function(e){var t,n;return this.points.length<3||e>=this.points.length?0:(t=0===e?this.points[this.points.length-1]:this.points[e-1],n=this.points[e],e=this.points[(e+1)%this.points.length],this.getAngleBetweenLines(n,t,e))}},{key:"getCenter",value:function(){var e;return this.closed?this.center.clone():((e=this.points.reduce(function(e,t){return e.add(t)},new Re)).multiplyScalar(1/this.points.length),e)}},{key:"createGuideLine",value:function(){var e=Fv.createFatLine([],{material:this.getLineMat("guide")});e.visible=!1,this.guideLine=e,this.add(e)}},{key:"createHorVerGuideLine",value:function(){var e=Fv.createFatLine([],{material:this.getLineMat("guide")}),e=(e.visible=!1,(this.verGuideEdge=e).name="verGuideEdge",Fv.createFatLine([],{material:this.getLineMat("guide")}));e.visible=!1,e.name="horGuideEdge",this.horGuideEdge=e,this.add(this.verGuideEdge),this.add(this.horGuideEdge),this.verEdgeLabel=this.createEdgeLabel("verGuideEdge"),this.horEdgeLabel=this.createEdgeLabel("horGuideEdge")}},{key:"createEdgeLabel",value:function(e,t){var n=this,e=new qm($.extend(t?Yv:Kv,{sizeInfo:Xv,name:e||"edgeLabel"}));return t&&(e.addEventListener("mouseover",function(){n.setSelected(!0,"edgeLabel")}),e.addEventListener("mouseleave",function(){n.setSelected(!1,"edgeLabel")}),e.addEventListener("click",function(){n.isNew||viewer.focusOnObject(n,"measure")})),e.visible=!1,e.sprite.material.depthTestWhenPick=!0,viewer.setObjectLayers(e,"measure"),this.add(e),e}},{key:"createAreaLabel",value:function(){var e=this,t=new qm($.extend(Yv,{sizeInfo:Xv,name:"areaLabel_"}));return t.addEventListener("mouseover",function(){e.setSelected(!0,"areaLabel")}),t.addEventListener("mouseleave",function(){e.setSelected(!1,"areaLabel")}),t.addEventListener("click",function(){e.isNew||viewer.focusOnObject(e,"measure")}),viewer.setObjectLayers(t,"measure"),t.visible=!1,t}},{key:"getMarkerMaterial",value:function(e){return zv||(zv={default:new jm($.extend({},Wv,{transparent:!0,opacity:1,map:Qv.load(Potree.resourcePath+"/textures/pic_point_s32.png"),useDepth:!0})),select:new L({transparent:!0,opacity:1,depthTest:!1,map:Qv.load(Potree.resourcePath+"/textures/pic_point32.png")})},p.markerMats=zv),zv[e]}},{key:"getLineMat",value:function(e){return(p.lineMats=p.lineMats?p.lineMats:{edgeDefault:Fv.createFatLineMat({color:Gm.measure.default.color,lineWidth:Gm.measure.lineWidth,useDepth:!0,dashWithDepth:!0,dashed:!0,dashSize:.04,gapSize:.04,transparent:!0,opacity:Gm.measure.default.opacity,depthTestWhenPick:!0}),edgeSelect:Fv.createFatLineMat({color:Gm.measure.highlight.color,dashSize:.5,gapSize:.2,lineWidth:Gm.measure.lineWidth,transparent:!0,opacity:Gm.measure.highlight.opacity}),guide:Fv.createFatLineMat({color:Gm.measure.guide.color,dashSize:.1,gapSize:.02,dashed:!0,lineWidth:Gm.measure.lineWidth})})[e]}},{key:"createAreaPlane",value:function(){return Hv||(Hv={default:new jm($.extend({},Jv,{color:jv,side:ve,opacity:.2,transparent:!0,useDepth:!0})),selected:new L({color:jv,side:ve,opacity:.3,transparent:!0})},p.planeMats=Hv),k(_(p.prototype),"createAreaPlane",this).call(this,Hv.default)}},{key:"raycast",value:function(e,t){for(var n=0;n<this.points.length;n++)this.markers[n].raycast(e,t);for(var i=0;i<t.length;i++){var r=t[i];r.distance=e.ray.origin.distanceTo(r.point)}t.sort(function(e,t){return e.distance-t.distance})}},{key:"transformData",value:function(e){"Point"==e.measureType?(e.showCoordinates=!0,e.closed=!0,e.maxMarkers=1,e.minMarkers=1):"Distance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.maxMarkers=2,e.minMarkers=2):"MulDistance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.minMarkers=2):"Ver MulDistance"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.minMarkers=2,e.faceDirection="vertical",e.unableDragAtMap=!0):"Hor MulDistance"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.minMarkers=2,e.faceDirection="horizontal"):"Ver Distance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.maxMarkers=2,e.minMarkers=2,e.faceDirection="vertical",e.unableDragAtMap=!0):"Hor Distance"==e.measureType?(e.showDistances=!0,e.showEdges=!0,e.maxMarkers=2,e.minMarkers=2,e.faceDirection="horizontal"):"Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=3):"Hor Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=3,e.faceDirection="horizontal"):"Ver Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=3,e.faceDirection="vertical",e.unableDragAtMap=!0):"Rect Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=4,e.maxMarkers=4):"Hor Rect Area"==e.measureType?(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=4,e.maxMarkers=4,e.isRect=!0,e.faceDirection="horizontal"):"Ver Rect Area"==e.measureType&&(e.showDistances=!0,e.atPlane=!0,e.showEdges=!0,e.closed=!0,e.minMarkers=4,e.maxMarkers=4,e.isRect=!0,e.faceDirection="vertical",e.unableDragAtMap=!0),e.atPlane&&e.closed&&(e.showArea=!0),k(_(p.prototype),"transformData",this).call(this,e)}},{key:"setUnitSystem",value:function(e){e!=this.unitSystem&&(this.unitSystem=e,this.update())}},{key:"reDraw",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;k(_(p.prototype),"reDraw",this).call(this,e),"Distance"==this.measureType&&(this.shouldShowHorVerGuide=!1,this.setEdgesDisplay(!1)),this.showArea&&(this.area={value:0},this.areaLabel)&&this.areaLabel.setVisible(!1),viewer.inputHandler.dispatchEvent({type:"isMeasuring",v:!0,cause:"reDraw"})}}]),p}();function tg(e,t){t?(e.backgroundColor={r:255*Vv.r,g:255*Vv.g,b:255*Vv.b,a:Gm.measure.highlight.opacity},e.backgroundColor.a=Gm.measure.highlight.opacity,e.sprite.material.useDepth=!1):(e.backgroundColor=Yv.backgroundColor,e.backgroundColor.a=Gm.measure.default.opacity,e.sprite.material.useDepth=!0),e.updateTexture()}var ng,ig=function(){y(o,zn);var a=C(o);function o(t){te(this,o),(n=a.call(this)).viewer=t,n.renderer=t.renderer,n.viewer.addEventListener("start_inserting_measurement",function(e){n.viewer.dispatchEvent({type:"cancel_insertions"})}),n.showLabels=!0,n.scene=new Ps,n.scene.name="scene_measurement",n.viewer.inputHandler.registerInteractiveScene(n.scene),n.onRemove=function(e){e.measurement.dispose()},n.onAdd=function(e){n.scene.add(e.measurement)};var n,e,i=q(t.scene.measurements);try{for(i.s();!(e=i.n()).done;){var r=e.value;n.onAdd({measurement:r})}}catch(e){i.e(e)}finally{i.f()}return t.addEventListener("camera_changed",function(e){e.viewport==t.mainViewport&&n.update()}),t.addEventListener("render.pass.perspective_overlay",n.render.bind(G(n))),t.addEventListener("scene_changed",n.onSceneChange.bind(G(n))),t.scene.addEventListener("measurement_added",n.onAdd),t.scene.addEventListener("measurement_removed",n.onRemove),t.addEventListener("resize",n.setSize.bind(G(n))),n}return A(o,[{key:"onSceneChange",value:function(e){e.oldScene&&(e.oldScene.removeEventListener("measurement_added",this.onAdd),e.oldScene.removeEventListener("measurement_removed",this.onRemove)),e.scene.addEventListener("measurement_added",this.onAdd),e.scene.addEventListener("measurement_removed",this.onRemove)}},{key:"createMeasureFromData",value:function(e){e=new eg(e);if(!e.failBuilded)return viewer.scene.addMeasurement(e),e.guideLine&&(e.guideLine.visible=!1),e}},{key:"update",value:function(){}},{key:"setSize",value:function(e){}},{key:"updateLabelZIndex",value:function(t){t.forEach(function(n,e){n.base=t[e-1]?t[e-1].base+t[e-1].labels.length:0,n.labels.sort(function(e,t){return t.pos2d.z-e.pos2d.z}).forEach(function(e,t){$(e.elem).css("z-index",n.base+t)})})}},{key:"editStateChange",value:function(e){e.state||viewer.scene.measurements.some(function(e){return e.isEditing})?viewer.dispatchEvent({type:"measureMovePoint"}):viewer.dispatchEvent({type:"endMeasureMove"})}},{key:"startInsertion",value:function(){var i,r=this,a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=1<arguments.length?arguments[1]:void 0,s=(this.viewer.renderer.domElement,new eg(a)),l=(this.scene.add(s),s.isNew=!0,this.viewer.dispatchEvent({type:"start_inserting_measurement",measure:s}),s.addEventListener("editStateChange",this.editStateChange.bind(this)),s.editStateChange(!0),function(e){var t,n=s.points.length;e.button==le.LEFT||e.isTouch?n>=s.maxMarkers?u({finish:!0}):(t=s.addMarker({point:s.points[n-1].clone()}),a.isRect&&3==s.markers.length?s.addMarker({point:s.points[0].clone()}):(s.markers[n].visible=!1,s.edges[n].visible=!1),s.edges[n-1].visible=!0,s.markers[n-1].visible=!0,s.editStateChange(!0),t.isDragging=!0,s.continueDrag(t,e)):e.button===le.RIGHT&&(e.pressDistance<Potree.config.clickMaxDragDis?u(e):s.continueDrag(null,e))}),u=function e(){var t,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};s.isNew&&(null!=a.minMarkers&&!n.finish&&s.markers.length<=a.minMarkers?0<s.markers.length&&(s.markers[0].removeEventListener("mousedown",e),s.reDraw(),r.viewer.addEventListener("global_click",p,10),s.editStateChange(!0)):(s.markers.length>a.minMarkers&&(s.removeMarker(s.points.length-1),s.markers[0].removeEventListener("mouseover",h),s.markers[0].removeEventListener("mouseleave",d),s.markers[0].removeEventListener("click",c),n.byClickMarker)&&s.markers.length>a.minMarkers&&s.removeMarker(s.points.length-1),s.isNew=!1,(t=s.points.length)&&(s.markers[t-1].visible=!0,s.edges[t-1].visible=!!s.closed,s.markers.forEach(function(e){e.dispatchEvent("addHoverEvent")}),s.edges.forEach(function(e){e.dispatchEvent("addHoverEvent")}),s.update()),clearTimeout(i),r.viewer.removeEventListener("cancel_insertions",c),r.viewer.removeEventListener("global_click",p),r.viewer.removeEventListener("global_mousemove",f),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"}),viewer.inputHandler.dispatchEvent({type:"isMeasuring",v:!1,cause:"stopInsertion"}),n.remove||o&&o()))},c=(s.addEventListener("finish",u),function(e){e.measure&&e.measure!=s||(e.remove&&viewer.scene.removeMeasurement(s),s.editStateChange(!1),s.cannotConfirmNormal=!1,s.guideLine&&(s.guideLine.visible=!1),u({finish:!0,remove:e.remove,byClickMarker:"click"==e.type}),r.viewer.inputHandler.drag&&(r.viewer.inputHandler.drag.object=null))}),h=(this.viewer.addEventListener("cancel_insertions",c),function(e){s.setMarkerSelected(e.object,"hover","single")}),d=function(e){s.setMarkerSelected(e.object,"unhover","single")},p=function e(t){var n;if(!f(t)&&(!t.clickElement&&t.button!==le.RIGHT))return(n=t.intersect&&(t.intersect.orthoIntersect||t.intersect.location))?("mapViewport"==t.drag.dragViewport.name&&(n=n.clone().setZ(viewer.mainViewport.camera.position.z)),(n=s.addMarker({point:n})).isDragging=!0,r.viewer.inputHandler.startDragging(n,{endDragFun:l,notPressMouse:!0}),t.drag=r.viewer.inputHandler.drag,t.drag.endDragFun=l,t.drag.notPressMouse=!0,s.dragMarker(t),s.dropMarker(t),1<s.maxMarkers&&(s.markers[1].visible=!1,s.edges[1].visible=!1),s.closed&&!s.isRect&&(s.markers[0].addEventListener("mouseover",h),s.markers[0].addEventListener("mouseleave",d),s.markers[0].addEventListener("click",c)),r.viewer.removeEventListener("global_click",e),t.consume&&t.consume(),{stopContinue:!0}):s.dispatchEvent("intersectNoPointcloud")},f=(viewer.inputHandler.dispatchEvent({type:"isMeasuring",v:!0,cause:"startInsertion"}),this.viewer.addEventListener("global_click",p,10),function(e){if(s.unableDragAtMap&&"mapViewport"==e.hoverViewport.name)return e.isTouch?viewer.dispatchEvent({type:"reticule_forbit",v:!0}):viewer.dispatchEvent({type:"CursorChange",action:"add",name:"polygon_AtWrongPlace"}),!0;e.isTouch?viewer.dispatchEvent({type:"reticule_forbit",v:!1}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"polygon_AtWrongPlace"})});return s.unableDragAtMap&&this.viewer.addEventListener("global_mousemove",f),this.viewer.scene.addMeasurement(s),s}},{key:"render",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};0!=this.scene.children.length&&(viewer.setCameraLayers(e.camera,["measure"]),(e.screenshot&&this.viewer.ssaaRenderPass.enabled?(this.viewer.ssaaRenderPass.sampleLevel=4,this.viewer.composer):this.viewer.renderer).render(this.scene,e.camera))}}]),o}(),Wu=function(){y(o,Yf);var a=C(o);function o(e){te(this,o),(t=a.call(this)).viewer=e,t.renderer=e.renderer,t.addEventListener("start_inserting_profile",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t.scene=new Ps,t.scene.name="scene_profile",t.light=new fh(16777215,1),t.scene.add(t.light),t.viewer.inputHandler.registerInteractiveScene(t.scene),t.onRemove=function(e){return t.scene.remove(e.profile)},t.onAdd=function(e){return t.scene.add(e.profile)};var t,n,i=q(e.scene.profiles);try{for(i.s();!(n=i.n()).done;){var r=n.value;t.onAdd({profile:r})}}catch(e){i.e(e)}finally{i.f()}return e.addEventListener("update",t.update.bind(G(t))),e.addEventListener("render.pass.perspective_overlay",t.render.bind(G(t))),e.addEventListener("scene_changed",t.onSceneChange.bind(G(t))),e.scene.addEventListener("profile_added",t.onAdd),e.scene.addEventListener("profile_removed",t.onRemove),t}return A(o,[{key:"onSceneChange",value:function(e){e.oldScene&&(e.oldScene.removeEventListeners("profile_added",this.onAdd),e.oldScene.removeEventListeners("profile_removed",this.onRemove)),e.scene.addEventListener("profile_added",this.onAdd),e.scene.addEventListener("profile_removed",this.onRemove)}},{key:"startInsertion",value:function(){function t(e){var t,n,i;e.button===le.LEFT?(a.points.length<=1&&(t=(i=r.viewer.scene.getActiveCamera()).position.distanceTo(a.points[0]),n=r.viewer.renderer.getSize(new Le),i=ie.projectedRadius(1,i,t,n.width,n.height),a.setWidth(10/i)),a.addMarker(a.points[a.points.length-1].clone()),r.viewer.inputHandler.startDragging(a.spheres[a.spheres.length-1])):e.button===le.RIGHT&&o.callback()}var r=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=this.viewer.renderer.domElement,a=new ff,o=(a.name=e.name||"Profile",this.dispatchEvent({type:"start_inserting_profile",profile:a}),this.scene.add(a),{callback:null});return o.callback=function(e){a.removeMarker(a.points.length-1),n.removeEventListener("mouseup",t,!1),r.viewer.removeEventListener("cancel_insertions",o.callback)},this.viewer.addEventListener("cancel_insertions",o.callback),n.addEventListener("mouseup",t,!1),a.addMarker(new Re(0,0,0)),this.viewer.inputHandler.startDragging(a.spheres[a.spheres.length-1]),this.viewer.scene.addProfile(a),a}},{key:"update",value:function(){var e,t=this.viewer.scene.getActiveCamera(),n=this.viewer.scene.profiles,i=this.viewer.renderer.getSize(new Le),r=i.width,a=i.height,o=(this.light.position.copy(t.position),q(n));try{for(o.s();!(e=o.n()).done;){var s,l=q(e.value.spheres);try{for(l.s();!(s=l.n()).done;){var u=s.value,c=t.position.distanceTo(u.getWorldPosition(new Re)),h=15/ie.projectedRadius(1,t,c,r,a);u.scale.set(h,h,h)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){o.e(e)}finally{o.f()}}},{key:"render",value:function(){this.viewer.renderer.render(this.scene,this.viewer.scene.getActiveCamera())}}]),o}(),rg=function(){y(i,Yf);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).viewer=e,t.scene=new Ps,e.addEventListener("update",t.update.bind(G(t))),e.addEventListener("render.pass.perspective_overlay",t.render.bind(G(t))),e.addEventListener("scene_changed",t.onSceneChange.bind(G(t))),t}return A(i,[{key:"onSceneChange",value:function(e){console.log("scene changed")}},{key:"startInsertion",value:function(){function g(e){A.importance=0,$(w).remove(),A.viewer.inputHandler.deselectAll(),A.viewer.inputHandler.toggleSelection(y);var t,n,i,r=e.viewer.scene.getActiveCamera(),a=e.viewer.renderer.getSize(new Le),e=(new Le).addVectors(e.drag.end,e.drag.start).multiplyScalar(.5),o=ie.mouseToRay(e,r,a.width,a.height),s=(new Cd(o.origin,(new Re).addVectors(o.origin,o.direction)),A.removeEventListener("drag",b),A.removeEventListener("drop",g),[]),l=[],u=q(A.viewer.scene.pointclouds);try{for(u.s();!(t=u.n()).done;){var c,h,d,p,f,m,v=t.value;v.visible&&((c=r.clone()).left=-y.scale.x/2,c.right=+y.scale.x/2,c.top=+y.scale.y/2,c.bottom=-y.scale.y/2,c.near=-y.scale.z/2,c.far=+y.scale.z/2,c.rotation.copy(y.rotation),c.position.copy(y.position),c.updateMatrix(),c.updateMatrixWorld(),c.updateProjectionMatrix(),c.matrixWorldInverse.copy(c.matrixWorld).invert(),h=new Bi(c.getWorldPosition(new Re),c.getWorldDirection(new Re)),d=new Bi(h.origin.clone().add(h.direction.clone().multiplyScalar(y.scale.z)),h.direction.clone().multiplyScalar(-1)),p={width:8,height:8,pickWindowSize:8,all:!0,pickClipped:!0,pointSizeType:cm.FIXED,pointSize:1},f=v.pick(viewer,c,h,p),c.rotateX(Math.PI),c.updateMatrix(),c.updateMatrixWorld(),c.updateProjectionMatrix(),c.matrixWorldInverse.copy(c.matrixWorld).invert(),m=v.pick(viewer,c,d,p),s.push.apply(s,J(f)),l.push.apply(l,J(m)))}}catch(e){u.e(e)}finally{u.f()}0<s.length&&0<l.length&&(n=new Cd(o.origin,(new Re).addVectors(o.origin,o.direction)),e=s.map(function(e){return n.closestPointToPoint(e.position,!1,new Re)}).sort(function(e,t){return o.origin.distanceTo(e)-o.origin.distanceTo(t)})[0],a=l.map(function(e){return n.closestPointToPoint(e.position,!1,new Re)}).sort(function(e,t){return o.origin.distanceTo(t)-o.origin.distanceTo(e)})[0],i=e.distanceTo(a),e=(new Re).addVectors(e,a).multiplyScalar(.5),y.scale.z=1.1*i,y.position.copy(e)),y.clip=!0}var A=this,e=this.viewer.renderer.domElement,y=new df,w=(y.position.set(12345,12345,12345),y.showVolumeLabel=!1,y.visible=!1,y.update(),this.viewer.scene.addVolume(y),this.importance=10,$('<div style="position: absolute; border: 2px solid white; pointer-events: none; border-style:dashed"></div>')),b=($(e.parentElement).append(w),w.css("right","10px"),w.css("bottom","10px"),function(e){y.visible=!0;var t=e.drag.start,n=e.drag.end,i=new bd,t=(i.expandByPoint(t),i.expandByPoint(n),w.css("left","".concat(i.min.x,"px")),w.css("top","".concat(i.min.y,"px")),w.css("width","".concat(i.max.x-i.min.x,"px")),w.css("height","".concat(i.max.y-i.min.y,"px")),e.viewer.scene.getActiveCamera()),n=e.viewer.renderer.getSize(new Le),i=new Le(t.right-t.left,t.top-t.bottom),r=(new Le).addVectors(e.drag.end,e.drag.start).multiplyScalar(.5),r=ie.mouseToRay(r,t,n.width,n.height),a=(new Le).subVectors(e.drag.end,e.drag.start);a.divide(n).multiply(i),y.position.copy(r.origin),y.up.copy(t.up),y.rotation.copy(t.rotation),y.scale.set(a.x,a.y,1e5),e.consume()});return this.addEventListener("drag",b),this.addEventListener("drop",g),viewer.inputHandler.addInputListener(this),y}},{key:"update",value:function(e){}},{key:"render",value:function(){this.viewer.renderer.render(this.scene,this.viewer.scene.getActiveCamera())}}]),i}(),Yu=function(){y(r,K);var i=C(r);function r(e,t){te(this,r),(n=i.call(this)).light=e,n.color=t,n.updateMatrix(),n.updateMatrixWorld();var n,e=new Hu(1,32,32),t=new sc,e=(n.sphere=new Z(e,t),n.sphere.scale.set(.5,.5,.5),n.add(n.sphere),new Float32Array([0,0,0,0,0,-1,0,0,0,-1,-1,-1,0,0,0,1,-1,-1,0,0,0,1,1,-1,0,0,0,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,-1,1,-1,-1,1,-1,-1,-1,-1])),t=new j,e=(t.setAttribute("position",new Q(e,3)),new vl);return n.frustum=new Bl(t,e),n.add(n.frustum),n.update(),n}return A(r,[{key:"update",value:function(){this.light.updateMatrix(),this.light.updateMatrixWorld();var e=this.light.position,t=(new Re).addVectors(this.light.position,this.light.getWorldDirection(new Re).multiplyScalar(-1)),t=(new X).setFromRotationMatrix((new _e).lookAt(e,t,new Re(0,0,1))),t=(this.setRotationFromQuaternion(t),this.position.copy(e),0<this.light.distance?this.light.distance:1e3),e=t*Math.tan(.5*this.light.angle);this.frustum.scale.set(e,e,t)}}]),r}(),ag={sortByScore:function(e,t,n){t=t?ag.filterAll(e,t):e;return 0===t.length?null:t.map(function(t){var e=n.map(function(e){return e(t)});return{item:t,scores:e,score:e.reduce(function(e,t){return e+t},0)}}).sort(function(e,t){return t.score-e.score})},filterAll:function(e,n){return e.filter(function(t){return n.every(function(e){return e(t)})})},find:function(e,t,n,i){var r;return i?(i=this.sortByScore(e,t,n))&&i[0]&&i[0].item:0===(r=t?ag.filterAll(e,t):e).length?null:(n&&n.forEach(function(e){r=ag.stableSort(r,e)}),r[0])},stableSort:function(e,i){return e.map(function(e,t){return{value:e,index:t}}).sort(function(e,t){var n=i(e.value,t.value);return 0!==n?n:e.index-t.index}).map(function(e){return e.value})},average:function(e,t){if(0===e.length)return null;for(var n=0,i=0,r=0;r<e.length;r++)n+=t?e[r][t]:e[r],i++;return n/i},getMixedSet:function(e,t){return e.filter(function(e){return t.includes(e)})},getUnionSet:function(t,e){return t.concat(e.filter(function(e){return!t.includes(e)}))},getDifferenceSet:function(t,n){var e=t.filter(function(e){return!n.includes(e)}),i=n.filter(function(e){return!t.includes(e)});return e.concat(i)},getDifferenceSetMuti:function(e){var n=[];return e.forEach(function(e){e.forEach(function(e){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)})}),n},CloneJson:function(e){e=JSON.stringify(e);return JSON.parse(e)},CloneObject:function(t,e,n){var i,r=this,a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:[];if(a.push(K),!t||"number"==typeof t||"string"==typeof t||t instanceof Function||a.some(function(e){return t instanceof e}))return t;if(e=e||{},t instanceof Array)return t.map(function(e){return r.CloneObject(e)});if(t.clone instanceof Function)return t.clone();for(i in t)t[i]instanceof Object&&!n?e[i]=this.CloneObject(t[i]):e[i]=t[i];return e},CloneClassObject:function(e){var t=new e.constructor;return this.CopyClassObject(t,e),t},CopyClassObject:function(e,t){for(var n in t){if(n in t.__proto__)break;e[n]=this.CloneObject(t[n],null)}},ifSame:function(n,e){var i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[];if(n==e)return!0;if(!n||!e)return!1;if(n.constructor!=e.constructor)return!1;if(i.some(function(e){return n instanceof e}))return n==e;if(n instanceof Array){if(n.length!=e.length)return!1;for(var r=e.slice(0),t=0;t<n.length;t++){var a,o=function(t){if(null==(a=r.find(function(e){return ag.ifSame(n[t],e,i)}))&&!r.includes(a)&&!n.includes(a))return{v:!1};var e=r.indexOf(a);r.splice(e,1)}(t);if("object"===v(o))return o.v}return!0}if(n.equals instanceof Function)return n.equals(e);if("number"==typeof n||"string"==typeof n)return!(!isNaN(n)||!isNaN(e))||n==e;if("object"==v(n)){var s,l=Object.keys(n),u=Object.keys(e);if(!ag.ifSame(l,u,i))return!1;for(s in n)if(!ag.ifSame(n[s],e[s],i))return!1;return!0}console.log("isSame出现例外")},replaceAll:function(e,t,n){t=new RegExp(t,"g");return e.replace(t,n)},downloadFile:function(e,t,n){var i=document.createElementNS("http://www.w3.org/1999/xhtml","a"),e=(i.href=e,i.download=t,document.createEvent("MouseEvents"));e.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(e),n&&n()},intervalTool:{list:[],isWaiting:function(t,n,i){var r=this;this.list.includes(t)||n()&&(this.list.push(t),setTimeout(function(){var e=r.list.indexOf(t);r.list.splice(e,1),r.isWaiting(t,n,i)},i))}},pushToGroupAuto:function(t,n,i){i=i||function(){};var r,a=n.filter(function(e){return e.find(function(e){return t[0]==e||i(e,t[0])||t[1]==e||t[1]&&i(e,t[1])})});a.length?(t.forEach(function(e){a[0].includes(e)||a[0].push(e)}),1<a.length&&(r=[],a.forEach(function(e){r=ag.getUnionSet(r,e),n.splice(n.indexOf(e),1)}),n.push(r))):n.push(t)},addOrRemoveDefine:function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"",r=e.defines;if("add"==n){if(null!=r[t]&&r[t]==i)return;r[t]=i}else{if(null!=r[t])return;delete r[t]}e.needsUpdate=!0},makeTexDontResize:function(e){if(!e||!e.image)return console.log("!map || !map.image",e,e&&e.image);Be.isPowerOfTwo(e.image.width)&&Be.isPowerOfTwo(e.image.height)||(e.wrapS=e.wrapT=st,e.minFilter=U,e.needsUpdate=!0)}},og=(Potree.Common=ag,function(){y(i,zn);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).undoList=[],t.redoList=[],t.applyData=e.applyData,t.getData=e.getData,t.dataBefore,t}return A(i,[{key:"undo",value:function(){var e;0<this.undoList.length&&(e=this.undoList.pop(),this.applyData&&this.applyData(e.before),this.redoList.push(e),this.dispatchEvent("undo"))}},{key:"redo",value:function(){this.undoList.length;var e=this.redoList.pop();e&&(this.undoList.push(e),this.applyData&&this.applyData(e.after),this.dispatchEvent("redo"))}},{key:"beforeChange",value:function(e){this.dataBefore||(e=this.getData(e),this.dataBefore=e)}},{key:"afterChange",value:function(e){this.dataBefore&&(this.writeIn({before:this.dataBefore,after:this.getData(e)}),this.dataBefore=null)}},{key:"writeIn",value:function(e){this.redoList.length=0,this.undoList.push(e)}},{key:"clear",value:function(){this.redoList.length=0,this.undoList.length=0,this.dataBefore=null}}]),i}()),sg=function(){y(s,zn);var o=C(s);function s(n){te(this,s),(i=o.call(this)).viewer=n,i.modesEnabled={},i.style="singleMode",i.scene=new Ps,i.selection=[],i.pivot=new Re,i.dragging=!1,i.showPickVolumes=!1,i.viewer.inputHandler.registerInteractiveScene(i.scene),i.viewer.inputHandler.addEventListener("selection_changed",function(e){i.selection=e.selection}),i.viewer.addEventListener("global_touchstart",function(e){i.update()}),i.viewer.addEventListener("global_mousemove",function(e){i.onPointerMove()});var i,e=Potree.config.axis.x.color,t=Potree.config.axis.y.color,r=Potree.config.axis.z.color,a=Potree.config.axis.xyz.color,a=(i.activeHandle=null,i.scaleHandles={"scale.x+":{name:"scale.x+",node:new K,color:e,alignment:[1,0,0]},"scale.x-":{name:"scale.x-",node:new K,color:e,alignment:[-1,0,0]},"scale.y+":{name:"scale.y+",node:new K,color:t,alignment:[0,1,0]},"scale.y-":{name:"scale.y-",node:new K,color:t,alignment:[0,-1,0]},"scale.z+":{name:"scale.z+",node:new K,color:r,alignment:[0,0,1]},"scale.z-":{name:"scale.z-",node:new K,color:r,alignment:[0,0,-1]},lines:{name:"lines",node:new K,dontScale:!0}},i.focusHandles={"focus.x+":{name:"focus.x+",node:new K,color:e,alignment:[1,0,0]},"focus.x-":{name:"focus.x-",node:new K,color:e,alignment:[-1,0,0]},"focus.y+":{name:"focus.y+",node:new K,color:t,alignment:[0,1,0]},"focus.y-":{name:"focus.y-",node:new K,color:t,alignment:[0,-1,0]},"focus.z+":{name:"focus.z+",node:new K,color:r,alignment:[0,0,1]},"focus.z-":{name:"focus.z-",node:new K,color:r,alignment:[0,0,-1]}},i.translationHandles={"translation.x":{name:"translation.x",node:new K,color:e,alignment:[1,0,0]},"translation.y":{name:"translation.y",node:new K,color:t,alignment:[0,1,0]},"translation.z":{name:"translation.z",node:new K,color:r,alignment:[0,0,1]},"translation.xyz":{name:"translation.xyz",node:new K,color:a,alignment:[0,0,0],alignment2:[1,1,1]},"translation.plane.xy":{name:"translation.plane.xy",node:new K,color:r,alignment:[0,0,1],alignment2:[1,1,0]},"translation.plane.yz":{name:"translation.plane.yz",node:new K,color:e,alignment:[1,0,0],alignment2:[0,1,1]},"translation.plane.xz":{name:"translation.plane.xz",node:new K,color:t,alignment:[0,1,0],alignment2:[1,0,1]}},i.rotationHandles={"rotation.x":{name:"rotation.x",node:new K,color:e,alignment:[1,0,0]},"rotation.y":{name:"rotation.y",node:new K,color:t,alignment:[0,1,0]},"rotation.z":{name:"rotation.z",node:new K,color:r,alignment:[0,0,1]}},i.handles=Object.assign({},i.scaleHandles,{},i.translationHandles,i.rotationHandles),i.pickVolumes=[],i.initializeScaleHandles(),i.initializeFocusHandles(),i.initializeTranslationHandles(),i.initializeRotationHandles(),new Hl);a.vertices.push(new Re(-.5,-.5,.5)),a.vertices.push(new Re(.5,-.5,.5)),a.vertices.push(new Re(.5,-.5,.5)),a.vertices.push(new Re(.5,-.5,-.5)),a.vertices.push(new Re(.5,-.5,-.5)),a.vertices.push(new Re(-.5,-.5,-.5)),a.vertices.push(new Re(-.5,-.5,-.5)),a.vertices.push(new Re(-.5,-.5,.5)),a.vertices.push(new Re(-.5,.5,.5)),a.vertices.push(new Re(.5,.5,.5)),a.vertices.push(new Re(.5,.5,.5)),a.vertices.push(new Re(.5,.5,-.5)),a.vertices.push(new Re(.5,.5,-.5)),a.vertices.push(new Re(-.5,.5,-.5)),a.vertices.push(new Re(-.5,.5,-.5)),a.vertices.push(new Re(-.5,.5,.5)),a.vertices.push(new Re(-.5,-.5,.5)),a.vertices.push(new Re(-.5,.5,.5)),a.vertices.push(new Re(.5,-.5,.5)),a.vertices.push(new Re(.5,.5,.5)),a.vertices.push(new Re(.5,-.5,-.5)),a.vertices.push(new Re(.5,.5,-.5)),a.vertices.push(new Re(-.5,-.5,-.5)),a.vertices.push(new Re(-.5,.5,-.5)),i.frame=new Bl(a,new vl({color:16776960})),i.scene.add(i.frame),i.setModeEnable(["scale","translation","rotation"]),n.setObjectLayers(i.scene,"transformationTool"),i.scene.traverse(function(e){e.pickDontCheckDis=!0});return i.history=new og({applyData:function(e){!function(e){for(;e.parent;)e=e.parent;if(e instanceof Ps)return!0}(e.object)?i.history.undo():e.matrix.decompose(e.object.position,e.object.quaternion,e.object.scale)},getData:function(e){return e}}),i.addEventListener("transformed",function(e){var t=n.transformationTool.selection[0];i.history.beforeChange({object:t,matrix:e.matrixBefore.clone()})}),i.addEventListener("stopDrag",function(e){var t=n.transformationTool.selection[0];t&&i.history.afterChange({object:t,matrix:t.matrix.clone()})}),n.inputHandler.addEventListener("keydown",function(e){90==e.keyCode&&e.event.ctrlKey?i.history.undo():89==e.keyCode&&e.event.ctrlKey&&i.history.redo()}),i}return A(s,[{key:"setModeEnable",value:function(){var r=this,a=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],o=0;["translation","scale","rotation"].forEach(function(e){var t,n=r[e+"Handles"],i=a.includes(e);for(t in n)viewer.updateVisible(n[t].node,"modeForce",!!i);r.modesEnabled[e]=!!i,i&&o++}),"singleMode"==this.style&&1<o?this.changeStyle("mixedModes"):"mixedModes"==this.style&&1==o&&this.changeStyle("singleMode")}},{key:"changeStyle",value:function(n){var i=this;["x","y","z"].forEach(function(e){i.translationHandles["translation."+e].node.children.forEach(function(e){e.name.includes("arrow")?viewer.updateVisible(e,"modeStyle","singleMode"==n):e.name.includes("handle")&&(e.material.lineWidth="singleMode"==n?5:8)})}),["xy","yz","xz"].forEach(function(e){var e=i.translationHandles["translation.plane."+e],t="singleMode"==n?15:12;e.node.children[0].scale.set(t,t,t),e.node.children[0].position.fromArray(e.alignment2).multiplyScalar(1.5*t)}),viewer.updateVisible(this.scaleHandles.lines.node,"modeStyle","singleMode"==n),this.style=n}},{key:"initializeTranslationHandles",value:function(){for(var v=this,g=new Ql(1,1,1),A=100,y=10,w=new Wl(0,4,y,12,1,!1),b=(new X).setFromAxisAngle(new Re(1,0,0),-Math.PI/2),x=new Du(5,0),E=new Ba(1,1),C=0,B=Object.keys(this.translationHandles);C<B.length;C++)!function(){var e,n=B[C],t=v.handles[n],i=t.node,r=(v.scene.add(i),i.name=n,re(Re,J(t.alignment))),a=void 0,o=void 0,s=void 0,l=void 0,u=void 0,c=void 0,h=!1,d=void 0,p={color:t.color,opacity:.6,transparent:!0,side:n.includes("plane")?ve:fe},f=new L(p),m=new sc({opacity:.2,transparent:!0,visible:v.showPickVolumes});n.includes("xyz")?(a=x,h=!0,d=12):n.includes("plane")?(a=E,h=!0,u=re(Re,J(t.alignment2)),c=r,n.includes("xy")||n.includes("yz")||n.includes("xz")):(a=g,e=new Re(0,0,A/2),o=Fv.createFatLine([e,e.clone().negate()],{lineWidth:5,material:new Fv.createFatLineMat(p)}),c=r,d=10,l=new Re(4,4,A+2*y),(e=new Z(w,f)).name="".concat(n,".arrow"),e.renderOrder=11,(p=e.position).set.apply(p,J(t.alignment)).multiplyScalar(A/2+y/2),e.lookAt(0,0,0),i.add(e),(r=e.clone()).position.negate(),r.lookAt(0,0,0),i.add(r),e.quaternion.multiply(b),r.quaternion.multiply(b)),(o=o||new Z(a,f)).name="".concat(n,".handle"),i.add(o),d&&(o.renderOrder=d),c&&o.lookAt(c),u&&o.position.copy(u),h?s=o:(s=new Z(a,m),l&&s.scale.copy(l)),s&&(o!=s?(o.add(s),s.name="".concat(n,".pick_volume")):s.name+=" & pick_volume",s.handle=n,v.pickVolumes.push(s)),i.setOpacity=function(e){n.includes("plane")&&(e=1-1.5*(1-e));var t={x:f.opacity},e=new TWEEN.Tween(t).to({x:e},0);e.onUpdate(function(){o.visible=0<t.x,s&&(s.visible=0<t.x),f.opacity=t.x,o.material.opacity=t.x,m.opacity=.5*t.x}),e.start()},s.addEventListener("drag",function(e){v.dragTranslationHandle(e)}),s.addEventListener("drop",function(e){v.dropTranslationHandle(e)})}()}},{key:"initializeScaleHandles",value:function(){for(var l=this,u=new Hu(1,32,32),c=new Hu(1,16,16),h=0,d=Object.keys(this.scaleHandles);h<d.length;h++)!function(){var e=d[h],t=l.scaleHandles[e],n=t.node;if(n.name=e,l.scene.add(n),"lines"==e)return["x","y","z"].forEach(function(e){var t=l.scaleHandles["scale."+e+"+"],e=l.scaleHandles["scale."+e+"-"],e=Fv.createFatLine([(new Re).fromArray(t.alignment).multiplyScalar(.5),(new Re).fromArray(e.alignment).multiplyScalar(.5)],{color:t.color,lineWidth:4});n.add(e)}),n.setOpacity=function(t){t*=.6,n.children.forEach(function(e){return e.material.opacity=t})};(a=n.position).set.apply(a,J(t.alignment)).multiplyScalar(.5);var i=new L({color:t.color,side:ve,opacity:.6,transparent:!0}),r=new L({color:6710886,side:me,opacity:.6,transparent:!0}),a=new sc({opacity:.2,transparent:!0,side:ve,visible:l.showPickVolumes}),o=new Z(u,i),s=(o.scale.set(5,5,5),o.name="".concat(e,".handle"),n.add(o),o.renderOrder=10,new Z(c,a));s.name="".concat(e,".pick_volume"),s.scale.set(1.5,1.5,1.5),o.add(s),s.handle=e,l.pickVolumes.push(s),n.setOpacity=function(e){var t={x:i.opacity},e=new TWEEN.Tween(t).to({x:e},0);e.onUpdate(function(){o.visible=0<t.x,s.visible=0<t.x,i.opacity=t.x,r.opacity=t.x,s.material.opacity=.5*t.x}),e.start()},s.addEventListener("drag",function(e){return l.dragScaleHandle(e)}),s.addEventListener("drop",function(e){return l.dropScaleHandle(e)}),s.addEventListener("mouseover",function(e){}),s.addEventListener("click",function(e){}),s.addEventListener("mouseleave",function(e){})}()}},{key:"initializeRotationHandles",value:function(){for(var s=this,l=new qu(1.4,.0375,8,64,Math.PI/2),u=new qu(1.4,.15,6,4,Math.PI/2),c=0,h=Object.keys(this.rotationHandles);c<h.length;c++)!function(){var e=h[c],t=s.handles[e],n=t.node,i=(s.scene.add(n),n.name=e,new L({color:t.color,opacity:.6,transparent:!0})),r=new sc({opacity:.2,transparent:!0,visible:s.showPickVolumes}),a=new Z(l,i),o=(a.name="".concat(e,".handle"),a.scale.set(30,30,30),a.lookAt(re(Re,J(t.alignment))),n.add(a),t.translateNode=a,new Z(u,r));o.name="".concat(e,".pick_volume"),o.scale.set(1,1,1),o.handle=e,a.add(o),s.pickVolumes.push(o),n.setOpacity=function(e){var t={x:i.opacity},e=new TWEEN.Tween(t).to({x:e},0);e.onUpdate(function(){a.visible=0<t.x,o.visible=0<t.x,i.opacity=t.x,r.opacity=.5*t.x}),e.start()},o.addEventListener("drag",function(e){s.dragRotationHandle(e)}),o.addEventListener("drop",function(e){s.dropRotationHandle(e)})}()}},{key:"initializeFocusHandles",value:function(){}},{key:"dragRotationHandle",value:function(e){var e=e.drag,t=this.activeHandle,n=this.viewer.mainViewport.camera;if(t){var i=re(Re,J(t.alignment)),r=new Re;if(r.copy(re(Kn,J(i.toArray()).concat([0])).applyMatrix4(t.node.matrixWorld)),r.normalize(),e.intersectionStart?t=e.handle:(e.intersectionStart=e.location,e.objectStart=e.object.getWorldPosition(new Re),e.handle=t,i=(new $i).setFromNormalAndCoplanarPoint(r,e.intersectionStart),e.dragPlane=i,e.pivot=e.intersectionStart),e.dragPlane){this.dragging=!0;var i=this.viewer.inputHandler.pointer,a=this.viewer.renderer.domElement,i=ie.mouseToRay(i,n,a.clientWidth,a.clientHeight).intersectPlane(e.dragPlane,new Re);if(i){var n=this.scene.getWorldPosition(new Re),a=i,o=e.pivot.clone().sub(n).normalize(),a=a.clone().sub(n).normalize(),s=Math.acos(o.dot(a)),n=Math.sign(o.cross(a).dot(r));if(s*=n,!Number.isNaN(s)){var l,o=this.selection[0].matrix.clone(),u=re(Re,J(t.alignment)),c=q(this.selection);try{for(c.s();!(l=c.n()).done;){var h=l.value;h.rotateOnAxis(u,s),h.dispatchEvent({type:"orientation_changed",object:h})}}catch(e){c.e(e)}finally{c.f()}this.dispatchEvent({type:"transformed",changeType:["orientation"],matrixBefore:o}),e.pivot=i}}}}}},{key:"dropRotationHandle",value:function(e){this.dragging=!1,this.setActiveHandle(null),this.dispatchEvent({type:"stopDrag",handle:"rotation"})}},{key:"dragTranslationHandle",value:function(e){var e=e.drag,t=this.activeHandle,n=this.viewer.mainViewport.camera;if(t&&this.selection[0]){var i=this.selection[0].getWorldPosition(new Re);if(e.intersectionStart||(e.intersectionStart=e.location,e.worldPositionStart=i,e.objectQua=this.selection[0].quaternion.clone(),e.objectQuaInv=e.objectQua.clone().invert(),this.dragging=!0),e.intersectionStart){var r=this.viewer.inputHandler.pointer,r=ie.mouseToRay(r,n),n=viewer.mainViewport.view.direction,n=(e.dragPlane=(new $i).setFromNormalAndCoplanarPoint(n,i),r.intersectPlane(e.dragPlane,new Re));if(n){i=(new Re).subVectors(n,e.worldPositionStart);if(e.pointStart){e.pointEnd=i;var a,r=(new Re).subVectors(e.pointEnd,e.pointStart),n=(r.applyQuaternion(e.objectQuaInv),t.name.includes("x")||(r.x=0),t.name.includes("y")||(r.y=0),t.name.includes("z")||(r.z=0),r.applyQuaternion(e.objectQua),this.selection[0].matrix.clone()),o=(this.selection[0].position.copy(r).add(e.worldPositionStart),q(this.selection));try{for(o.s();!(a=o.n()).done;){var s=a.value;s.dispatchEvent({type:"position_changed",object:s})}}catch(e){o.e(e)}finally{o.f()}this.dispatchEvent({type:"transformed",changeType:["position"],matrixBefore:n})}else e.pointStart=i}}}}},{key:"dropTranslationHandle",value:function(e){this.dragging=!1,this.setActiveHandle(null),this.dispatchEvent({type:"stopDrag",handle:"translation"})}},{key:"dropScaleHandle",value:function(e){this.dragging=!1,this.setActiveHandle(null),this.dispatchEvent({type:"stopDrag",handle:"scale"})}},{key:"dragScaleHandle",value:function(e){var e=e.drag,t=this.activeHandle;if(t){var n=this.viewer.mainViewport.camera;if(e.intersectionStart?t=e.handle:(e.intersectionStart=e.location,e.objectStart=e.object.getWorldPosition(new Re),e.handle=t,i=e.intersectionStart,r=re(Kn,J(t.alignment).concat([0])).applyMatrix4(this.scene.matrixWorld),r=(new Re).addVectors(i,r),i=new Cd(i.clone(),r.clone()),e.line=i,i="OrthographicCamera"==n.type?new Re(0,0,-1).applyQuaternion(n.quaternion):(r=i.closestPointToPoint(n.position,!1,new Re),(new Re).subVectors(n.position,r)),r=(new $i).setFromNormalAndCoplanarPoint(i,e.intersectionStart),e.dragPlane=r,e.pivot=e.intersectionStart),this.dragging=!0,e.dragPlane){var i=this.viewer.inputHandler.pointer,r=this.viewer.renderer.domElement,i=ie.mouseToRay(i,n,r.clientWidth,r.clientHeight).intersectPlane(e.dragPlane,new Re);if(i){var a,n=e.line.closestPointToPoint(i,!1,new Re),r=t.alignment.reduce(function(e,t){return e+t},0),i=this.selection[0].matrixWorld.clone().invert(),o=n.clone().applyMatrix4(i),i=e.pivot.clone().applyMatrix4(i),o=(new Re).subVectors(o,i).clone().normalize(),i=(0===n.distanceTo(e.pivot)&&o.set(0,0,0),o.dot(re(Re,J(t.alignment)))),o=(new Re).subVectors(n,e.pivot),s=re(Re,J(t.alignment)).multiplyScalar(o.length()*r*i),l=o.clone().multiplyScalar(.5),u=this.selection[0].matrix.clone(),c=q(this.selection);try{for(c.s();!(a=c.n()).done;){var h=a.value,d=s.clone().divide(h.boundingBox.getSize(new Re));h.scale.add(d),h.scale.x=Math.max(.1,h.scale.x),h.scale.y=Math.max(.1,h.scale.y),h.scale.z=Math.max(.1,h.scale.z),h.position.add(l),h.dispatchEvent({type:"position_changed",object:h}),h.dispatchEvent({type:"scale_changed",object:h}),this.dispatchEvent({type:"transformed",changeType:["position","scale"],matrixBefore:u})}}catch(e){c.e(e)}finally{c.f()}e.pivot.copy(n)}}}}},{key:"setActiveHandle",value:function(e){if(!this.dragging&&this.activeHandle!==e){if(null===(this.activeHandle=e))for(var t=0,n=Object.keys(this.handles);t<n.length;t++){var i=n[t];this.handles[i].node.setOpacity(0)}viewer.dispatchEvent({type:"CursorChange",action:this.activeHandle?"add":"remove",name:"hoverTranHandle"});for(var r=0,a=Object.keys(this.translationHandles);r<a.length;r++){var o=a[r],o=this.translationHandles[o];this.activeHandle===o?o.node.setOpacity(1):o.node.setOpacity(.6)}for(var s=0,l=Object.keys(this.rotationHandles);s<l.length;s++){var u=l[s];this.rotationHandles[u].node.setOpacity(.6)}for(var c=0,h=Object.keys(this.scaleHandles);c<h.length;c++){var d=h[c],d=this.scaleHandles[d];if(this.activeHandle===d){d.node.setOpacity(1);for(var p=0,f=Object.keys(this.translationHandles);p<f.length;p++){var m=f[p];this.translationHandles[m].node.setOpacity(.6)}}else d.node.setOpacity(.6)}e&&e.node.setOpacity(1)}}},{key:"update",value:function(){var t=this;if(1===this.selection.length){this.scene.visible=!0,this.scene.updateMatrix(),this.scene.updateMatrixWorld();var n,e,i,r,a,o,s=this.selection[0],l=(s.matrixWorld,this.viewer.mainViewport.camera),u=this.viewer.renderer.domElement,c=s.boundingBox.getCenter(new Re).clone().applyMatrix4(s.matrixWorld);this.scene.scale.copy(s.boundingBox.getSize(new Re).multiply(s.scale)),this.scene.position.copy(c),this.scene.rotation.copy(s.rotation),this.scene.updateMatrixWorld(),this.dragging||(this.modesEnabled.rotation||this.modesEnabled.translation)&&(s=this.scene.matrixWorld.clone().invert(),n=l.getWorldPosition(new Re).applyMatrix4(s),this.modesEnabled.translation&&["xy","yz","xz"].forEach(function(e){e=t.translationHandles["translation.plane."+e].node.children[0].position;n.x&&(e.x=Math.sign(n.x)*Math.abs(e.x)),n.y&&(e.y=Math.sign(n.y)*Math.abs(e.y)),n.z&&(e.z=Math.sign(n.z)*Math.abs(e.z))}),this.modesEnabled.rotation)&&(e=!(s=0<n.z),i=Math.PI/2,r=this.rotationHandles["rotation.x"].node.rotation,a=this.rotationHandles["rotation.y"].node.rotation,o=this.rotationHandles["rotation.z"].node.rotation,r.order="ZYX",a.order="ZYX",s?0<n.x&&0<n.y?(r.x=i,a.y=3*i,o.z=0*i):n.x<0&&0<n.y?(r.x=i,a.y=2*i,o.z=i):n.x<0&&n.y<0?(r.x=2*i,a.y=2*i,o.z=2*i):0<n.x&&n.y<0&&(r.x=2*i,a.y=3*i,o.z=3*i):e&&(0<n.x&&0<n.y?(r.x=0*i,a.y=0*i,o.z=0*i):n.x<0&&0<n.y?(r.x=0*i,a.y=i,o.z=i):n.x<0&&n.y<0?(r.x=3*i,a.y=i,o.z=2*i):0<n.x&&n.y<0&&(r.x=3*i,a.y=0*i,o.z=3*i)));for(var h=0,d=Object.keys(this.handles);h<d.length;h++){var p,f,m,v=d[h],g=this.handles[v],A=g.node;viewer.getObjVisiByReason(A,"modeForce")&&(!(p=g.alignment)||v.includes("rotation")&&"OrthographicCamera"!=l.type?viewer.updateVisible(A,"faceToCamHide",!0):(f=void 0,p=re(Re,J(p)).applyQuaternion(this.scene.quaternion),f="OrthographicCamera"==l.type?new Re(0,0,-1).applyQuaternion(l.quaternion):(new Re).subVectors(c,l.position).normalize(),m=void 0,m=v.includes("rotation")||v.includes("plane")?Math.abs(p.dot(f))<.1:.995<Math.abs(p.dot(f)),viewer.updateVisible(A,"faceToCamHide",!m)),A.visible)&&!g.dontScale&&(v=A.getWorldPosition(new Re).distanceTo(l.position),p=ie.projectedRadius(1,l,v,u.clientWidth,u.clientHeight),f=A.parent.getWorldScale(new Re),g=new Re(m=3/p,m,m).divide(f),v=(new _e).makeRotationFromEuler(A.rotation).clone().invert(),g.applyMatrix4(v),g.x=Math.abs(g.x),g.y=Math.abs(g.y),g.z=Math.abs(g.z),A.scale.copy(g))}}else this.scene.visible=!1}},{key:"onPointerMove",value:function(){var n=this,e=this.viewer.inputHandler.pointer,t=this.viewer.mainViewport.camera;1!==this.selection.length||this.dragging||((t=new gd((e=ie.mouseToRay(e,t)).origin,e.direction)).layers.enableAll(),e=this.pickVolumes.filter(function(e){var t=e.handle.split(".")[0];if(n.modesEnabled[t])return e.parent.parent.visible}),0<(t=(t=t.intersectObjects(e,!0)).sort(function(e,t){return(t.object.renderOrder||0)-(e.object.renderOrder||0)})).length?(e=t[0].object.handle,this.setActiveHandle(this.handles[e])):this.setActiveHandle(null))}}]),s}(),lg=.1,ug=.2,cg=.6,hg=1,dg={2:3073230,3:16761403,4:16777215},pg=function(){y(i,K);var n=C(i);function i(){var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return te(this,i),"Volume"===(t=n.call(this)).constructor.name&&console.warn("Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead."),t._clip=e.clip||!1,t._visible=!0,t._modifiable=e.modifiable||!0,t.addEventListener("select",function(e){t.setSelected(!0)}),t.addEventListener("deselect",function(e){t.setSelected(!1)}),t.addEventListener("mouseover",function(e){t.hovered=!0,t.update()}),t.addEventListener("mouseleave",function(e){t.hovered=!1,t.update()}),t}return A(i,[{key:"setSelected",value:function(e){this.selected=!!e,this.update()}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",object:this}))}},{key:"getVolume",value:function(){console.warn("override this in subclass")}},{key:"update",value:function(){}},{key:"raycast",value:function(e,t){}},{key:"clip",get:function(){return this._clip},set:function(e){this._clip!==e&&(this._clip=e,this.update(),this.dispatchEvent({type:"clip_changed",object:this}))}},{key:"modifieable",get:function(){return this._modifiable},set:function(e){this._modifiable=e,this.update()}}]),i}(),fg=function(){y(a,pg);var r=C(a);function a(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,a),(e=r.call(this,t)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="box_"+e.constructor.counter,e.clipTask=t.clipTask||Potree.ClipTask.SHOW_INSIDE,e.showBox=!0,new Ql(1,1,1)),n=(t.computeBoundingBox(),new Hl),i=Re;return n.vertices.push(new i(-.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,.5),new i(.5,-.5,-.5),new i(.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,-.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,.5),new i(.5,.5,-.5),new i(.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,-.5),new i(-.5,.5,.5),new i(-.5,-.5,.5),new i(-.5,.5,.5),new i(.5,-.5,.5),new i(.5,.5,.5),new i(.5,-.5,-.5),new i(.5,.5,-.5),new i(-.5,-.5,-.5),new i(-.5,.5,-.5)),e.material=new jm({color:dg[e.clipTask],side:ve,transparent:!0,opacity:lg,depthTest:!0,depthWrite:!1,useDepth:!0,clipDistance:2,occlusionDistance:.1,maxClipFactor:.9}),e.box=new Z(t,e.material),e.box.geometry.computeBoundingBox(),e.boundingBox=e.box.geometry.boundingBox,e.add(e.box),e.frame=Fv.createFatLine(n.vertices,{color:dg[e.clipTask],opacity:cg,lineWidth:1,dontAlwaysSeen:!0}),e.add(e.frame),e.update(),e}return A(a,[{key:"update",value:function(){this.boundingBox=this.box.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new gi),viewer.updateVisible(this.box,"selected",(this.selected||this.hovered)&&this.showBox),this.box.material.opacity=this.selected?ug:lg,this.box.material.color.set(dg[this.clipTask]),this.frame.material.color.set(dg[this.clipTask]),this.frame.material.opacity=this.selected?hg:cg,this.frame.material.lineWidth=this.selected?2:1}},{key:"raycast",value:function(e,t){var n=[];this.box.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return Math.abs(this.scale.x*this.scale.y*this.scale.z)}}]),a}(),mg=function(){y(E,pg);var x=C(E);function E(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,E),(e=x.call(this,e)).constructor.counter=void 0===e.constructor.counter?0:e.constructor.counter+1,e.name="sphere_"+e.constructor.counter,new Hu(1,32,32)),n=(t.computeBoundingBox(),e.material=new L({color:65280,transparent:!0,opacity:.3,depthTest:!0,depthWrite:!1}),e.sphere=new Z(t,e.material),e.sphere.visible=!1,e.sphere.geometry.computeBoundingBox(),e.boundingBox=e.sphere.geometry.boundingBox,e.add(e.sphere),e.label.visible=!1,new Hl),i=0;i<8;i++)for(var r=i/8*Math.PI*2,a=Math.cos(r),o=Math.sin(r),s=0;s<=64;s++){var l=s/64*Math.PI*2,u=l+2*Math.PI/64,c=Math.sin(l),l=Math.cos(l),h=Math.sin(u),u=Math.cos(u),l=new Re(a*l,o*l,c),c=(n.vertices.push(l),new Re(a*u,o*u,h));n.vertices.push(c)}for(var d=0;d<=6;d++){var p=(1-(p=d/6))*(-Math.PI/2)+p*(Math.PI/2),f=Math.sin(p);console.log(p,f);for(var m=0;m<=64;m++){var v=m/64*Math.PI*2,g=v+2*Math.PI/64,A=Math.cos(v),v=Math.sin(v),y=Math.cos(g),g=Math.sin(g),w=Math.sqrt(1-f*f),A=new Re(A*w,v*w,f),v=(n.vertices.push(A),new Re(y*w,g*w,f));n.vertices.push(v)}}e.frame=new Bl(n,new vl({color:0})),e.add(e.frame);var b=new L({wireframe:!0,color:0});return e.frame=new Z(t,b),e.update(),e}return A(E,[{key:"update",value:function(){this.boundingBox=this.sphere.geometry.boundingBox,this.boundingSphere=this.boundingBox.getBoundingSphere(new gi)}},{key:"raycast",value:function(e,t){var n=[];this.sphere.raycast(e,n),0<n.length&&t.push({distance:(e=n[0]).distance,object:this,point:e.point.clone()})}},{key:"getVolume",value:function(){return 4/3*Math.PI*this.scale.x*this.scale.y*this.scale.z}}]),E}(),vg=15,gg=new Ru(1,1),Ag=new Nc,yg=new vl({color:"#ffffff"}),wg=function(){y(i,K);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).lineLength=null!=e.lineLength?e.lineLength:.6,t.position.copy(e.position),t.normal=null!=e.normal?e.normal:new Re(0,0,-1),t.root=e.root,t.build(),t}return A(i,[{key:"build",value:function(){ng=ng||new L({transparent:!0,map:Ag.load(Potree.resourcePath+"/textures/spot_default.png")});var e=this.normal.clone().multiplyScalar(this.lineLength),t=(this.line=Fv.createLine([new Re(0,0,0),e],{mat:yg}),new K);this.spot=new Z(gg,ng),this.spot.scale.set(.4,.4,.4),this.titleLabel=new qm({root:t,text:"1",sizeInfo:{width2d:200},textColor:{r:255,g:255,b:255,a:1},backgroundColor:{r:0,g:0,b:0,a:.8},borderRadius:6,fontsize:13,fontWeight:"",renderOrder:vg,pickOrder:vg}),this.spot.renderOrder=vg,this.titleLabel.position.set(0,.4,0),this.titleLabel.sprite.material.depthTest=this.titleLabel.sprite.material.depthWrite=!0,t.position.copy(e),t.add(this.spot),t.add(this.titleLabel),this.add(t),this.add(this.line),viewer.scene.tags.add(this)}},{key:"changeTitle",value:function(e){this.titleLabel.changeText(e)}},{key:"updateMatrixWorld",value:function(e){this.updateMatrix(),this.matrixWorld.multiplyMatrices(this.root.matrixWorld,this.matrix);for(var t=this.children,n=0,i=t.length;n<i;n++)t[n].updateMatrixWorld(e)}},{key:"updateWorldMatrix",value:function(e,t){if(!0===e&&null!==this.root&&this.root.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorld.multiplyMatrices(this.root.matrixWorld,this.matrix),!0===t)for(var n=this.children,i=0,r=n.length;i<r;i++)n[i].updateWorldMatrix(!1,!0)}},{key:"dispose",value:function(){this.parent.remove(this),this.titleLabel.dispatchEvent({type:"dispose"})}}]),i}(),bg=function(){y(i,zn);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).viewer=e,t.viewer.addEventListener("start_inserting_tag",function(e){t.viewer.dispatchEvent({type:"cancel_insertions"})}),t}return A(i,[{key:"createTagFromData",value:function(e){return new wg({title:e.title,position:e.position,normal:e.normal,root:e.root})}},{key:"startInsertion",value:function(){var e=this,n=$.Deferred(),i=(this.viewer.dispatchEvent({type:"start_inserting_tag"}),this.adding=!0,function(){e.adding=!1,viewer.dispatchEvent({type:"endTagMove"}),e.viewer.removeEventListener("global_click",t)}),t=function(e){var t=e.intersect&&e.intersect.location;if(t)return t=Potree.Utils.datasetPosTransform({toDataset:!0,pointcloud:e.intersect.pointcloud,object:e.intersect.object,position:t}),t=new wg({title:"1",position:t,normal:e.intersect.normal,root:e.intersect.pointcloud||e.intersect.object}),i(),e.consume&&e.consume(),n.resolve(t),{stopContinue:!0}};return this.viewer.addEventListener("global_click",t,10),n.promise()}}]),i}(),xg=(new Re(0,1,0),function(){y(r,zn);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).angle=0,n.show=!1,e&&(n.dom=$(e)),n.viewport=t,n.init(),n}return A(r,[{key:"init",value:function(){var t=this,e=(this.dom||(this.dom=$('<div name="compass"></div>'),$(viewer.renderArea).append(this.dom)),this.dom.css({display:"none",position:"absolute",right:"1%",top:"60px",width:"100px",height:"100px","z-index":100,"pointer-events":"none"}),$("<div class='dirText north'><span>北</span></div><div class='center'></div>"));this.dom.append(e),this.dom.find(".dirText").css({textAlign:"center","font-size":"10px",position:"absolute",width:"100%",height:"25px","line-height":"25px"}),this.dom.find(".north").css({color:"#02a0e9",top:"0"}),this.dom.find(".south").css({color:"#ff1414",bottom:"0"}),this.dom.find(".center").css({width:"50px",height:"50px","background-size":"contain","background-position":"center",left:"50%",top:"50%",transform:"translate(-50%,-50%)",position:"absolute"}),this.dom.find(".dirText").css({"text-align":"center","font-size":"10px",color:"rgb(255, 255, 255)",position:"absolute",top:"50%",left:"50%",width:"45%",height:"0px","transform-origin":"left center"}),this.dom.find(".dirText span").css({display:"block",position:"absolute",right:"5px",top:"0",width:"20px",height:"20px","line-height":"20px","margin-top":"-10px"});try{this.renderer=new Ts({antialias:!0,alpha:!0}),this.renderer.autoClear=!0,this.renderer.setPixelRatio(window.devicePixelRatio||1),this.renderer.domElement.setAttribute("name","compass"),this.renderer.setClearAlpha(0),this.renderer.setDrawingBufferSize(50,50,window.devicePixelRatio||1)}catch(e){viewer.dispatchEvent("webglError",{msg:e})}this.dom.find(".center")[0].appendChild(this.renderer.domElement),this.renderer.domElement.style.width=this.renderer.domElement.style.height="100%",this.camera=new ma,this.camera.fov=50,this.camera.updateProjectionMatrix(),this.scene=new Ps,this.scene.add(this.camera),this.createCompass(),viewer.addEventListener("camera_changed",function(e){e.viewport==t.viewport&&(e.changeInfo.positionChanged||e.changeInfo.quaternionChanged)&&t.update()}),this.setDomPos(),this.viewport&&this.setDisplay(!0)}},{key:"createCompass",value:function(){function e(e,t,n){for(var i=[],r=0,a=e.attributes.position.count;r<a;++r)i.push(1,1,1);function o(e,t){i[3*e+0]=t[0],i[3*e+1]=t[1],i[3*e+2]=t[2]}var s=[(t[0]+n[0])/2,(t[1]+n[1])/2,(t[2]+n[2])/2];o(1,t),o(5,t),o(6,t),o(2,s),o(3,s),o(7,s),o(4,n),o(8,n),o(9,n),e.setAttribute("color",new Q(new Float32Array(i),3))}var t=new Xl(.7,2,4,!0),n=new Xl(.7,2,4,!0),i=new L({vertexColors:!0}),r=[20/255,146/255,170/255],r=(e(t,[1/255,238/255,245/255],r),e(n,r,[40/255,60/255,103/255]),new Z(t,i)),t=(r.position.setY(1),t.computeVertexNormals(),n.computeVertexNormals(),new K),r=(t.add(r),new Z(n,i));r.rotation.x=Math.PI,r.position.setY(-1),t.add(r),t.rotation.z=Math.PI,t.scale.set(.7,.7,.7),this.scene.add(t),this.cones=t}},{key:"setNorth",value:function(){var e,t=store.getters["scene/houstFloor"].floors;t&&t.length&&(t=t[0],e=app.store.getters["scene/metadata"]||{},this.angle=(t&&t.dire||0)+Be.radToDeg(parseFloat(e.floorPlanAngle||0)),this.cones.rotation.y=Math.PI/2-Be.degToRad(this.angle),this.update())}},{key:"update",value:function(e){this.show&&(e=e||this.viewport.camera.quaternion.clone(),this.updateCamera(e),this.updateLabel(e),this.render())}},{key:"updateLabel",value:function(e){var t=Be.radToDeg(this.viewport.view.yaw)-90;this.dom.find(".dirText").css("transform","rotate("+t+"deg)"),this.dom.find(".dirText span").css("transform","rotate("+-t+"deg)")}},{key:"updateCamera",value:function(e){this.camera.quaternion.copy(e);e=this.viewport.view.direction;this.camera.position.copy(e.multiplyScalar(5).negate())}},{key:"changeViewport",value:function(e){this.viewport=e,this.update()}},{key:"render",value:function(){this.renderer.render(this.scene,this.camera)}},{key:"setDisplay",value:function(e){this.show=!!e,this.show?(this.update(),this.dom.fadeIn(100)):this.dom.fadeOut(100)}},{key:"autoJudgeDisplay",value:function(){}},{key:"setDomPos",value:function(){var e;this.viewport&&(e=this.viewport.left+this.viewport.width,this.dom.css({right:100*(1-e)+1+"%"}))}}]),r}()),Eg=function(){y(n,K);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).getArrow(),e.createArrows(),e}return A(n,[{key:"getArrow",value:function(){var e=new K,t=Fv.createLine([new Re,new Re(0,0,2)]),n=new Z(new Ql(.3,.3,4)),i=(n.position.set(0,0,9),new Z(new Wl(0,.6,2,12,1,!1)));i.position.set(0,0,12),i.rotation.set(Math.PI/2,0,0),e.add(n),e.add(t),e.add(i),this.arrowGroup=e}},{key:"createArrows",value:function(){var r=this;new L({color:"#00d7df",side:2,transparent:!0,opacity:.8,depthWrite:!1});["x","y","z"].forEach(function(e){var t=(new Me).set(Potree.config.axis[e].color),n=r.arrowGroup.clone(),i=(n.children.forEach(function(e){e.material=e.material.clone(),e.material.color.copy(t)}),r.createLabel(e,t));i.position.set(0,0,16),n.add(i),"y"==e?n.rotation.x=-Math.PI/2:"x"==e&&(n.rotation.y=Math.PI/2),r.add(n)})}},{key:"createLabel",value:function(e,t){t=new qm({backgroundColor:{r:0,g:0,b:0,a:0},textColor:{r:255*t.r,g:255*t.g,b:255*t.b,a:1},fontsize:120,renderOrder:5,text:e,name:"axis"});return t.scale.set(3,3,3),t}}]),n}(),Cg={getEaseOut:function(r){var e=(r=Math.round(r))<2?(r=Math.PI/2,Cg.easeOutSine):function(e,t,n,i){return 2<r&&console.log(r),-n/Math.pow(-i,r)*Math.pow(e-i,r)+n};return{k:r,easeFun:e}},linearTween:function(e,t,n,i){return n*e/i+t},easeInQuad:function(e,t,n,i){return n*(e/=i)*e+t},easeOutQuad:function(e,t,n,i){return-n*(e/=i)*(e-2)+t},easeInOutQuad:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e+t:-n/2*(--e*(e-2)-1)+t},easeInCubic:function(e,t,n,i){return n*(e/=i)*e*e+t},easeOutCubic:function(e,t,n,i){return e/=i,n*(--e*e*e+1)+t},easeInOutCubic:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e+t:n/2*((e-=2)*e*e+2)+t},easeInQuart:function(e,t,n,i){return n*(e/=i)*e*e*e+t},easeOutQuart:function(e,t,n,i){return e/=i,-n*(--e*e*e*e-1)+t},easeInOutQuart:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e*e+t:-n/2*((e-=2)*e*e*e-2)+t},easeInQuint:function(e,t,n,i){return n*(e/=i)*e*e*e*e+t},easeOutQuint:function(e,t,n,i){return e/=i,n*(--e*e*e*e*e+1)+t},easeInOutQuint:function(e,t,n,i){return(e/=i/2)<1?n/2*e*e*e*e*e+t:n/2*((e-=2)*e*e*e*e+2)+t},easeInSine:function(e,t,n,i){return-n*Math.cos(e/i*(Math.PI/2))+n+t},easeOutSine:function(e,t,n,i){return console.log("easeOutSine"),n*Math.sin(e/i*(Math.PI/2))+t},easeInOutSine:function(e,t,n,i){return-n/2*(Math.cos(Math.PI*e/i)-1)+t},easeInExpo:function(e,t,n,i){return n*Math.pow(2,10*(e/i-1))+t},easeOutExpo:function(e,t,n,i){return n*(1-Math.pow(2,-10*e/i))+t},easeInOutExpo:function(e,t,n,i){return(e/=i/2)<1?n/2*Math.pow(2,10*(e-1))+t:(e--,n/2*(2-Math.pow(2,-10*e))+t)},easeInCirc:function(e,t,n,i){return e/=i,-n*(Math.sqrt(1-e*e)-1)+t},easeOutCirc:function(e,t,n,i){return e/=i,e--,n*Math.sqrt(1-e*e)+t},easeInOutCirc:function(e,t,n,i){return(e/=i/2)<1?-n/2*(Math.sqrt(1-e*e)-1)+t:(e-=2,n/2*(Math.sqrt(1-e*e)+1)+t)},easeInElastic:function(e,t,n,i){var r=1.70158,a=0,o=n;return 0===e?t:1==(e/=i)?t+n:(a=a||.3*i,r=o<Math.abs(n)?(o=n,a/4):a/(2*Math.PI)*Math.asin(n/o),-(o*Math.pow(2,10*--e)*Math.sin((e*i-r)*(2*Math.PI)/a))+t)},easeOutElastic:function(e,t,n,i){var r=1.70158,a=0,o=n;return 0===e?t:1==(e/=i)?t+n:(a=a||.3*i,r=o<Math.abs(n)?(o=n,a/4):a/(2*Math.PI)*Math.asin(n/o),o*Math.pow(2,-10*e)*Math.sin((e*i-r)*(2*Math.PI)/a)+n+t)},easeInOutElastic:function(e,t,n,i){var r=1.70158,a=0,o=n;return 0===e?t:2==(e/=i/2)?t+n:(a=a||i*(.3*1.5),r=o<Math.abs(n)?(o=n,a/4):a/(2*Math.PI)*Math.asin(n/o),e<1?o*Math.pow(2,10*--e)*Math.sin((e*i-r)*(2*Math.PI)/a)*-.5+t:o*Math.pow(2,-10*--e)*Math.sin((e*i-r)*(2*Math.PI)/a)*.5+n+t)},easeInBack:function(e,t,n,i,r){return n*(e/=i)*e*(((r=void 0===r?1.70158:r)+1)*e-r)+t},easeOutBack:function(e,t,n,i,r){return n*((e=e/i-1)*e*(((r=void 0===r?1.70158:r)+1)*e+r)+1)+t},easeInOutBack:function(e,t,n,i,r){return void 0===r&&(r=1.70158),(e/=i/2)<1?n/2*(e*e*((1+(r*=1.525))*e-r))+t:n/2*((e-=2)*e*((1+(r*=1.525))*e+r)+2)+t},easeOutBounce:function(e,t,n,i){return(e/=i)<1/2.75?n*(7.5625*e*e)+t:e<2/2.75?n*(7.5625*(e-=1.5/2.75)*e+.75)+t:e<2.5/2.75?n*(7.5625*(e-=2.25/2.75)*e+.9375)+t:n*(7.5625*(e-=2.625/2.75)*e+.984375)+t},easeInBounce:function(e,t,n,i){return n-Cg.easeOutBounce(i-e,0,n,i)+t},easeInOutBounce:function(e,t,n,i){return e<i/2?.5*Cg.easeInBounce(2*e,0,n,i)+t:.5*Cg.easeOutBounce(x,2*e-i,0,n,i)+.5*n+t}},Bg=function(t,n,i){var r=t.clone();return n=n.clone(),function(e){t.set(r.x*(1-e)+n.x*e,r.y*(1-e)+n.y*e,r.z*(1-e)+n.z*e),i&&i(t,e)}},_g=function(t,n,i){var r=t.clone();return function(e){t.copy(r).slerp(n,e),i&&i(t,e)}},Mg=function(t,n,i,r){var a=t[n];return function(e){t[n]=a*(1-e)+i*e,r&&r(t[n])}},Tg={globalDone:null,funcs:[],counter:0,uniqueID:0,start:function(e,t,n,i,r,a,o,s){return this.funcs.push({func:e,current:-(i=i||0)*Math.abs(t),duration:(1-Math.max(i,0))*Math.abs(t),done:n,easing:r||Cg.linearTween,cycling:t<0,running:!0,debug:i<0,name:a||"T"+this.counter,id:void 0===o?this.counter:o,paused:!1,cancelFun:s}),e(0,16),this.counter+=1,e},trigger:function(e){var t=void 0===e.delayRatio?0:e.delayRatio,n=e.func||function(){},i=void 0===e.duration?0:e.duration,r=(void 0!==e.cycling&&e.cycling&&(i=-Math.abs(i)),e.done||null),a=e.easing||Cg.linearTween,o=e.name||"R"+this.counter,e=void 0===e.id?this.counter:e.id;return this.start(n,i,r,t,a,o,e)},setTimeout:function(e,t,n){n=void 0===n?this.counter:n;return this.trigger({done:e,duration:void 0===t?0:t,name:"O"+this.counter,id:n})},pause:function(){this.paused=!0},resume:function(){this.paused=!1},update:function(n){this.funcs.forEach(function(e){var t;e.paused||(e.current+=1e3*n,e.current<0)||(e.current>=e.duration&&!e.cycling?(t=e.easing(1,0,1,1),e.func(t,1e3*n),e.done&&e.done(),e.running=!1):(t=e.easing(e.current%e.duration/e.duration,0,1,1),e.func(t,1e3*n)&&(e.done&&e.done(),e.running=!1)))});var e=this.funcs.length,t=(this.funcs=this.funcs.filter(function(e){return e.running}),this.funcs.length);0<e&&0===t&&this.globalDone&&(e=this.globalDone,this.globalDone=null,e())},adjustSpeed:function(e,t){for(var n=this.getById(e),i=0;i<n.length;i++){var r=n[i];r.duration/=t,r.current/=t}},getById:function(t){return this.funcs.filter(function(e){return t===e.id})},get:function(e){for(var t=0;t<this.funcs.length;t+=1)if(this.funcs[t].func===e)return this.funcs[t];return null},isRunning:function(e){e=this.get(e);return null!==e&&e.running},countActive:function(){for(var e=0,t=0;t<this.funcs.length;t+=1)e+=this.funcs[t].running;return e},listActive:function(){for(var e=[],t=0;t<this.funcs.length;t+=1)this.funcs[t].running&&e.push(this.funcs[t].name);return e},done:function(e){this.globalDone=e},cancelById:function(e,n){var i=void 0===e?0:e,r=[];this.funcs=this.funcs.filter(function(e){var t=e.id==i;return t&&n&&e.cancelFun&&r.push(e.cancelFun),!t}),r.forEach(function(e){e()})},cancel:function(t){this.funcs=this.funcs.filter(function(e){return e.func!==t})},getUniqueId:function(){return--this.uniqueID,this.uniqueID}},Sg=function(){function t(){te(this,t),this.position=new Re(0,0,0),this.yaw=Math.PI/4,this._pitch=-Math.PI/4,this.radius=1,this.maxPitch=Math.PI/2,this.minPitch=-Math.PI/2}return A(t,[{key:"clone",value:function(){var e=new t;return e.yaw=this.yaw,e._pitch=this.pitch,e.radius=this.radius,e.maxPitch=this.maxPitch,e.minPitch=this.minPitch,e}},{key:"pitch",get:function(){return this._pitch},set:function(e){this._pitch=Math.max(Math.min(e,this.maxPitch),this.minPitch)}},{key:"direction",get:function(){var e=new Re(0,1,0);return e.applyAxisAngle(new Re(1,0,0),this.pitch),e.applyAxisAngle(new Re(0,0,1),this.yaw),e},set:function(e){var t;0===e.x&&0===e.y?this.pitch=Math.PI/2*Math.sign(e.z):(t=Math.atan2(e.y,e.x)-Math.PI/2,e=Math.atan2(e.z,Math.sqrt(e.x*e.x+e.y*e.y)),this.yaw=t,this.pitch=e)}},{key:"lookAt",value:function(e){1===arguments.length?t=(new Re).subVectors(e,this.position):3===arguments.length&&(t=(new Re).subVectors(re(Re,Array.prototype.slice.call(arguments)),this.position));var e=t.length(),t=t.normalize();this.radius=e,this.direction=t}},{key:"getPivot",value:function(){return(new Re).addVectors(this.position,this.direction.multiplyScalar(this.radius))}},{key:"getSide",value:function(){var e=new Re(1,0,0);return e.applyAxisAngle(new Re(0,0,1),this.yaw),e}},{key:"pan",value:function(e,t){var n=new Re(0,1,0),i=(n.applyAxisAngle(new Re(1,0,0),this.pitch),n.applyAxisAngle(new Re(0,0,1),this.yaw),this.getSide()),n=i.clone().cross(n),i=i.multiplyScalar(e).add(n.multiplyScalar(t));this.position=this.position.add(i)}},{key:"translate",value:function(e,t,n){var i=new Re(0,1,0),r=(i.applyAxisAngle(new Re(1,0,0),this.pitch),i.applyAxisAngle(new Re(0,0,1),this.yaw),new Re(1,0,0)),a=(r.applyAxisAngle(new Re(0,0,1),this.yaw),r.clone().cross(i)),r=r.multiplyScalar(e).add(i.multiplyScalar(t)).add(a.multiplyScalar(n));this.position=this.position.add(r)}},{key:"translateWorld",value:function(e,t,n){this.position.x+=e,this.position.y+=t,this.position.z+=n}},{key:"setView",value:function(e,t){var n,i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,a=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,o=null,s=(e instanceof Array?o=re(Re,J(e)):null!=e.x&&(o=e.clone()),null),l=(t instanceof Array?s=re(Re,J(t)):null!=t.x&&(s=t.clone()),this.position.clone()),u=this.getPivot(),e=TWEEN.Easing.Quartic.Out;0===r?(this.position.copy(o),this.lookAt(s)):(n={x:0},(t=new TWEEN.Tween(n).to({x:1},r)).easing(e),t.onUpdate(function(){var e=n.x,t=new Re((1-e)*l.x+e*o.x,(1-e)*l.y+e*o.y,(1-e)*l.z+e*o.z),e=new Re((1-e)*u.x+e*s.x,(1-e)*u.y+e*s.y,(1-e)*u.z+e*s.z);i.position.copy(t),i.lookAt(e)}),t.start(),t.onComplete(function(){a&&a()}))}}]),t}(),Ig=0,Dg=function(){y(i,Sg);var t=C(i);function i(){var e;return te(this,i),(e=t.call(this)).yaw=0,e._pitch=0,e.sid=Ig++,e.LookTransition="LookTransition"+e.sid,e}return A(i,[{key:"applyToCamera",value:function(e){e.position.copy(this.position),e.rotation.copy(this.rotation),e.updateMatrix(),e.updateMatrixWorld()}},{key:"rotation",get:function(){var e=new ki;return e.order="ZXY",e.x=Math.PI/2+this.pitch,e.z=this.yaw,e},set:function(e){this.direction=new Re(0,0,-1).applyEuler(e)}},{key:"copy",value:function(e){ag.CopyClassObject(this,e)}},{key:"clone",value:function(){return ag.CloneClassObject(this)}},{key:"pan",value:function(e,t){this.translate(e,0,t)}},{key:"translate",value:function(e,t,n,i){var r=new Re(0,1,0),i=(r.applyAxisAngle(new Re(1,0,0),i?0:this.pitch),r.applyAxisAngle(new Re(0,0,1),this.yaw),new Re(1,0,0)),a=(i.applyAxisAngle(new Re(0,0,1),this.yaw),i.clone().cross(r)),i=i.multiplyScalar(e).add(r.multiplyScalar(t)).add(a.multiplyScalar(n));this.position=this.position.add(i),this.restrictPos()}},{key:"translateWorld",value:function(e,t,n){k(_(i.prototype),"translateWorld",this).call(this,e,t,n),this.restrictPos()}},{key:"restrictPos",value:function(){this.limitBound&&this.position.clamp(this.limitBound.min,this.limitBound.max)}},{key:"setCubeView",value:function(e){switch(e){case"front":this.yaw=0,this.pitch=0;break;case"back":this.yaw=Math.PI,this.pitch=0;break;case"left":this.yaw=-Math.PI/2,this.pitch=0;break;case"right":this.yaw=Math.PI/2,this.pitch=0;break;case"top":this.yaw=0,this.pitch=-Math.PI/2;break;case"bottom":this.yaw=-Math.PI,this.pitch=Math.PI/2}}},{key:"isFlying",value:function(){return 0<Tg.getById(this.LookTransition).length}},{key:"cancelFlying",value:function(){Tg.cancelById(this.LookTransition,!0)}},{key:"setView",value:function(){function e(){function e(){s.callback&&s.callback(),o.dispatchEvent("flyingDone")}n?o.lookAt(n):a&&(o.rotation=(new ki).setFromQuaternion(a)),s.duration?setTimeout(e,1):e()}var r,a,o=this,s=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(this.cancelFlying(),(new Re).copy(s.position)),n=(this.position.clone(),null);s.target?(n=(new Re).copy(s.target),a=ee.getQuaFromPosAim(t,n)):s.quaternion&&(a=s.quaternion.clone()),a&&(r=(new X).setFromEuler(this.rotation)),s.duration?Tg.start(Bg(this.position,t,function(e,t){var n,i=t;a&&(n=(new X).copy(r),_g(n,a)(t),o.rotation=(new ki).setFromQuaternion(n)),o.restrictPos(),s.onUpdate&&s.onUpdate(i)}),s.duration,e,0,s.Easing?Cg[s.Easing]:Cg.easeInOutSine,null,this.LookTransition,s.cancelFun):(this.position.copy(t),this.restrictPos(),s.onUpdate&&s.onUpdate(1),e())}},{key:"moveOrthoCamera",value:function(n,e,t,i){var r,a=n.camera,o=a.zoom,s=e.endPosition,l=e.boundSize,u=e.endZoom,c=e.margin||{x:0,y:0};e.bound&&(s=s||e.bound.getCenter(new Re),r=(new _e).makeRotationFromEuler(this.rotation).invert(),l=e.bound.clone().applyMatrix4(r).getSize(new Re)),l&&0==l.x&&0==l.y&&l.set(1,1),this.setView({position:s,duration:t,callback:function(){},onUpdate:function(e){var t;(l||u)&&(l&&(t=l.x/l.y,u=a.aspect>t?(t=l.y,(n.resolution.y-c.y)/t):(t=l.x,(n.resolution.x-c.x)/t)),a.zoom=u*e+o*(1-e),a.updateProjectionMatrix())},Easing:i})}},{key:"zoomOrthoCamera",value:function(n,i,e,t,r){var a=this,o=n.zoom,s=new Re(e.x,e.y,.5);Tg.start(function(e){var t=s.clone().unproject(n),e=(n.zoom=i*e+o*(1-e),n.updateProjectionMatrix(),s.clone().unproject(n)),e=(new Re).subVectors(e,t);n.position.sub(e),a.position.copy(n.position),r&&r()},t,null,0,Cg.easeInOutSine,null,"zoomInView")}}]),i}(),Pg=(Object.assign(Dg.prototype,zn.prototype),function(){y(n,Yf);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).annotations=new zm,e.scene=new Ps,e.sceneBG=new Ps,e.scenePointCloud=new Ps,e.cameraP=new ma(e.fov,1,.1,1e6),e.cameraO=new mh(-1,1,1,-1,.1,1e6),e.cameraVR=new ma,e.cameraBG=new fa,e.cameraScreenSpace=new mh(-1,1,1,-1,.1,10),e.cameraMode=am.PERSPECTIVE,e.overrideCamera=null,e.pointclouds=[],e.measurements=[],e.profiles=[],e.volumes=[],e.polygonClipVolumes=[],e.cameraAnimations=[],e.orientedImages=[],e.images360=[],e.geopackages=[],e.fpControls=null,e.orbitControls=null,e.earthControls=null,e.geoControls=null,e.deviceControls=null,e.inputHandler=null,e.view=new Dg,e.directionalLight=null,e.initialize(),e}return A(n,[{key:"estimateHeightAt",value:function(e){var t,n=null,i=1/0,r=q(this.pointclouds);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(void 0!==a.root.geometryNode){for(var o=null,s=1/0,l=e.clone().sub(a.position),u=(l.z=0,new Bi(l,new Re(0,0,1))),c=[a.root];0<c.length;){var h=c.pop(),d=h.getBoundingBox();if(u.intersectBox(d)){var p=h.geometryNode.mean.z+a.position.z+h.geometryNode.boundingBox.min.z;h.geometryNode.spacing<=s&&(o=p,s=h.geometryNode.spacing);for(var f=0,m=Object.keys(h.children);f<m.length;f++){var v=m[f];h.children[v].geometryNode&&c.push(h.children[v])}}}(null===n||s<i)&&(n=o,i=s)}}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"getBoundingBox",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:this.pointclouds,n=new Y,i=(this.scenePointCloud.updateMatrixWorld(!0),this.referenceFrame.updateMatrixWorld(!0),q(t));try{for(i.s();!(e=i.n()).done;){var r=e.value,a=(r.updateMatrixWorld(!0),r.pcoGeometry.tightBoundingBox||r.boundingBox),o=ie.computeTransformedBoundingBox(a,r.matrixWorld);n.union(o)}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"addPointCloud",value:function(e){this.pointclouds.push(e),this.scenePointCloud.add(e),this.dispatchEvent({type:"pointcloud_added",pointcloud:e})}},{key:"addVolume",value:function(e){this.volumes.push(e),this.dispatchEvent({type:"volume_added",scene:this,volume:e})}},{key:"addOrientedImages",value:function(e){this.orientedImages.push(e),this.scene.add(e.node),this.dispatchEvent({type:"oriented_images_added",scene:this,images:e})}},{key:"removeOrientedImages",value:function(e){var t=this.orientedImages.indexOf(e);-1<t&&(this.orientedImages.splice(t,1),this.dispatchEvent({type:"oriented_images_removed",scene:this,images:e}))}},{key:"add360Images",value:function(e){this.images360.push(e),this.scene.add(e.node),this.dispatchEvent({type:"360_images_added",scene:this,images:e})}},{key:"remove360Images",value:function(e){var t=this.images360.indexOf(e);-1<t&&(this.images360.splice(t,1),this.dispatchEvent({type:"360_images_removed",scene:this,images:e}))}},{key:"addGeopackage",value:function(e){this.geopackages.push(e),this.scene.add(e.node),this.dispatchEvent({type:"geopackage_added",scene:this,geopackage:e})}},{key:"removeGeopackage",value:function(e){var t=this.geopackages.indexOf(e);-1<t&&(this.geopackages.splice(t,1),this.dispatchEvent({type:"geopackage_removed",scene:this,geopackage:e}))}},{key:"removeVolume",value:function(e){var t=this.volumes.indexOf(e);-1<t&&(this.volumes.splice(t,1),this.dispatchEvent({type:"volume_removed",scene:this,volume:e}))}},{key:"addCameraAnimation",value:function(e){this.cameraAnimations.push(e),this.dispatchEvent({type:"camera_animation_added",scene:this,animation:e})}},{key:"removeCameraAnimation",value:function(e){var t=this.cameraAnimations.indexOf(volume);-1<t&&(this.cameraAnimations.splice(t,1),this.dispatchEvent({type:"camera_animation_removed",scene:this,animation:e}))}},{key:"addPolygonClipVolume",value:function(e){this.polygonClipVolumes.push(e),this.dispatchEvent({type:"polygon_clip_volume_added",scene:this,volume:e})}},{key:"removePolygonClipVolume",value:function(e){var t=this.polygonClipVolumes.indexOf(e);-1<t&&(this.polygonClipVolumes.splice(t,1),this.dispatchEvent({type:"polygon_clip_volume_removed",scene:this,volume:e}))}},{key:"addMeasurement",value:function(e){e.lengthUnit=this.lengthUnit,e.lengthUnitDisplay=this.lengthUnitDisplay,this.measurements.push(e),this.dispatchEvent({type:"measurement_added",scene:this,measurement:e})}},{key:"removeMeasurement",value:function(e){var t=this.measurements.indexOf(e);-1<t&&(this.measurements.splice(t,1),this.dispatchEvent({type:"measurement_removed",scene:this,measurement:e}))}},{key:"addProfile",value:function(e){this.profiles.push(e),this.dispatchEvent({type:"profile_added",scene:this,profile:e})}},{key:"removeProfile",value:function(e){var t=this.profiles.indexOf(e);-1<t&&(this.profiles.splice(t,1),this.dispatchEvent({type:"profile_removed",scene:this,profile:e}))}},{key:"removeAllMeasurements",value:function(){for(;0<this.measurements.length;)this.removeMeasurement(this.measurements[0]);for(;0<this.profiles.length;)this.removeProfile(this.profiles[0]);for(;0<this.volumes.length;)this.removeVolume(this.volumes[0])}},{key:"removeAllClipVolumes",value:function(){var e,t=q(this.volumes.filter(function(e){return!0===e.clip}));try{for(t.s();!(e=t.n()).done;){var n=e.value;this.removeVolume(n)}}catch(e){t.e(e)}finally{t.f()}for(;0<this.polygonClipVolumes.length;)this.removePolygonClipVolume(this.polygonClipVolumes[0])}},{key:"getActiveCamera",value:function(){return this.overrideCamera||(this.cameraMode===am.PERSPECTIVE?this.cameraP:this.cameraMode===am.ORTHOGRAPHIC?this.cameraO:this.cameraMode===am.VR?this.cameraVR:null)}},{key:"initialize",value:function(){this.referenceFrame=new K,this.referenceFrame.matrixAutoUpdate=!1,this.scenePointCloud.add(this.referenceFrame),this.cameraP.up.set(0,0,1),this.cameraP.position.set(1e3,1e3,1e3),this.cameraO.up.set(0,0,1),this.cameraO.position.set(1e3,1e3,1e3),this.cameraScreenSpace.lookAt(new Re(0,0,0),new Re(0,0,-1),new Re(0,1,0)),this.directionalLight=new gh(16777215,.5),this.directionalLight.position.set(10,10,10),this.directionalLight.lookAt(new Re(0,0,0)),this.scenePointCloud.add(this.directionalLight);var e=new Ah(5592405),e=(this.scenePointCloud.add(e),ie.createBackgroundTexture(512,512)),e=(e.minFilter=e.magFilter=ut,e.minFilter=e.magFilter=U,new Z(new Ba(2,2,1),new L({map:e})));e.material.depthTest=!1,e.material.depthWrite=!1,this.sceneBG.add(e)}},{key:"addAnnotation",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=(e instanceof Array?t.position=(new Re).fromArray(e):null!=e.x&&(t.position=e),new zm(t));return this.annotations.add(e),e}},{key:"getAnnotations",value:function(){return this.annotations}},{key:"removeAnnotation",value:function(e){this.annotations.remove(e)}}]),n}()),kg=function(){y(n,Pg);var t=C(n);function n(){var e;return te(this,n),delete(e=t.call(this)).sceneBG,e.cameraP=new ma(e.fov,1,Potree.config.view.near,Potree.config.view.near),e.cameraO=new mh(-1,1,1,-1,Potree.config.view.near,Potree.settings.cameraFar),e.cameraP.limitFar=!0,e.initializeExtend(),e.axisArrow=new Eg,e.scene.add(e.axisArrow),Potree.settings.isDebug||(e.axisArrow.visible=!1),viewer.setObjectLayers(e.axisArrow,"bothMapAndScene"),e.tags=new K,e.scene.add(e.tags),e}return A(n,[{key:"estimateHeightAt",value:function(e){var t,n=null,i=1/0,r=q(this.pointclouds);try{for(r.s();!(t=r.n()).done;){var a=t.value;if(void 0!==a.root.geometryNode){for(var o=null,s=1/0,l=e.clone().sub(a.position),u=(l.z=0,new Bi(l,new Re(0,0,1))),c=[a.root];0<c.length;){var h=c.pop(),d=h.getBoundingBox();if(u.intersectBox(d)){var p=h.geometryNode.mean.z+a.position.z+h.geometryNode.boundingBox.min.z;h.geometryNode.spacing<=s&&(o=p,s=h.geometryNode.spacing);for(var f=0,m=Object.keys(h.children);f<m.length;f++){var v=m[f];h.children[v].geometryNode&&c.push(h.children[v])}}}(null===n||s<i)&&(n=o,i=s)}}}catch(e){r.e(e)}finally{r.f()}return n}},{key:"removePointCloud",value:function(e){var t=this.pointclouds.indexOf(e);-1!=t&&(this.pointclouds.splice(t,1),this.scenePointCloud.remove(e),e.panos.forEach(function(e){e.dispose()}))}},{key:"removeCameraAnimation",value:function(e){var t=this.cameraAnimations.indexOf(e);-1<t&&(this.cameraAnimations.splice(t,1),this.dispatchEvent({type:"camera_animation_removed",scene:this,animation:e}))}},{key:"getActiveCamera",value:function(){return viewer.mainViewport.camera}},{key:"initialize",value:function(){}},{key:"initializeExtend",value:function(){this.referenceFrame=new K,this.referenceFrame.matrixAutoUpdate=!1,this.scenePointCloud.add(this.referenceFrame),window.axisYup||(this.cameraP.up.set(0,0,1),this.cameraO.up.set(0,0,1)),this.cameraP.position.set(1e3,1e3,1e3),this.cameraO.position.set(1e3,1e3,1e3),this.cameraScreenSpace.lookAt(new Re(0,0,0),new Re(0,0,-1),new Re(0,1,0)),this.directionalLight=new gh(16777215,.5),this.directionalLight.position.set(10,10,10),this.directionalLight.lookAt(new Re(0,0,0)),this.scenePointCloud.add(this.directionalLight);var e=new Ah(5592405),e=(this.scenePointCloud.add(e),new Ah(16777215,1)),e=(viewer.setObjectLayers(e,"bothMapAndScene"),this.scene.add(e),new gh(16777215,1)),e=(e.position.set(10,10,10),e.lookAt(new Re(0,0,0)),viewer.setObjectLayers(e,"bothMapAndScene"),this.scene.add(e),ie.createBackgroundTexture(512,512)),e=(e.minFilter=e.magFilter=ut,e.minFilter=e.magFilter=U,new Z(new Ba(2,2,1),new L({map:e}))),e=(e.material.depthTest=!1,e.material.depthWrite=!1,e.name="bg",this.scene.add(e),e.layers.set(Potree.config.renderLayers.bg),new Z(new Ba(2,2,1),new L({transparent:!0})));e.material.depthTest=!1,e.material.depthWrite=!1,e.name="bg2",this.scene.add(e),e.layers.set(Potree.config.renderLayers.bg2),this.bg2=e}}]),n}();function Lg(e,t){var n;if(t===ot)return e.REPEAT;if(t===st)return e.CLAMP_TO_EDGE;if(t===lt)return e.MIRRORED_REPEAT;if(t===ut)return e.NEAREST;if(1004===t)return e.NEAREST_MIPMAP_NEAREST;if(1005===t)return e.NEAREST_MIPMAP_LINEAR;if(t===U)return e.LINEAR;if(1007===t)return e.LINEAR_MIPMAP_NEAREST;if(t===ft)return e.LINEAR_MIPMAP_LINEAR;if(t===mt)return e.UNSIGNED_BYTE;if(t===Et)return e.UNSIGNED_SHORT_4_4_4_4;if(t===Ct)return e.UNSIGNED_SHORT_5_5_5_1;if(t===Bt)return e.UNSIGNED_SHORT_5_6_5;if(t===vt)return e.BYTE;if(t===gt)return e.SHORT;if(t===At)return e.UNSIGNED_SHORT;if(t===yt)return e.INT;if(t===wt)return e.UNSIGNED_INT;if(t===bt)return e.FLOAT;if(t===xt&&null!==(n=extensions.get("OES_texture_half_float")))return n.HALF_FLOAT_OES;if(t===Mt)return e.ALPHA;if(t===Tt)return e.RGB;if(t===St)return e.RGBA;if(t===It)return e.LUMINANCE;if(t===Dt)return e.LUMINANCE_ALPHA;if(t===kt)return e.DEPTH_COMPONENT;if(t===Lt)return e.DEPTH_STENCIL;if(t===Ee)return e.FUNC_ADD;if(t===Ce)return e.FUNC_SUBTRACT;if(t===Te)return e.FUNC_REVERSE_SUBTRACT;if(t===De)return e.ZERO;if(t===Pe)return e.ONE;if(t===ke)return e.SRC_COLOR;if(t===Fe)return e.ONE_MINUS_SRC_COLOR;if(t===Oe)return e.SRC_ALPHA;if(t===Ne)return e.ONE_MINUS_SRC_ALPHA;if(t===Ge)return e.DST_ALPHA;if(t===Ue)return e.ONE_MINUS_DST_ALPHA;if(t===ze)return e.DST_COLOR;if(t===He)return e.ONE_MINUS_DST_COLOR;if(t===Qe)return e.SRC_ALPHA_SATURATE;if((t===zt||t===RGBA_S3TC_DXT1_Format||t===Qt||t===RGBA_S3TC_DXT5_Format)&&null!==(n=extensions.get("WEBGL_compressed_texture_s3tc"))){if(t===zt)return n.COMPRESSED_RGB_S3TC_DXT1_EXT;if(t===Ht)return n.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(t===Qt)return n.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(t===Vt)return n.COMPRESSED_RGBA_S3TC_DXT5_EXT}if((t===jt||t===Wt||t===Jt||t===qt)&&null!==(n=extensions.get("WEBGL_compressed_texture_pvrtc"))){if(t===jt)return n.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(t===Wt)return n.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(t===Jt)return n.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(t===qt)return n.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}if(t===Xt&&null!==(n=extensions.get("WEBGL_compressed_texture_etc1")))return n.COMPRESSED_RGB_ETC1_WEBGL;if((t===Se||t===Ie)&&null!==(n=extensions.get("EXT_blend_minmax"))){if(t===Se)return n.MIN_EXT;if(t===Ie)return n.MAX_EXT}return t===UnsignedInt248Type&&null!==(n=extensions.get("WEBGL_depth_texture"))?n.UNSIGNED_INT_24_8_WEBGL:0}Object.assign(kg.prototype,zn.prototype);var Rg,Fg,Og,Ng,Gg,Ug,zg,Hg,Qg,Vg,jg,Wg,Jg,qg,Xg,Yg,Kg,Zg,$g={position:{name:"position",location:0},color:{name:"color",location:1},rgba:{name:"color",location:1},intensity:{name:"intensity",location:2},classification:{name:"classification",location:3},returnNumber:{name:"returnNumber",location:4},"return number":{name:"returnNumber",location:4},returns:{name:"returnNumber",location:4},numberOfReturns:{name:"numberOfReturns",location:5},"number of returns":{name:"numberOfReturns",location:5},pointSourceID:{name:"pointSourceID",location:6},"source id":{name:"pointSourceID",location:6},"point source id":{name:"pointSourceID",location:6},indices:{name:"indices",location:7},normal:{name:"normal",location:8},spacing:{name:"spacing",location:9},"gps-time":{name:"gpsTime",location:10},aExtra:{name:"aExtra",location:11}},eA=function(){function r(e,t,n,i){te(this,r),this.gl=e,this.name=t,this.vsSource=n,this.fsSource=i,this.cache=new Map,this.vs=null,this.fs=null,this.program=null,this.uniformLocations={},this.attributeLocations={},this.uniformBlockIndices={},this.uniformBlocks={},this.uniforms={},this.update(n,i)}return A(r,[{key:"update",value:function(e,t){this.vsSource=e,this.fsSource=t,this.linkProgram()}},{key:"compileShader",value:function(e,t){var n=this.gl;if(n.shaderSource(e,t),n.compileShader(e),!n.getShaderParameter(e,n.COMPILE_STATUS))throw n=n.getShaderInfoLog(e),e=t.split("\n").map(function(e,t){return"".concat(t+1).padEnd(5)+e}).join("\n"),"could not compile shader ".concat(this.name,": ").concat(n,", \n").concat(e)}},{key:"linkProgram",value:function(){performance.now();var e=this.gl,t=(this.uniformLocations={},this.attributeLocations={},this.uniforms={},e.useProgram(null),this.cache.get("".concat(this.vsSource,", ").concat(this.fsSource)));if(t)this.program=t.program,this.vs=t.vs,this.fs=t.fs,this.attributeLocations=t.attributeLocations,this.uniformLocations=t.uniformLocations,this.uniformBlocks=t.uniformBlocks,this.uniforms=t.uniforms;else if(this.vs=e.createShader(e.VERTEX_SHADER),this.fs=e.createShader(e.FRAGMENT_SHADER),this.program=e.createProgram(),e.isProgram(this.program)){for(var n=0,i=Object.keys($g);n<i.length;n++){var r=i[n],a=$g[r].location,r=$g[r].name;e.bindAttribLocation(this.program,a,r)}this.compileShader(this.vs,this.vsSource),this.compileShader(this.fs,this.fsSource);var o=this.program;if(e.attachShader(o,this.vs),e.attachShader(o,this.fs),e.linkProgram(o),e.detachShader(o,this.vs),e.detachShader(o,this.fs),!e.getProgramParameter(o,e.LINK_STATUS))throw t=e.getProgramInfoLog(o),"could not link program ".concat(this.name,": ").concat(t);for(var s=e.getProgramParameter(o,e.ACTIVE_ATTRIBUTES),l=0;l<s;l++){var u=e.getActiveAttrib(o,l),c=e.getAttribLocation(o,u.name);this.attributeLocations[u.name]=c}for(var h=e.getProgramParameter(o,e.ACTIVE_UNIFORMS),d=0;d<h;d++){var p=e.getActiveUniform(o,d),f=e.getUniformLocation(o,p.name);this.uniformLocations[p.name]=f,this.uniforms[p.name]={location:f,value:null}}if("undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext)for(var m=e.getProgramParameter(o,e.ACTIVE_UNIFORM_BLOCKS),v=0;v<m;v++){var g=e.getActiveUniformBlockName(o,v),A=e.getUniformBlockIndex(o,g),y=(this.uniformBlockIndices[g]=A,e.uniformBlockBinding(o,A,A),e.getActiveUniformBlockParameter(o,A,e.UNIFORM_BLOCK_DATA_SIZE)),w=e.createBuffer();e.bindBuffer(e.UNIFORM_BUFFER,w),e.bufferData(e.UNIFORM_BUFFER,y,e.DYNAMIC_READ),e.bindBufferBase(e.UNIFORM_BUFFER,A,w),e.bindBuffer(e.UNIFORM_BUFFER,null),this.uniformBlocks[g]={name:g,index:A,dataSize:y,buffer:w}}t={program:this.program,vs:this.vs,fs:this.fs,attributeLocations:this.attributeLocations,uniformLocations:this.uniformLocations,uniforms:this.uniforms,uniformBlocks:this.uniformBlocks};this.cache.set("".concat(this.vsSource,", ").concat(this.fsSource),t);performance.now()}else viewer.dispatchEvent("webglError",{msg:"potreeRenderer创建program失败"}),console.log(this.vs),console.log(this.fs)}},{key:"setUniformMatrix4",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&(t=new Float32Array(t.elements),n.uniformMatrix4fv(e,!1,t))}},{key:"setUniform1f",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1f(e.location,t))}},{key:"setUniformBoolean",value:function(e,t){var n=this.gl,e=this.uniforms[e];void 0!==e&&e.value!==t&&(e.value=t,n.uniform1i(e.location,t))}},{key:"setUniformTexture",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}},{key:"setUniform2f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform2f(e,t[0],t[1])}},{key:"setUniform3f",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform3f(e,t[0],t[1],t[2])}},{key:"setUniform",value:function(e,t){t.constructor===_e?this.setUniformMatrix4(e,t):"number"==typeof t?this.setUniform1f(e,t):"boolean"==typeof t?this.setUniformBoolean(e,t):t instanceof tA?this.setUniformTexture(e,t):t instanceof Array?2===t.length?this.setUniform2f(e,t):3===t.length&&this.setUniform3f(e,t):console.error("unhandled uniform type: ",e,t)}},{key:"setUniform1i",value:function(e,t){var n=this.gl,e=this.uniformLocations[e];null!=e&&n.uniform1i(e,t)}}]),r}(),tA=function(){function n(e,t){te(this,n),this.gl=e,this.texture=t,this.id=e.createTexture(),this.target=e.TEXTURE_2D,this.version=-1,this.update(t)}return A(n,[{key:"update",value:function(){var e,t,n,i,r,a,o,s;this.texture.image?(e=this.gl,t=this.texture,this.version!==t.version&&(this.target=e.TEXTURE_2D,e.bindTexture(this.target,this.id),n=Lg(e,t.format),i=t.image.width,r=t.image.height,a=n,o=Lg(e,t.type),e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,t.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,t.unpackAlignment),t instanceof ya?(s=t.image.data,e.texParameteri(this.target,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,Lg(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,Lg(e,t.minFilter)),e.texImage2D(this.target,0,n,i,r,0,a,o,s)):(t instanceof Fl||t instanceof Xn)&&(s=t.image,e.texParameteri(this.target,e.TEXTURE_WRAP_S,Lg(e,t.wrapS)),e.texParameteri(this.target,e.TEXTURE_WRAP_T,Lg(e,t.wrapT)),e.texParameteri(this.target,e.TEXTURE_MAG_FILTER,Lg(e,t.magFilter)),e.texParameteri(this.target,e.TEXTURE_MIN_FILTER,Lg(e,t.minFilter)),e.texImage2D(this.target,0,n,n,o,s),t instanceof Xn)&&e.generateMipmap(e.TEXTURE_2D),e.bindTexture(this.target,null),this.version=t.version)):this.version=this.texture.version}}]),n}(),nA=A(function e(){te(this,e),this.numElements=0,this.vao=null,this.vbos=new Map}),iA=function(){function t(e){te(this,t),this.threeRenderer=e,this.gl=this.threeRenderer.getContext(),this.buffers=new Map,this.shaders=new Map,this.textures=new Map,this.glTypeMapping=new Map,this.glTypeMapping.set(Float32Array,this.gl.FLOAT),this.glTypeMapping.set(Uint8Array,this.gl.UNSIGNED_BYTE),this.glTypeMapping.set(Uint16Array,this.gl.UNSIGNED_SHORT),this.toggle=0}return A(t,[{key:"deleteBuffer",value:function(e){var t=this.gl,n=this.buffers.get(e);if(null!=n){for(var i in e.attributes)t.deleteBuffer(n.vbos.get(i).handle);this.buffers.delete(e)}}},{key:"createBuffer",value:function(n){var e,i=this,t=this.gl,r=new nA;for(e in r.vao=t.createVertexArray(),r.numElements=n.attributes.position.count,t.bindVertexArray(r.vao),n.attributes){var a,o=n.attributes[e],s=t.createBuffer(),l=(t.bindBuffer(t.ARRAY_BUFFER,s),t.bufferData(t.ARRAY_BUFFER,o.array,t.STATIC_DRAW),o.normalized),u=this.glTypeMapping.get(o.array.constructor);void 0!==$g[e]&&(a=$g[e].location,t.vertexAttribPointer(a,o.itemSize,u,l,0,0),t.enableVertexAttribArray(a)),r.vbos.set(e,{handle:s,name:e,count:o.count,itemSize:o.itemSize,type:n.attributes.position.array.constructor,version:0})}return t.bindBuffer(t.ARRAY_BUFFER,null),t.bindVertexArray(null),n.addEventListener("dispose",function e(t){i.deleteBuffer(n),n.removeEventListener("dispose",e)}),r}},{key:"updateBuffer",value:function(e){var t,n=this.gl,i=this.buffers.get(e);for(t in n.bindVertexArray(i.vao),e.attributes){var r=e.attributes[t],a=r.normalized,o=this.glTypeMapping.get(r.array.constructor),s=null;i.vbos.has(t)?(s=i.vbos.get(t).handle,i.vbos.get(t).version=r.version):(s=n.createBuffer(),i.vbos.set(t,{handle:s,name:t,count:r.count,itemSize:r.itemSize,type:e.attributes.position.array.constructor,version:r.version})),n.bindBuffer(n.ARRAY_BUFFER,s),n.bufferData(n.ARRAY_BUFFER,r.array,n.STATIC_DRAW),void 0!==$g[t]&&(s=$g[t].location,n.vertexAttribPointer(s,r.itemSize,o,a,0,0),n.enableVertexAttribArray(s))}n.bindBuffer(n.ARRAY_BUFFER,null),n.bindVertexArray(null)}},{key:"traverse",value:function(e){for(var t=[],n=[e];0<n.length;){var i=n.pop();i instanceof Zf?t.push(i):(i=i.children.filter(function(e){return e.visible}),n.push.apply(n,J(i)))}return{octrees:t}}},{key:"renderNodes",value:function(L,e,R,t,n,F,i){var O,N=this,G=(W.measureTimings&&performance.mark("renderNodes-start"),this.gl),U=i.material||L.material,z=null==i.shadowMaps?[]:i.shadowMaps,H=t.matrixWorldInverse,Q=(i.viewOverride&&(H=i.viewOverride),new _e),V=new Float32Array(16),j=0,r=q(e);try{for(r.s();!(O=r.n()).done;)(function(){var e=O.value;if(void 0!==W.debug.allowedNodes&&!W.debug.allowedNodes.includes(e.name))return;for(var t=e.sceneNode.matrixWorld,n=(Q.multiplyMatrices(H,t),R&&(n=R.offsets.get(e),F.setUniform1f("uVNStart",n)),e.getLevel()),i=(e.debug?F.setUniform("uDebug",!0):F.setUniform("uDebug",!1),F.uniformLocations.modelMatrix),i=(i&&(V.set(t.elements),G.uniformMatrix4fv(i,!1,V)),F.uniformLocations.modelViewMatrix),r=0;r<16;r++)V[r]=Q.elements[r];if(G.uniformMatrix4fv(i,!1,V),U.clipPolygons&&0<U.clipPolygons.length){var a,o=[],s=[],l=q(U.clipPolygons);try{for(l.s();!(a=l.n()).done;){var u=a.value,c=u.viewMatrix,h=u.projMatrix.clone().multiply(c).multiply(t);o.push(u.markers.length),s.push(h)}}catch(e){l.e(e)}finally{l.f()}for(var i=(i=[]).concat.apply(i,J(s.map(function(e){return e.elements}))),d=new Array(24*U.clipPolygons.length),p=0;p<U.clipPolygons.length;p++)for(var f=U.clipPolygons[p],m=0;m<f.markers.length;m++)d[24*p+(3*m+0)]=f.markers[m].position.x,d[24*p+(3*m+1)]=f.markers[m].position.y,d[24*p+(3*m+2)]=f.markers[m].position.z;var v=F.uniformLocations["uClipPolygonVCount[0]"],v=(G.uniform1iv(v,o),F.uniformLocations["uClipPolygonWVP[0]"]),v=(G.uniformMatrix4fv(v,!1,i),F.uniformLocations["uClipPolygonVertices[0]"]);G.uniform3fv(v,d)}if(F.setUniform1f("uLevel",n),F.setUniform1f("uNodeSpacing",e.geometryNode.estimatedSpacing),F.setUniform1f("uPCIndex",j),0<z.length){var i=F.uniformLocations["uShadowMap[0]"],g=(F.setUniform3f("uShadowColor",U.uniforms.uShadowColor.value),new Array(z.length).fill(5).map(function(e,t){return e+t}));G.uniform1iv(i,g);for(var A=0;A<z.length;A++){var y=z[A],w=g[A],y=N.threeRenderer.properties.get(y.target.texture).__webglTexture;G.activeTexture(G["TEXTURE".concat(w)]),G.bindTexture(G.TEXTURE_2D,y)}v=z.map(function(e){return e.camera.matrixWorldInverse}).map(function(e){return(new _e).multiplyMatrices(e,t)}),i=(n=[]).concat.apply(n,J(v.map(function(e){return e.elements}))),n=F.uniformLocations["uShadowWorldView[0]"];G.uniformMatrix4fv(n,!1,i);n=(v=[]).concat.apply(v,J(z.map(function(e){return e.camera.projectionMatrix.elements}))),i=F.uniformLocations["uShadowProj[0]"];G.uniformMatrix4fv(i,!1,n)}var b=e.geometryNode.geometry,i=(b.attributes["gps-time"]&&(b.attributes["gps-time"],T=(n=(i=(v=L.getAttribute("gps-time")).initialRange)[1]-i[0])/(v=(e=v.range)[1]-e[0]),i=-(e[0]-i[0])/n,T=Number.isNaN(T)?1:T,i=Number.isNaN(i)?0:i,F.setUniform1f("uGpsScale",T),F.setUniform1f("uGpsOffset",i),T=[((n=U.uniforms.uFilterGPSTimeClipRange.value)[0]-e[0])/v,(n[1]-e[0])/v],F.setUniform2f("uFilterGPSTimeClipRange",T)),U.uniforms.uFilterReturnNumberRange.value),n=U.uniforms.uFilterNumberOfReturnsRange.value,e=U.uniforms.uFilterPointSourceIDClipRange.value,x=(F.setUniform2f("uFilterReturnNumberRange",i),F.setUniform2f("uFilterNumberOfReturnsRange",n),F.setUniform2f("uFilterPointSourceIDClipRange",e),null);if(N.buffers.has(b))for(var E in x=N.buffers.get(b),b.attributes)b.attributes[E].version>x.vbos.get(E).version&&N.updateBuffer(b);else x=N.createBuffer(b),N.buffers.set(b,x);if(G.bindVertexArray(x.vao),void 0===$g[U.activeAttributeName]&&Object.keys(b.attributes).includes(U.activeAttributeName)){var C,B=$g.aExtra.location;for(C in b.attributes){b.attributes[C];var _=x.vbos.get(C);G.bindBuffer(G.ARRAY_BUFFER,_.handle),G.disableVertexAttribArray(B)}var M=U.activeAttributeName,v=b.attributes[M],T=x.vbos.get(M),e=(void 0!==v&&void 0!==T&&(i=N.glTypeMapping.get(v.array.constructor),n=v.normalized,G.bindBuffer(G.ARRAY_BUFFER,T.handle),G.vertexAttribPointer(B,v.itemSize,i,n,0,0),G.enableVertexAttribArray(B)),L.pcoGeometry.pointAttributes.attributes.find(function(e){return e.name===M})),T=(T=U.getRange(M))||e.range,v=e.initialRange,i=v[1]-v[0],n=T=T||[0,1],e=i/(n[1]-n[0]),T=-(n[0]-v[0])/i,e=Number.isNaN(e)?1:e,T=Number.isNaN(T)?0:T;F.setUniform1f("uExtraScale",e),F.setUniform1f("uExtraOffset",T)}else for(var S in b.attributes){var I,D,P=b.attributes[S],k=x.vbos.get(S);void 0!==$g[S]&&(S=$g[S].location,I=N.glTypeMapping.get(P.array.constructor),D=P.normalized,G.bindBuffer(G.ARRAY_BUFFER,k.handle),G.vertexAttribPointer(S,P.itemSize,I,D,0,0),G.enableVertexAttribArray(S))}n=x.numElements;G.drawArrays(G.POINTS,0,n),j++})()}catch(e){r.e(e)}finally{r.f()}G.bindVertexArray(null),W.measureTimings&&(performance.mark("renderNodes-end"),performance.measure("render.renderNodes","renderNodes-start","renderNodes-end"))}},{key:"renderOctree",value:function(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{},a=this.gl,o=r.material||e.material,s=null==r.shadowMaps?[]:r.shadowMaps,l=n.matrixWorldInverse,u=n.matrixWorld,c=(r.viewOverride&&(u=(l=r.viewOverride).clone().invert()),n.projectionMatrix),h=c.clone().invert(),d=null,p=null,f=0;0<=o.pointSizeType&&(o.pointSizeType!==cm.ADAPTIVE&&"level of detail"!==o.activeAttributeName||(m=null!=r.vnTextureNodes?r.vnTextureNodes:t,p=e.computeVisibilityTextureData(m,n),(m=o.visibleNodesTexture).image.data.set(p.data),m.needsUpdate=!0));this.shaders.has(o)||(m=[o.vertexShader,o.fragmentShader],m=new eA(a,"pointcloud",m[0],m[1]),this.shaders.set(o,m)),d=this.shaders.get(o);var m=[o.vertexShader,o.fragmentShader],v=m[0],m=m[1],g=o.snapEnabled?o.numSnapshots:0,A=o.clipBoxes_in&&o.clipBoxes_in.length?o.clipBoxes_in.length:0,y=o.clipBoxes_out&&o.clipBoxes_out.length?o.clipBoxes_out.length:0,w=o.highlightBoxes&&o.highlightBoxes.length?o.highlightBoxes.length:0,b=r.clipSpheres&&r.clipSpheres.length?r.clipSpheres.length:0,s=(o.clipPolygons&&o.clipPolygons.length&&o.clipPolygons.length,["#define num_shadowmaps ".concat(s.length),"#define num_snapshots ".concat(g),"#define num_in_clipboxes ".concat(A),"#define num_out_clipboxes ".concat(y),"#define num_highlightBox ".concat(w),"#define num_clipspheres ".concat(b)]),A=(o.bigClipInBox&&s.push("#define bigClipInBox"),o.usePanoMap&&s.push("#define usePanoMap"),o.useFilterByNormal&&s.push("#define use_filter_by_normal"),e.pcoGeometry.root.isLoaded()&&((g=e.pcoGeometry.root.geometry.attributes)["gps-time"]&&s.push("#define clip_gps_enabled"),g["return number"]&&s.push("#define clip_return_number_enabled"),g["number of returns"]&&s.push("#define clip_number_of_returns_enabled"),g["source id"]||g["point source id"])&&s.push("#define clip_point_source_id_enabled"),s.join("\n")),y=v.indexOf("#version "),w=m.indexOf("#version "),v=0<=y?v.replace(/(#version .*)/,"$1\n".concat(A)):"".concat(A,"\n").concat(v),m=0<=w?m.replace(/(#version .*)/,"$1\n".concat(A)):"".concat(A,"\n").concat(m);d.update(v,m),o.needsUpdate=!1;for(var x=0,E=Object.keys(o.uniforms);x<E.length;x++){var C=E[x],B=o.uniforms[C];"t"==B.type&&(B=B.value)&&"pano0Map"!=C&&"pano1Map"!=C&&(this.textures.has(B)||(C=new tA(a,B),this.textures.set(B,C)),this.textures.get(B).update())}a.useProgram(d.program);if((void 0!==r.transparent?r.transparent&&o.opacity<1:!o.usePanoMap&&(o.useFilterByNormal||o.opacity<1))?(a.enable(a.BLEND),r.notAdditiveBlending?(a.blendFuncSeparate(a.SRC_ALPHA,a.ONE_MINUS_SRC_ALPHA,a.ONE,a.ONE_MINUS_SRC_ALPHA),a.enable(a.DEPTH_TEST),a.depthMask(!0)):(a.blendFunc(a.SRC_ALPHA,a.ONE),a.disable(a.DEPTH_TEST),a.depthMask(!1))):(a.disable(a.BLEND),a.depthMask(!0),a.enable(a.DEPTH_TEST)),void 0!==r.blendFunc&&(a.enable(a.BLEND),a.blendFunc.apply(a,J(r.blendFunc))),void 0!==r.depthTest&&(!0===r.depthTest?a.enable(a.DEPTH_TEST):a.disable(a.DEPTH_TEST)),void 0!==r.depthWrite&&(!0===r.depthWrite?a.depthMask(!0):a.depthMask(!1)),d.setUniformMatrix4("projectionMatrix",c),d.setUniformMatrix4("viewMatrix",l),d.setUniformMatrix4("uViewInv",u),d.setUniformMatrix4("uProjInv",h),d.setUniform2f("resolution",o.resolution.toArray()),d.setUniform1f("fov",Math.PI*n.fov/180),d.setUniform1f("near",n.near),d.setUniform1f("far",n.far),n instanceof mh?(d.setUniform("uUseOrthographicCamera",!0),d.setUniform("uOrthoWidth",(n.right-n.left)/n.zoom),d.setUniform("uOrthoHeight",n.top-n.bottom)):d.setUniform("uUseOrthographicCamera",!1),o.clipBoxes_in&&0<o.clipBoxes_in.length&&(b=d.uniformLocations["clipBoxes_in[0]"],a.uniformMatrix4fv(b,!1,o.uniforms.clipBoxes_in.value)),o.clipBoxes_out&&0<o.clipBoxes_out.length&&(g=d.uniformLocations["clipBoxes_out[0]"],a.uniformMatrix4fv(g,!1,o.uniforms.clipBoxes_out.value)),o.highlightBoxes&&0<o.highlightBoxes.length&&(s=d.uniformLocations["boxes_highlight[0]"],a.uniformMatrix4fv(s,!1,o.uniforms.boxes_highlight.value)),o.bigClipInBox&&d.setUniformMatrix4("clipBoxBig_in",o.uniforms.clipBoxBig_in.value),r.clipSpheres&&0<r.clipSpheres.length){var _,M=[],T=q(r.clipSpheres);try{for(T.s();!(_=T.n()).done;){var S=_.value.matrixWorld,R=n.matrixWorld,F=S.clone().invert(),O=(new _e).multiplyMatrices(F,R);M.push(O)}}catch(e){T.e(e)}finally{T.f()}w=(y=[]).concat.apply(y,J(M.map(function(e){return e.elements}))),A=d.uniformLocations["uClipSpheres[0]"];a.uniformMatrix4fv(A,!1,w)}d.setUniform1f("size",o.usePanoMap?Potree.config.material.absolutePanoramaSize*Math.min(window.devicePixelRatio,2):o.size),d.setUniform1f("maxSize",o.uniforms.maxSize.value),d.setUniform1f("minSize",o.uniforms.minSize.value),d.setUniform1f("uOctreeSpacing",o.spacing),d.setUniform("uOctreeSize",o.uniforms.octreeSize.value),d.setUniform3f("uColor",o.color.toArray()),d.setUniform1f("uOpacity",o.usePanoMap?1:o.opacity),d.setUniform2f("elevationRange",o.elevationRange),d.setUniform2f("intensityRange",o.intensityRange),d.setUniform3f("uIntensity_gbc",[o.intensityGamma,o.intensityBrightness,o.intensityContrast]),d.setUniform3f("uRGB_gbc",[o.rgbGamma,o.rgbBrightness,o.rgbContrast]),d.setUniform1f("uTransition",o.transition),d.setUniform1f("wRGB",o.weightRGB),d.setUniform1f("wIntensity",o.weightIntensity),d.setUniform1f("wElevation",o.weightElevation),d.setUniform1f("wClassification",o.weightClassification),d.setUniform1f("wReturnNumber",o.weightReturnNumber),d.setUniform1f("wSourceID",o.weightSourceID),d.setUniform("backfaceCulling",o.uniforms.backfaceCulling.value);v=this.textures.get(o.visibleNodesTexture),v&&(d.setUniform1i("visibleNodesTexture",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(v.target,v.id),f++),m=this.textures.get(o.gradientTexture),d.setUniform1i("gradient",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(m.target,m.id),c=o.elevationGradientRepeat,c===lm.REPEAT?(a.texParameteri(m.target,a.TEXTURE_WRAP_S,a.REPEAT),a.texParameteri(m.target,a.TEXTURE_WRAP_T,a.REPEAT)):c===lm.MIRRORED_REPEAT?(a.texParameteri(m.target,a.TEXTURE_WRAP_S,a.MIRRORED_REPEAT),a.texParameteri(m.target,a.TEXTURE_WRAP_T,a.MIRRORED_REPEAT)):(a.texParameteri(m.target,a.TEXTURE_WRAP_S,a.CLAMP_TO_EDGE),a.texParameteri(m.target,a.TEXTURE_WRAP_T,a.CLAMP_TO_EDGE)),f++,l=this.textures.get(o.classificationTexture),d.setUniform1i("classificationLUT",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(l.target,l.id),f++,u=this.textures.get(o.matcapTexture);if(d.setUniform1i("matcapTextureUniform",f),a.activeTexture(a.TEXTURE0+f),a.bindTexture(u.target,u.id),f++,!0===o.snapEnabled){var h=d.uniformLocations["uSnapshot[0]"],b=d.uniformLocations["uSnapshotDepth[0]"],g=f,I=new Array(5).fill(g).map(function(e,t){return e+t}),D=new Array(5).fill(1+Math.max.apply(Math,J(I))).map(function(e,t){return e+t}),f=1+Math.max.apply(Math,J(D));a.uniform1iv(h,I),a.uniform1iv(b,D);for(var P=0;P<5;P++){var k=o.uniforms.uSnapshot.value[P],L=o.uniforms.uSnapshotDepth.value[P];if(!k)break;var k=this.threeRenderer.properties.get(k).__webglTexture,L=this.threeRenderer.properties.get(L).__webglTexture,N=I[P],G=D[P];a.activeTexture(a["TEXTURE".concat(N)]),a.bindTexture(a.TEXTURE_2D,k),a.activeTexture(a["TEXTURE".concat(G)]),a.bindTexture(a.TEXTURE_2D,L)}y=(s=[]).concat.apply(s,J(o.uniforms.uSnapView.value.map(function(e){return e.elements}))),A=d.uniformLocations["uSnapView[0]"];a.uniformMatrix4fv(A,!1,y);v=(w=[]).concat.apply(w,J(o.uniforms.uSnapProj.value.map(function(e){return e.elements}))),c=d.uniformLocations["uSnapProj[0]"];a.uniformMatrix4fv(c,!1,v);l=(m=[]).concat.apply(m,J(o.uniforms.uSnapProjInv.value.map(function(e){return e.elements}))),u=d.uniformLocations["uSnapProjInv[0]"];a.uniformMatrix4fv(u,!1,l);h=(g=[]).concat.apply(g,J(o.uniforms.uSnapViewInv.value.map(function(e){return e.elements}))),b=d.uniformLocations["uSnapViewInv[0]"];a.uniformMatrix4fv(b,!1,h)}o.usePanoMap&&(d.setUniform1f("progress",o.uniforms.progress.value),d.setUniform1f("easeInOutRatio",o.uniforms.easeInOutRatio.value),d.setUniform3f("pano0Position",o.uniforms.pano0Position.value.toArray()),d.setUniform3f("pano1Position",o.uniforms.pano1Position.value.toArray()),d.setUniform("pano0Matrix",o.uniforms.pano0Matrix.value),d.setUniform("pano1Matrix",o.uniforms.pano1Matrix.value),(s=o.uniforms.pano0Map.value)&&(this.threeRenderer._textures.safeSetTextureCube(s,++f),d.setUniform1i("pano0Map",f)),A=o.uniforms.pano1Map.value)&&(this.threeRenderer._textures.safeSetTextureCube(A,++f),d.setUniform1i("pano1Map",f)),this.renderNodes(e,t,p,n,i,d,r),a.activeTexture(a.TEXTURE2),a.bindTexture(a.TEXTURE_2D,null),a.activeTexture(a.TEXTURE0),a.disable(a.BLEND),a.depthMask(!0),a.enable(a.DEPTH_TEST)}},{key:"render",value:function(e,n){var t,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},a=this.gl,e=(null!=i&&this.threeRenderer.setRenderTarget(i),this.traverse(e)),o=(Potree.settings.notAdditiveBlending&&(e.octrees.forEach(function(e){var t;1==e.material.opacity?e._z=1/0:((t=e.boundCenter?e.boundCenter.clone():e.boundingBox.getCenter(e.boundCenter).applyMatrix4(e.matrixWorld)).project(n),e._z=t.z)}),e.octrees.sort(function(e,t){return t._z-e._z})),q(e.octrees));try{for(o.s();!(t=o.n()).done;){var s=t.value,l=s.visibleNodes;this.renderOctree(s,l,n,i,r)}}catch(e){o.e(e)}finally{o.f()}a.activeTexture(a.TEXTURE1),a.bindTexture(a.TEXTURE_2D,null),a.bindBuffer(a.ARRAY_BUFFER,null),a.bindVertexArray(null),this.threeRenderer.resetState()}}]),t}(),rA=function(){y(n,lv);var t=C(n);function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return te(this,n),delete(e=t.call(this,e)).uniforms.screenWidth,delete e.uniforms.screenHeight,e.uniforms.resolution={type:"v2",value:new Le},e.uniforms.useEDL={type:"i",value:1},e.vertexShader=e.getDefines()+nm["edl_new.vs"],e.fragmentShader=e.getDefines()+nm["edl_new.fs"],e}return A(n)}(),aA=function(){function t(e){te(this,t),this.viewer=e,this.edlMaterial=null,this.rtEDLs=new Map,this.gl=e.renderer.getContext(),e.addEventListener("resize",this.resize.bind(this)),this.initEDL(e)}return A(t,[{key:"initEDL",value:function(e){null==this.edlMaterial&&(this.edlMaterial=new rA,this.edlMaterial.depthTest=!0,this.edlMaterial.depthWrite=!0,this.edlMaterial.transparent=!0)}},{key:"resize",value:function(e){Qf.EXT_DEPTH.isSupported()&&(e=e.viewport,this.getRtEDL(e).setSize(e.resolution.x,e.resolution.y))}},{key:"clearTargets",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=this.viewer.renderer,n=t.getRenderTarget();e.target&&(t.setRenderTarget(e.target),t.clear()),Qf.EXT_DEPTH.isSupported()&&(e.rtEDL?(t.setRenderTarget(e.rtEDL),t.clear()):(e=this.getRtEDL(e.viewport))&&(t.setRenderTarget(e),t.clear(!0,!0,!0))),t.setRenderTarget(n)}},{key:"getRtEDL",value:function(e){e||(console.warn("getRtEDL没传viewport!!!! !!!!!!!!!!"),e=viewer.mainViewport);var t=this.rtEDLs.get(e);return t||Qf.EXT_DEPTH.isSupported()&&(t=new Zn(e.resolution.x,e.resolution.y,{minFilter:ut,magFilter:ut,format:St,type:bt,depthTexture:new Ol(void 0,void 0,wt)}),this.rtEDLs.set(e,t)),t}},{key:"renderShadowMap",value:function(e,t,n){var i=this.viewer;if(0<n.length&&!n[0].disableShadowUpdates){var r,n=n[0],a=(this.shadowMap.setLight(n),new Map),o=q(i.scene.pointclouds);try{for(o.s();!(r=o.n()).done;){var s=r.value;a.set(s,s.material.activeAttributeName),s.material.disableEvents(),s.material.activeAttributeName="depth"}}catch(e){o.e(e)}finally{o.f()}this.shadowMap.render(i.scene.scenePointCloud,t);var l,u=q(e);try{for(u.s();!(l=u.n()).done;){var c=l.value,h=a.get(c);c.material.activeAttributeName=h,c.material.enableEvents()}}catch(e){u.e(e)}finally{u.f()}i.shadowTestCam.updateMatrixWorld(),i.shadowTestCam.matrixWorldInverse.copy(i.shadowTestCam.matrixWorld).invert(),i.shadowTestCam.updateProjectionMatrix()}}},{key:"render",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=this.viewer,n=e.camera||t.scene.getActiveCamera(),i=e.viewport?e.viewport.resolution:this.viewer.renderer.getSize(new Le),r=[];if((t.renderer.setRenderTarget(e.target||null),!e.magnifier)&&(t.setCameraLayers(n,["skybox"]),"showPanos"==Potree.settings.displayMode&&t.images360.currentPano.pointcloud.hasDepthTex&&Qf.EXT_DEPTH.isSupported()&&(l=!0,t.renderer.setRenderTarget(e.rtEDL||this.getRtEDL(e.viewport)),t.renderer.render(t.scene.scene,n),t.renderer.setRenderTarget(e.target||null)),t.renderer.render(t.scene.scene,n),l))return;var a,o,s,l=t.scene.pointclouds.filter(function(e){return t.getObjVisiByReason(e,"datasetSelection")}),u=e.magnifier?0<l.length:t.scene.pointclouds.some(function(e){return e.visible}),c=(l.forEach(function(e){e.oldVisi=e.visible,e.visible=!0}),t.setCameraLayers(n,["pointcloud"]),n.layers.set(Potree.config.renderLayers.pointcloud),q(l));try{for(c.s();!(a=c.n()).done;){var h=a.value,d=h.material,p=h.pcoGeometry.boundingBox.getSize(new Re).x;d.fov=Be.degToRad(n.fov),d.resolution=i,d.spacing=h.pcoGeometry.spacing,d.near=n.near,d.far=n.far,d.uniforms.octreeSize.value=p,t.useEDL&&"showPanos"!=Potree.settings.displayMode?d.useEDL=!0:d.useEDL=!1}}catch(e){c.e(e)}finally{c.f()}Qf.EXT_DEPTH.isSupported()&&!e.dontRenderRtEDL&&(t.renderer.setRenderTarget(e.rtEDL||this.getRtEDL(e.viewport)),0<l.length&&t.pRenderer.render(t.scene.scenePointCloud,n,e.rtEDL||this.getRtEDL(e.viewport),{shadowMaps:0<r.length?[this.shadowMap]:null,clipSpheres:t.scene.volumes.filter(function(e){return e instanceof pf}),transparent:!1}),Potree.settings.intersectOnObjs)&&(n.layers.set(Potree.config.renderLayers.model),t.objs.traverse(function(e){e.material&&(e._OlddepthWrite=e.material.depthWrite,e.material.depthWrite=!0)}),t.renderer.render(t.scene.scene,n),t.objs.traverse(function(e){e.material&&(e.material.depthWrite=e._OlddepthWrite)})),t.dispatchEvent({type:"render.pass.scene",viewer:t}),t.renderer.setRenderTarget(e.target||null),e.magnifier||l.forEach(function(e){e.visible=e.oldVisi}),u&&(t.useEDL?((u=this.edlMaterial.uniforms).resolution.value.copy(i),u.edlStrength.value=t.edlStrength,u.radius.value=t.edlRadius,u.useEDL.value=1,s=n.projectionMatrix,(o=new Float32Array(16)).set(s.elements),u.uProj.value=o,u.uEDLColor.value=(e.rtEDL||this.getRtEDL(e.viewport)).texture,u.opacity.value=t.edlOpacity,ie.screenPass.render(t.renderer,this.edlMaterial,e.target)):(s={shadowMaps:0<r.length?[this.shadowMap]:null,clipSpheres:t.scene.volumes.filter(function(e){return e instanceof pf}),notAdditiveBlending:Potree.settings.notAdditiveBlending},t.pRenderer.render(t.scene.scenePointCloud,n,null,s))),l.forEach(function(e){e.visible=e.oldVisi})}}]),t}(),oA=new Nc,sA=(oA.crossOrigin="anonymous",new Re),lA=new gr(0,1,2),uA=new gr(2,3,0),cA=((Zu=new L({transparent:!0,depthWrite:!1,depthTest:!0,opacity:1,side:ve})).color=new Me(3355443),Zu),od=new Le(0,0),nd=new Le(0,1),Yd=new Le(1,0),ql=new Le(1,1),hA=[od,Yd,ql],dA=[ql,nd,od],pA=function(){y(r,zn);var i=C(r);function r(e,t){te(this,r),(n=i.call(this)).sceneGroup=new K,n.sceneGroup.name="MapLayer",n.loadingInProgress=0,n.maps=[],n.frustum=new xa,n.frustumMatrix=new _e,n.tileColor=new Me(16777215),n.viewport=t,n.changeViewer(e);var n,t=new vA(G(n),n.tileColor);return n.addMap(t),n}return A(r,[{key:"addMapEntity",value:function(e,t){if(e&&e[0])return(e=new gA(this,this.tileColor,e[0]))&&(e.name+="_"+t,this.addMap(e),e.updateProjection(),e.updateObjectGroup(),(t in Potree.settings.floorplanEnables?Potree.settings.floorplanEnables[t]:Potree.settings.floorplanEnable)?this.needUpdate=!0:e.setEnable(!1),this.dispatchEvent({type:"floorplanLoaded",floorplan:e})),e;Potree.Log("平面图无数据","red")}},{key:"getFloorplan",value:function(t){return this.maps.find(function(e){return e.name=="floorplan_"+t})}},{key:"addMap",value:function(e){this.maps.push(e),this.needUpdate=!0}},{key:"removeMap",value:function(e){var t=this.maps.indexOf(e);0<=t&&(e.removeFromSceneGroup(this.sceneGroup),this.maps.splice(t,1)),this.needUpdate=!0,this.viewer.dispatchEvent({type:"content_changed"})}},{key:"changeViewer",value:function(e){this.viewer=e}},{key:"initProjection",value:function(){this.maps.forEach(function(e){e.updateProjection(),e.updateObjectGroup()})}},{key:"visibilityChanged",value:function(){if(!this.visible)for(var e=0,t=this.maps;e<t.length;e++)t[e].removeFromSceneGroup(this.sceneGroup)}},{key:"onAfterRenderViewport",value:function(e){}},{key:"update",value:function(){if(this.needUpdate=!1,!this.disabled&&this.maps.find(function(e){return!e.disabled})&&this.maps.find(function(e){return e.objectGroup.visible})){var e,t,n;for(this.updateTimer=void 0,(t=(e=this.viewport.camera).projectionMatrix.clone()).elements[0]/=1.5,t.elements[5]/=1.5,this.frustumMatrix.multiplyMatrices(t,e.matrixWorldInverse),this.frustum.setFromProjectionMatrix(this.frustumMatrix),this.frustum.planes[4].setComponents(0,0,0,0),this.frustum.planes[5].setComponents(0,0,0,0),i=!0,n=0;n<this.maps.length;n++)var i=this.maps[n].update(this.frustum,this.sceneGroup)&&i;return[2,i]}}},{key:"getAttributions",value:function(){for(var e={},t=0,n=this.maps;t<n.length;t++)n[t].fillAttributions(e);return e}},{key:"updateProjection",value:function(){for(var e=0,t=this.maps;e<t.length;e++){var n=t[e];n.clearProjection(),n.updateObjectGroup()}}}]),r}(),fA=function(){y(o,zn);var a=C(o);function o(e,t,n,i){var r;return te(this,o),(r=a.call(this)).name=e,r.mapLayer=t,r.tileColor=n,r.bias=0,r.zIndex=-1,r.objectGroup=new K,r.objectGroup.name=e,r.objectGroupAdded=!1,r.baseTile=new mA(G(r),r.objectGroup,r.tileColor),r.isTileVisibleBox=new Y,r.isTileVisibleVec=new Re,r.projection=i,r._zoomLevel=0,r}return A(o,[{key:"zoomLevel",get:function(){return this._zoomLevel},set:function(e){this._zoomLevel!=e&&(this._zoomLevel=e)}},{key:"updateObjectGroup",value:function(){this.position&&this.objectGroup.position.copy(this.position),this.quaternion&&this.objectGroup.quaternion.copy(this.quaternion),this.objectGroup.updateMatrixWorld(!0)}},{key:"updateProjection",value:function(){this.transformMapToLocal||proj4.defs("NAVVIS:TMERC")&&("EPSG:4550"==this.projection?this.transformMapToLocal={forward:function(e){e=viewer.transform.lonlatTo4550.inverse(e);return viewer.transform.lonlatToLocal.forward(e)}}:this.transformMapToLocal=proj4(this.projection,"NAVVIS:TMERC"))}},{key:"setEnable",value:function(e){!this.disabled!=e&&(e&&console.log("setEnable",!0),this.disabled=!e,viewer.updateVisible(this.objectGroup,"setEnable",e),e?this.mapLayer.needUpdate=!0:this.baseTile.remove(),this.mapLayer.viewer.dispatchEvent({type:"content_changed"}))}},{key:"update",value:function(e,t){var n=this.disabled||!this.objectGroup.visible;if(("map"==this.name||!n)&&(this.updateProjection(),this.transformMapToLocal)){if(!this.isTileVisible(new Re(0,0,0),this.mapSizeM,e))return this.removeFromSceneGroup(t),!0;var i=this.mapLayer.viewport,r=new Re(-.5*this.mapSizeM,0,0),a=(r.applyMatrix4(this.objectGroup.matrixWorld),r.project(i.camera),new Re(.5*this.mapSizeM,0,0)),o=(a.applyMatrix4(this.objectGroup.matrixWorld),a.project(i.camera),i.resolution.x),i=i.resolution.y;if(o<=0||i<=0||isNaN(r.x)||isNaN(a.x))return!1;r.sub(a),r.x*=o/2,r.y*=i/2;a=this.tileSizePx/r.length(),o=Math.ceil(-Math.log(a)/Math.log(2)-this.bias),o=Math.max(o,0);return o=Math.min(o,void 0===this.maxDepth?1/0:this.maxDepth),this.zoomLevel=o,n?void 0:(this.addToSceneGroup(t),this.baseTile.update(this,e,o,this.mapSizeM,0,0,""))}}},{key:"isTileVisible",value:function(e,t,n){return 21e6<t||(t=.5*t,this.transformMapToLocal.forward(e),this.isTileVisibleBox.makeEmpty(),this.isTileVisibleVec.set(e.x-t,e.y-t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),this.isTileVisibleVec.set(e.x-t,e.y+t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),this.isTileVisibleVec.set(e.x+t,e.y-t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),this.isTileVisibleVec.set(e.x+t,e.y+t,e.z).applyMatrix4(this.objectGroup.matrixWorld),this.isTileVisibleBox.expandByPoint(this.isTileVisibleVec),n.intersectsBox(this.isTileVisibleBox))}},{key:"addToSceneGroup",value:function(e){this.objectGroupAdded||(e.add(this.objectGroup),this.objectGroupAdded=!0)}},{key:"removeFromSceneGroup",value:function(e){this.baseTile.remove(),this.objectGroupAdded&&(e.remove(this.objectGroup),this.objectGroupAdded=!1)}}]),o}(),mA=function(){function f(e,t,n){te(this,f),this.map=e,this.objectGroup=t,this.tileColor=n,this.meshAdded=!1,this.textureLoaded=!1,this.children=[]}return A(f,[{key:"update",value:function(e,t,n,i,r,a,o){return!!this.doesNotContainTilesToBeDisplayed(e)||(0===n?this.updateTile(e,i,r,a):this.updateSubTiles(e,t,n,i,r,a,o))}},{key:"doesNotContainTilesToBeDisplayed",value:function(e){return e.tilePresenceMap&&e.tilePresenceMap.empty}},{key:"updateTile",value:function(e,t,n,i){return this.mesh||this.createTileObject(e,t,n,i),this.meshAdded||(this.objectGroup.add(this.mesh),this.meshAdded=!0),this.textureLoaded&&this.removeChildren(),this.textureLoaded}},{key:"updateSubTiles",value:function(e,t,n,i,r,a,o){for(var s=!0,l=[-.25*i,.25*i,-.25*i,.25*i],u=[.25*i,.25*i,-.25*i,-.25*i],c=0;c<4;++c){var h,d,p=o+c.toString(10);e.tilePresenceMap&&!e.tilePresenceMap[p]||(sA.set(h=r+l[c],d=a+u[c],0),e.isTileVisible(sA,.5*i,t)?(this.children[c]||(this.children[c]=new f(this.map,this.objectGroup,this.tileColor)),s=this.children[c].update(e,t,n-1,.5*i,h,d,p)&&s):this.children[c]&&(this.children[c].remove(),delete this.children[c]))}return s&&this.removeObject3D(),s}},{key:"createTileObject",value:function(e,t,n,i){function r(){a.map.mapLayer.loadingInProgress--,0==a.map.mapLayer.loadingInProgress&&a.map.mapLayer.dispatchEvent("loadDone")}var a=this,o=(this.mesh=this.createMesh(e.transformMapToLocal,t,n,i),this.textureLoaded=!1,e.mapSizeM/t),s=Math.log(o)/Math.log(2),n=n/t+.5*(o-1),i=-i/t+.5*(o-1),t=e.getTileUrl(Math.round(s),Math.round(n),Math.round(i)),o=(viewer.setObjectLayers(this.mesh,"map"),this.mesh.renderOrder=-(1e6-s-100*(e.zIndex||0)),this.mesh.material);o.map=oA.load(t,function(e){a.mesh?(a.textureLoaded=!0,a.mesh.material.opacity=1,a.map.mapLayer.viewer.dispatchEvent({type:"content_changed"}),a.map.mapLayer.needUpdate=!0):e.dispose(),r()},void 0,function(){a.textureLoaded=!0,a.mesh&&(a.mesh.material.dispose(),a.mesh.material=cA,a.map.mapLayer.viewer.dispatchEvent({type:"content_changed"})),r()}),o.map.anisotropy=0,o.map.generateMipmaps=!1,o.map.minFilter=U,o.map.magFilter=U,this.map.mapLayer.loadingInProgress++}},{key:"createMesh",value:function(e,t,n,i){var r=new Hl;return sA.set(n-t/2,i-t/2,0),r.vertices.push((new Re).copy(e.forward(sA))),sA.set(n+t/2,i-t/2,0),r.vertices.push((new Re).copy(e.forward(sA))),sA.set(n+t/2,i+t/2,0),r.vertices.push((new Re).copy(e.forward(sA))),sA.set(n-t/2,i+t/2,0),r.vertices.push((new Re).copy(e.forward(sA))),r.faces.push(lA),r.faces.push(uA),r.faceVertexUvs[0].push(hA),r.faceVertexUvs[0].push(dA),new Z(r,this.createMaterial())}},{key:"createMaterial",value:function(){var e=new L({transparent:!0,depthWrite:!1,depthTest:!0,opacity:0,side:ve});return e.color=this.tileColor||new Me(16777215),e}},{key:"remove",value:function(){this.removeObject3D(),this.removeChildren()}},{key:"removeObject3D",value:function(){var e;this.mesh&&(this.objectGroup.remove(this.mesh),this.textureLoaded&&(e=this.mesh.material.map)&&e.dispose(),this.mesh.material.dispose(),this.mesh.geometry.dispose(),this.mesh=void 0),this.meshAdded=!1,this.textureLoaded=!1}},{key:"removeChildren",value:function(){for(var e=0,t=this.children;e<t.length;e++){var n=t[e];n&&(n.removeObject3D(),n.removeChildren())}this.children.length=0}}]),f}(),vA=(proj4.defs("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"),function(){y(i,fA);var n=C(i);function i(e,t){return te(this,i),(e=n.call(this,"map",e,t,"EPSG:3857")).baseUrl="https://wprd04.is.autonavi.com/appmaptile?lang=zh_cn&style=7&x=${x}&y=${y}&z=${z}",e.attribution="© PopSmart, © 高德地图",e.tileSizePx=256,e.mapSizeM=40075017,e.maxDepth=19,e.bias=.5,e}return A(i,[{key:"getTileUrl",value:function(e,t,n){return this.baseUrl.replace(/\${z}/,e.toString(10)).replace(/\${x}/,t.toString(10)).replace(/\${y}/,n.toString(10))}},{key:"fillAttributions",value:function(e){e[this.attribution]={score:50}}}]),i}()),gA=function(){y(r,fA);var i=C(r);function r(e,t,n){te(this,r);t=(e=i.call(this,"floorplan",e,t,"NAVVIS:TMERC")).tiledMapEntity=e.fillFromData(n),n=t.updateTime||t.createTime;return e.tileSizePx=t.tileSizePx,e.mapSizeM=t.mapSizeM,e.maxDepth=t.maxDepth,e.postStamp=n?n.replace(/[^0-9]/gi,""):(new Date).getTime(),e.zIndex=0,e.tilePresenceMap=e.decodeBitStream(e.tiledMapEntity.quadtree),e}return A(r,[{key:"fillFromData",value:function(e){var t={};return t.id=e.id,t.globalLocation=Potree.Utils.VectorFactory.fromArray3(e.location),t.orientation=Potree.Utils.QuaternionFactory.fromArray(e.orientation),t.filePath="".concat(Potree.settings.urls.prefix1).concat(e.file_path),t.fileName="$DEPTH/$X/$Y.png",t.type=e.type,t.mapSizeM=e.map_size_m,t.tileSizePx=e.tile_size_px,t.maxDepth=e.max_depth,t.quadtree=e.quadtree,t.floorId=e.floor_id,t.bundleId=e.bundle_id,t}},{key:"computeLocalCoordinates",value:function(){proj4.defs("NAVVIS:TMERC")&&(this.tiledMapEntity.location=(new Re).copy(viewer.transform.lonlatToLocal.forward(this.tiledMapEntity.globalLocation)))}},{key:"updateProjection",value:function(){k(_(r.prototype),"updateProjection",this).call(this),this.position||this.computeLocalCoordinates()}},{key:"position",get:function(){return this.tiledMapEntity.location}},{key:"quaternion",get:function(){return this.tiledMapEntity.orientation}},{key:"getTileUrl",value:function(e,t,n){return(this.tiledMapEntity.filePath+"/"+this.tiledMapEntity.fileName).replace(/\$DEPTH/g,e.toString(10)).replace(/\$X/g,t.toString(10)).replace(/\$Y/g,n.toString(10))+("?t="+this.postStamp)}},{key:"fillAttributions",value:function(e){e.NavVis={score:100}}},{key:"decodeBitStream",value:function(e){if(!e)return{empty:!0};for(var t={},n=[t],i=0;i<e.length;i++){var r,a=n.shift(),o=parseInt(e.substr(i,1),16);1&o&&(a[0]=r={},n.push(r)),2&o&&(a[1]=r={},n.push(r)),4&o&&(a[2]=r={},n.push(r)),8&o&&(a[3]=r={},n.push(r))}var s={empty:!0};return this.computeHashes(s,t,""),s}},{key:"computeHashes",value:function(e,t,n){for(var i=0;i<4;i++)t[i]&&(e[n+i.toString(10)]=!0,e.empty=!1,this.computeHashes(e,t[i],n+i.toString(10)))}}]),r}(),AA=Potree.defines.Buttons,yA=function(){y(o,zn);var e=C(o);function o(c,a){function t(e){h.dollyStart.subVectors(e.touches[0].pointer,e.touches[1].pointer)}function n(e){var t,n,i,r;h.pointerDragStart=e.pointer.clone(),"mainViewer"==e.viewer.name&&(t=e.intersect||e.dragViewport.lastIntersect,(n=Potree.settings.rotAroundPoint&&"OrthographicCamera"!=e.dragViewport.camera.type&&(0==c.atDatasets.length||t)&&h.canMovePos(a)&&!c.images360.isAtPano()&&!h.viewer.inputHandler.pressedKeys[32])&&((r="target"==(r=h.target?"target":0<c.atDatasets.length?"intersect":c.inputHandler.selection.length?"selection":"boundCenter")?h.target:"intersect"==r?t.location:"selection"==r?c.inputHandler.selection[0].position:c.bound.center)?i=r.clone().project(e.dragViewport.camera):n=!1),h.rotateStartInfo={rotAroundPoint:n,rotCenter:r,rotCenter2d:i})}function i(e){h.pointerDragStart=e.pointer.clone(),e.drag.z=void 0,r(e)}te(this,o),(h=e.call(this)).viewer=c,h.renderer=c.renderer,h.scene=c.scene,h.rotationSpeed=200,h.moveSpeed=10,h.setCurrentViewport({hoverViewport:a,force:!0}),h.keys={FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39],UP:["Q".charCodeAt(0)],DOWN:["E".charCodeAt(0)],ALT:[18],Rotate_LEFT:["L".charCodeAt(0)],Rotate_RIGHT:["J".charCodeAt(0)],Rotate_UP:["K".charCodeAt(0)],Rotate_DOWN:["I".charCodeAt(0)]},h.fadeFactor=20,h.yawDelta=0,h.pitchDelta=0,h.translationDelta=new Re(0,0,0),h.translationWorldDelta=new Re(0,0,0),h.tweens=[],h.dollyStart=new Le,h.dollyEnd=new Le,h.viewer.addEventListener("camera_changed",function(e){("mapViewer"==h.viewer.name||e.changeInfo&&e.changeInfo.positionChanged&&!c.mainViewport.view.isFlying())&&h.setFPCMoveSpeed(e.viewport)});var h,r=function(e){if(h.enabled){var t=e.dragViewport;if(t){var n=t.camera,i=e.isTouch?1==e.touches.length?e.dragViewport&&"MainView"!=e.dragViewport.name?"pan":"rotate":2==e.touches.length||e.dragViewport&&"MainView"!=e.dragViewport.name?"scale":"pan":e.buttons===AA.LEFT&&"OrthographicCamera"!=n.type?"rotate":"pan";h.currentViewport.getMoveSpeed();if(void 0===e.drag.startHandled&&(e.drag.startHandled=!0,h.dispatchEvent({type:"start"})),i.includes("rotate")){if(!h.pointerDragStart)return h.pointerDragStart=e.pointer.clone();var r=h.scene.view;h.rotateStartInfo.rotAroundPoint?(u=n.position.distanceTo(h.rotateStartInfo.rotCenter),1<h.rotateStartInfo.rotCenter2d.z&&(u*=-1),h.yawDelta-=2*e.drag.pointerDelta.x,h.pitchDelta+=2*e.drag.pointerDelta.y,h.update(),r.applyToCamera(n),u=c.inputHandler.getMouseDirection(h.rotateStartInfo.rotCenter2d).direction.clone().multiplyScalar(u),u=(new Re).addVectors(n.position,u),u=(new Re).subVectors(u,h.rotateStartInfo.rotCenter),h.translationWorldDelta.copy(u.negate()),h.update(),r.applyToCamera(n)):(u=n.matrixWorld,n.matrixWorld=new _e,r=new Re(h.pointerDragStart.x,h.pointerDragStart.y,-1).unproject(n),o=new Re(e.pointer.x,e.pointer.y,-1).unproject(n),s=Math.sqrt(r.x*r.x+r.z*r.z),l=Math.sqrt(o.x*o.x+o.z*o.z),s=Math.atan2(r.y,s),l=Math.atan2(o.y,l),h.pitchDelta+=s-l,r.y=0,o.y=0,s=Math.acos(r.dot(o)/r.length()/o.length()),isNaN(s)||(l=s,h.pointerDragStart.x>e.pointer.x&&(l*=-1),h.yawDelta+=l),h.pointerDragStart.copy(e.pointer),n.matrixWorld=u)}if(i.includes("pan")){if(!h.canMovePos(t))return;if("OrthographicCamera"==n.type){var a,r=ie.getOrthoCameraMoveVec(e.drag.pointerDelta,n),o=window.viewer.modules.Alignment,s=window.viewer.modules.MergeEditor,l=o.handleState,u=e.buttons===AA.LEFT&&t.alignment&&l&&t.alignment[l];if("pano"==Potree.settings.editType){var o=window.viewer.modules.PanoEditor;if(u&&o.selectedPano&&(o.selectedGroup&&o.checkIfAllLinked({group:o.selectedGroup})?(o.dispatchEvent("needToDisConnect"),console.warn("选中的漫游点连通了整个数据集,不允许移动")):("translate"==l&&(e.drag.intersectStart.pointclouds&&ag.getMixedSet(o.selectedClouds,e.drag.intersectStart.pointclouds).length||o.selectedPano.hovered)||"rotate"==l)&&(a=o.selectedClouds)),!a&&e.buttons===AA.LEFT&&t.rotateSide)return o.rotateSideCamera(-e.drag.pointerDelta.x)}else if("merge"==Potree.settings.editType){if(e.buttons===AA.LEFT&&t.rotateSide)return s.rotateSideCamera(-e.drag.pointerDelta.x)}else a=u&&e.drag.intersectStart.pointcloud&&[e.drag.intersectStart.pointcloud];a?("translate"==l&&t.alignment.translateVec&&r.projectOnVector(t.alignment.translateVec),h.dispatchEvent({type:"transformPointcloud",intersect:e.intersect.orthoIntersect,intersectStart:e.drag.intersectStart.orthoIntersect,moveVec:r,pointclouds:a,camera:n})):h.translationWorldDelta.add(r.negate())}else e.drag.intersectStart?(null==e.drag.z&&(o=e.drag.intersectStart.location.clone().project(n),e.drag.z=o.z,e.drag.projectionMatrixInverse=n.projectionMatrixInverse.clone(),s=new Re(h.pointerDragStart.x,h.pointerDragStart.y,e.drag.z),e.drag.translateStartPos=s.clone().unproject(n)),u=n.projectionMatrixInverse,n.projectionMatrixInverse=e.drag.projectionMatrixInverse,l=new Re(e.pointer.x,e.pointer.y,e.drag.z).clone().unproject(n).clone().sub(e.drag.translateStartPos),n.projectionMatrixInverse=u,h.translationWorldDelta.copy(l.negate())):((a=h.target||t.lastIntersect&&(t.lastIntersect.location||t.lastIntersect))&&a instanceof Re||(a=c.bound.center),r=n.position.distanceTo(a),o=lf.getHFOVForCamera(n,!0),s=r*Math.tan(o/2),h.translationDelta.x-=e.drag.pointerDelta.x*s,h.translationDelta.z-=e.drag.pointerDelta.y*s);h.useAttenuation=!1}i.includes("scale")&&(h.dollyEnd.subVectors(e.touches[0].pointer,e.touches[1].pointer),u=h.dollyEnd.length()/h.dollyStart.length(),l=(new Le).addVectors(e.touches[0].pointer,e.touches[1].pointer).multiplyScalar(.5),d({pointer:l,scale:u,camera:n}),h.dollyStart.copy(h.dollyEnd))}}},d=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if("showPanos"==Potree.settings.displayMode&&h.currentViewport==c.mainViewport)h.dispatchEvent({type:"dollyStopCauseUnable",delta:e.delta,scale:e.scale});else{var t=e.camera;if("OrthographicCamera"==t.type){if(null!=e.delta){if(0==e.delta)return;e.delta<0?n=.9:0<e.delta&&(n=1.12)}else n=e.scale;var n=t.zoom*n,i=t.zoomLimit,i=(i&&(n=Be.clamp(n,i.min,i.max)),new Re(e.pointer.x,e.pointer.y,.5)),r=i.clone().unproject(t),n=(t.zoom!=n&&(t.zoom=n,t.updateProjectionMatrix()),i.clone().unproject(t)),i=(new Re).subVectors(n,r);h.translationWorldDelta.add(i.negate()),h.useAttenuation=!1}else{if(null!=e.delta){if(a=15*h.currentViewport.getMoveSpeed(),o=h.viewer.inputHandler.getMouseDirection().direction,0==e.delta)return;e.delta<0&&(a*=-1)}else var t=200*h.currentViewport.getMoveSpeed(),a=(e.scale-1)*t,o=h.viewer.inputHandler.getMouseDirection(e.pointer).direction;h.useAttenuation=!0;n=o.multiplyScalar(a);h.translationWorldDelta.copy(n)}}};h.viewer.addEventListener("global_drag",r),h.viewer.addEventListener("global_drop",function(e){h.enabled&&h.dispatchEvent({type:"end"})}),h.viewer.addEventListener("global_mousewheel",function(e){h.enabled&&e.hoverViewport&&(h.setCurrentViewport(e),e.camera=e.hoverViewport.camera,d(e))}),h.viewer.addEventListener("global_dblclick",function(e){h.enabled&&Potree.settings.dblToFocusPoint&&"showPointCloud"==Potree.settings.displayMode&&h.zoomToLocation(e.mouse)});return h.viewer.addEventListener("global_mousedown",function(e){h.enabled&&(h.setCurrentViewport(e),n(e))}),h.viewer.addEventListener("global_touchstart",function(e){h.enabled&&(2==e.touches.length?t(e):3<=e.touches.length&&i(e))}),h.viewer.addEventListener("global_touchend",function(e){h.enabled&&(2==e.touches.length?t(e):1==e.touches.length?n(e):3<=e.touches.length&&i(e))}),h}return A(o,[{key:"canMovePos",value:function(e){return e!=viewer.mainViewport||"showPanos"!=Potree.settings.displayMode&&!viewer.images360.bumping&&!viewer.images360.latestToPano}},{key:"setEnable",value:function(e){this.enabled=e}},{key:"setTarget",value:function(e){this.target=e}},{key:"setFPCMoveSpeed",value:function(e){var t;"OrthographicCamera"==e.camera.type?(t=1/e.camera.zoom,e.setMoveSpeed(t)):e==viewer.mainViewport&&viewer.images360&&(t=viewer.mainViewport.view.position,e=viewer.images360.findNearestPano())&&(e=e.position.distanceTo(t),viewer.setMoveSpeed(e<=3?.05:.05+.005*(e-3)))}},{key:"setCurrentViewport",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};(this.enabled||e.force)&&(e.hoverViewport&&this.currentViewport!=e.hoverViewport&&(this.currentViewport=e.hoverViewport,this.setFPCMoveSpeed(this.currentViewport)),"OrthographicCamera"==this.currentViewport.camera.type?(this.lockElevationOri=!0,this.lockRotation=!0):(this.lockElevationOri=!1,this.lockRotation=!1))}},{key:"setScene",value:function(e){this.scene=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.translationDelta.set(0,0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i,r,a,o,s,l,u,c,h,d,p=this;this.enabled&&(r=this.scene.getActiveCamera(),t=this.viewer.inputHandler.intersect)&&(i=0,this.renderer.domElement,r=ie.mouseToRay(this.viewer.inputHandler.pointer,r),o=(n=this.viewer.inputHandler.getMouseDirection()).origin,n=n.direction,(a=new gd).ray.set(o,n),o=t.pointcloud.nodesOnRay(t.pointcloud.visibleNodes,r),t.pointcloud.nodesOnRay(t.pointcloud.visibleNodes,a.ray),n=o[o.length-1].getBoundingSphere(new gi).radius,i=Math.min(this.scene.view.radius,n),i=Math.max(.2,i),r=this.scene.view.direction.multiplyScalar(-1),a=(new Re).addVectors(t.location,r.multiplyScalar(i)),o=TWEEN.Easing.Quartic.Out,s={x:0},(l=new TWEEN.Tween(s).to({x:1},600)).easing(o),this.tweens.push(l),u=this.scene.view.position.clone(),c=a.clone(),h=this.scene.view.radius,d=a.distanceTo(t.location),l.onUpdate(function(){var e=s.x;p.scene.view.position.x=(1-e)*u.x+e*c.x,p.scene.view.position.y=(1-e)*u.y+e*c.y,p.scene.view.position.z=(1-e)*u.z+e*c.z,p.scene.view.radius=(1-e)*h+e*d,p.viewer.setMoveSpeed(p.scene.view.radius/2.5)}),l.onComplete(function(){p.tweens=p.tweens.filter(function(e){return e!==l})}),l.start())}},{key:"update",value:function(){var e,t,n,i,r,a,o,s,l,u,c,h,d=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1;this.enabled&&(e=this.currentViewport.view,[this.yawDelta,this.pitchDelta,this.translationDelta.length(),this.translationWorldDelta.length()].some(function(e){return.001<Math.abs(e)})&&0<this.tweens.length&&(this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]),t=this.viewer.inputHandler,n=this.keys.FORWARD.some(function(e){return t.pressedKeys[e]}),i=this.keys.BACKWARD.some(function(e){return t.pressedKeys[e]}),r=this.keys.LEFT.some(function(e){return t.pressedKeys[e]}),a=this.keys.RIGHT.some(function(e){return t.pressedKeys[e]}),o=this.keys.UP.some(function(e){return t.pressedKeys[e]}),s=this.keys.DOWN.some(function(e){return t.pressedKeys[e]}),l=this.keys.Rotate_LEFT.some(function(e){return t.pressedKeys[e]}),u=this.keys.Rotate_RIGHT.some(function(e){return t.pressedKeys[e]}),c=this.keys.Rotate_UP.some(function(e){return t.pressedKeys[e]}),h=this.keys.Rotate_DOWN.some(function(e){return t.pressedKeys[e]}),this.lockElevation=this.lockElevationOri||this.keys.ALT.some(function(e){return t.pressedKeys[e]}),this.lockRotation||(l?this.yawDelta-=.01:u&&(this.yawDelta+=.01),c?this.pitchDelta-=.01:h&&(this.pitchDelta+=.01)),this.canMovePos(this.currentViewport)&&!this.lockKey&&(this.lockElevation?((l=e.direction).z=0,l.normalize(),n&&i?this.translationWorldDelta.set(0,0,0):n?this.translationWorldDelta.copy(l.multiplyScalar(this.currentViewport.getMoveSpeed())):i&&this.translationWorldDelta.copy(l.multiplyScalar(-this.currentViewport.getMoveSpeed()))):n&&i?this.translationDelta.y=0:n?this.translationDelta.y=this.currentViewport.getMoveSpeed():i&&(this.translationDelta.y=-this.currentViewport.getMoveSpeed()),r&&a?this.translationDelta.x=0:r?this.translationDelta.x=-this.currentViewport.getMoveSpeed():a&&(this.translationDelta.x=this.currentViewport.getMoveSpeed()),o&&s?this.translationWorldDelta.z=0:o?this.translationWorldDelta.z=this.currentViewport.getMoveSpeed():s&&(this.translationWorldDelta.z=-this.currentViewport.getMoveSpeed()),o||s||n||i)&&(this.useAttenuation=!1),u=e.yaw,c=e.pitch,u+=this.yawDelta,c+=this.pitchDelta,e.yaw=u,e.pitch=c,this.yawDelta=0,this.pitchDelta=0,e.translate(this.translationDelta.x,this.translationDelta.y,this.translationDelta.z),this.translationDelta.set(0,0,0),e.translateWorld(this.translationWorldDelta.x,this.translationWorldDelta.y,this.translationWorldDelta.z),this.useAttenuation?(h=Math.max(0,1-this.fadeFactor*d),this.translationWorldDelta.multiplyScalar(h)):this.translationWorldDelta.set(0,0,0))}}]),o}(),wA=Potree.defines.Buttons,bA=function(){y(r,zn);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).viewer=e,n.renderer=e.renderer,n.domElement=n.renderer.domElement,n.enabled=!0,n.scene=t,n.interactiveScenes=[],n.interactiveObjects=new Set,n.inputListeners=[],n.blacklist=new Set,n.drag=null,n.mouse=new Le(0,0),n.pointer=new Le(0,0),n.mouseDownMouse=new Le(0,0),n.selection=[],n.hoveredElements=[],n.pressedKeys={},n.wheelDelta=0,n.speed=1,n.logMessages=!1,-1===n.domElement.tabIndex&&(n.domElement.tabIndex=2222),n.lastPointerUpTime=0,n.touches=[],n.hoverViewport=e.viewports[0],n.domElement.addEventListener("contextmenu",function(e){e.preventDefault()},!1),n.domElement.addEventListener("click",n.onMouseClick.bind(G(n)),!1),n.domElement.addEventListener("mousedown",n.onMouseDown.bind(G(n)),!1),window.addEventListener("mouseup",n.onMouseUp.bind(G(n)),!1),n.domElement.addEventListener("mousemove",n.onMouseMove.bind(G(n)),!1),n.domElement.addEventListener("mousewheel",n.onMouseWheel.bind(G(n)),!1),n.domElement.addEventListener("DOMMouseScroll",n.onMouseWheel.bind(G(n)),!1),n.domElement.addEventListener("keydown",n.onKeyDown.bind(G(n))),window.addEventListener("keyup",n.onKeyUp.bind(G(n))),window.addEventListener("blur",n.onKeyUp.bind(G(n))),n.domElement.addEventListener("touchstart",n.onTouchStart.bind(G(n))),n.domElement.addEventListener("touchend",n.onTouchEnd.bind(G(n))),n.domElement.addEventListener("touchmove",n.onTouchMove.bind(G(n))),n.addEventListener("isMeasuring",function(e){n.isMeasuring=e.v}),n}return A(r,[{key:"updateTouchesInfo",value:function(e){var i,r,a=this,n=this.touches,o=Array.from(e.changedTouches),t=Array.from(e.touches);if(this.touches=t.map(function(t){var e=n.find(function(e){return e.touch.identifier==t.identifier}),e=e&&e.pointer;return{touch:t,pointer:e}}),0<e.touches.length)return 0<(t=t.filter(function(t){return!n.some(function(e){return e.touch.identifier==t.identifier})&&!o.some(function(e){return e.identifier==t.identifier})})).length&&console.warn("has new",t.map(function(e){return e.identifier})),t.concat(o).forEach(function(t){var e,n=a.touches.find(function(e){return e.touch.identifier==t.identifier});n&&(e=a.getPointerInViewport(t.pageX,t.pageY,a.dragViewport||i,new Le),n.pointer=e.pointer.clone(),i=e.viewport,r=e.camera)}),1<e.touches.length?(t=ag.average(e.touches,"pageX"),e=ag.average(e.touches,"pageY"),t=this.getPointerInViewport(t,e,i,new Le),this.pointer.copy(t.pointer)):this.pointer=this.touches[0].pointer.clone(),{viewport:i,camera:r}}},{key:"onTouchStart",value:function(e){this.logMessages&&console.log(this.constructor.name+": onTouchStart"),e.preventDefault(),this.dealPointerDown(e,!0),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,!0),{type:"global_"+e.type,changedTouches:e.changedTouches}))}},{key:"onTouchMove",value:function(e){this.logMessages&&console.log(this.constructor.name+": onTouchMove"),e.preventDefault(),this.dealPointerMove(e,!0),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,!0),{type:"global_"+e.type,changedTouches:e.changedTouches}))}},{key:"onTouchEnd",value:function(e){this.logMessages&&console.log(this.constructor.name+": onTouchEnd"),e.preventDefault(),this.updateTouchesInfo(e),this.dealPointerUp(e,!0),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,!0),{type:"global_"+e.type}))}},{key:"onKeyDown",value:function(e){this.logMessages&&console.log(this.constructor.name+": onKeyDown"),this.dispatchEvent({type:"keydown",keyCode:e.keyCode,event:e}),this.pressedKeys[e.keyCode]=!0}},{key:"onKeyUp",value:function(e){this.logMessages&&console.log(this.constructor.name+": onKeyUp"),null!=e.keyCode?delete this.pressedKeys[e.keyCode]:this.pressedKeys={},e.preventDefault()}},{key:"onDoubleClick",value:function(e){this.logMessages&&console.log(this.constructor.name+": onDoubleClick");var t,n=!1,i=q(this.hoveredElements);try{for(i.s();!(t=i.n()).done;){var r=t.value;if(r._listeners&&r._listeners.dblclick){r.object.dispatchEvent({type:"dblclick",mouse:this.mouse,object:r.object}),n=!0;break}}}catch(e){i.e(e)}finally{i.f()}n||this.viewer.dispatchEvent({type:"global_dblclick",mouse:this.mouse,object:null}),this.needSingleClick=!1,e.preventDefault()}},{key:"onMouseClick",value:function(e){this.logMessages&&console.log(this.constructor.name+": onMouseClick"),e.preventDefault()}},{key:"dealPointerDown",value:function(e,t){var n,i;if(e.preventDefault(),t?((n=this.updateTouchesInfo(e)).camera,n=n.viewport,this.drag&&(this.drag.end=this.pointer.clone())):((i=this.getPointerInViewport(e.clientX,e.clientY)).camera,n=i.viewport),this.dragViewport=this.hoverViewport=n,!t&&Potree.settings.intersectWhenHover||(this.hoveredElements=this.getHoveredElements(),this.intersect=this.getIntersect(n)),n){if(!t||1==e.touches.length){var r,a=!1,o=function(){return a=!0},s=(this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_mousedown"})),q(this.hoveredElements));try{for(s.s();!(r=s.n()).done;)if(r.value.object.dispatchEvent({type:"mousedown",viewer:this.viewer,consume:o}),a)break}catch(e){s.e(e)}finally{s.f()}}this.drag||((i=(t||e.button==le.LEFT)&&this.hoveredElements.find(function(e){return e.object._listeners&&e.object._listeners.drag&&0<e.object._listeners.drag.length}))?this.startDragging(i.object,{location:i.point}):this.startDragging(null)),this.drag.intersectStart=this.intersect,this.mouseDownMouse=this.mouse.clone(),this.pointerDownTime=Date.now()}}},{key:"onMouseDown",value:function(e){this.logMessages&&console.log(this.constructor.name+": onMouseDown"),this.dealPointerDown(e)}},{key:"getEventDesc",value:function(e,t){var n={viewer:this.viewer,mouse:this.mouse,pointer:this.pointer,drag:this.drag,isTouch:t,dragViewport:this.dragViewport,hoverViewport:this.hoverViewport,hoveredElement:this.hoveredElements[0],intersect:this.intersect};return e&&(n.isAtDomElement=e.target==this.domElement),t?n.touches=this.touches:e&&(n.button=e.button,n.buttons=e.buttons),n}},{key:"dealPointerUp",value:function(e,t){var n,i,r,a,o,s,l,u,c,h=this;this.drag&&(this.drag.end.copy(this.pointer),t&&1<=e.touches.length||(n=Date.now(),this.logMessages&&console.log(this.constructor.name+": onMouseUp"),e.preventDefault(),i=this.mouseDownMouse.distanceTo(this.mouse),r=n-this.pointerDownTime,a=0==this.drag.pointerDelta.length(),o=function(){return!0},this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_mouseup",pressDistance:i,consume:o})),0<this.hoveredElements.length&&(u=this.hoveredElements.map(function(e){return e.object}).find(function(e){return e._listeners&&e._listeners.mouseup}))&&u.dispatchEvent({type:"mouseup",viewer:this.viewer,consume:o}),this.drag&&(this.drag.object?(this.logMessages&&console.log("".concat(this.constructor.name,": drop ").concat(this.drag.object.name)),this.drag.object.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"drop",pressDistance:i}))):this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_drop",pressDistance:i})),i<Potree.config.clickMaxDragDis&&r<Potree.config.clickMaxPressTime&&!e.unableClick&&(l=!1,this.hoveredElements&&(s=this.hoveredElements.find(function(e){return e.object._listeners.click}))&&(this.logMessages&&console.log("".concat(this.constructor.name,": click ").concat(s.name)),s.object.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"click",pressDistance:i}))),this.fixSelection||(e.button===le.LEFT?a&&((u=this.hoveredElements.find(function(e){return e.object._listeners&&e.object._listeners.select}))?(u=u.object,this.isSelected(u)?this.deselectAll():(this.deselectAll(),this.toggleSelection(u)),l=!0):(0<this.selection.length&&(l=!0),this.deselectAll())):e.button===le.RIGHT&&a&&this.deselectAll()),c=this.getEventDesc(e,t),l||this.viewer.dispatchEvent($.extend(c,{type:"global_click",pressDistance:i,clickElement:s,consume:function(){return l=!0}})),this.needSingleClick=!0,l||setTimeout(function(){h.needSingleClick&&h.viewer.dispatchEvent($.extend(c,{type:"global_single_click",pressDistance:i,clickElement:s}))},Potree.config.doubleClickTime+1),n-this.lastClickTime<Potree.config.doubleClickTime&&this.onDoubleClick(e),this.lastClickTime=n),this.drag=null),this.dragViewport=null))}},{key:"onMouseUp",value:function(e){this.dealPointerUp(e)}},{key:"getPointerInViewport",value:function(e,t,n,o){function i(e){var t=Math.ceil(u.domElement.clientWidth*e.left),n=Math.ceil(u.domElement.clientHeight*e.bottom),i=Math.ceil(u.domElement.clientWidth*e.width),e=Math.ceil(u.domElement.clientHeight*e.height);return{left:t,bottom:n,width:i,height:e,top:u.domElement.clientHeight-n-e}}function r(e,t,n,i,r,a){u.mouse.set(c-t,h-a),ie.convertScreenPositionToNDC(o,u.mouse,i,r),s=e.camera,l=e}var s,l,u=this,a=this.domElement.getBoundingClientRect(),c=e-a.left,h=t-a.top;o=o||this.pointer;if(n){e=i(n),t=e.left;e.bottom;r(n,t,0,e.width,e.height,e.top)}else for(var d=this.viewer.viewports.length,p=0;p<d;p++){var f=this.viewer.viewports[p];if(f.active){var m=i(f),v=m.left,g=(m.bottom,m.width),A=m.height,m=m.top;if(v<=c&&c<=v+g&&m<=h&&h<=m+A){r(f,v,0,g,A,m);break}}}return{camera:s,viewport:l,pointer:o}}},{key:"ifBlockedByIntersect",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0,r=4<arguments.length?arguments[4]:void 0,a=5<arguments.length?arguments[5]:void 0,r=this.getIntersect(this.hoverViewport,!0,r,null,n=i?!0:n,{point:e,cameraPos:i,pano:a}),n=!n&&a?a.position:i||this.hoverViewport.view.position;if(r&&r.distance+t<=e.distanceTo(n))return r}},{key:"getIntersect",value:function(e,t,n,i,r){function a(){var e;e=h.point?(e=(h.pano||d).position,{dir:(new Re).subVectors(h.point,e).normalize()}):ie.getIntersect(d,[viewer.images360.cube],c.pointer,u),(o=viewer.images360.depthSampler.sample(e,h.pano,!!h.point))&&Potree.settings.depTexLocBindDataset&&(o.pointcloud=(h.pano||viewer.images360.currentPano).pointcloud)}var o,s,l,u,c=this,h=5<arguments.length&&void 0!==arguments[5]?arguments[5]:{},d=e.camera,r="showPanos"==Potree.settings.displayMode&&viewer.images360.currentPano.pointcloud.hasDepthTex&&e==viewer.mainViewport&&!r;return(r&&!this.isMeasuring||(h.point&&(h.cameraPos&&d.position.copy(h.cameraPos),d.lookAt(h.point),d.updateMatrixWorld(),h.pointer=c.pointer.clone(),h.mouse=c.mouse.clone(),c.pointer.set(0,0),c.mouse.set(Math.round(e.resolution.x/2),Math.round(e.resolution.y/2))),o=e.noPointcloud||i?null:ie.getMousePointCloudIntersection(e,c.mouse,c.pointer,d,c.viewer,c.viewer.scene.pointclouds,{pickClipped:!0,isMeasuring:c.isMeasuring,pickWindowSize:n,cameraChanged:!!h.point}),h.point&&(e.view.applyToCamera(d),c.pointer.copy(h.pointer),c.mouse.copy(h.mouse)),!o&&r))&&a(),Potree.settings.intersectOnObjs&&!i&&(h.point&&(u=new gd,n=(new Re).subVectors(h.point,d.position).normalize(),u.set(d.position,n)),(l=this.getHoveredElements(viewer.objs.children,!0,u))[0])&&(s={hoveredElement:l[0],location:l[0].point,normal:l[0].face.normal,distance:l[0].distance,object:l[0].object}),r=o&&s?o.distance<s.distance?o:s:s||o,"OrthographicCamera"==e.camera.type&&(i=new Re(this.pointer.x,this.pointer.y,-1).unproject(e.camera),(r=r||{}).orthoIntersect=i.clone()),r&&(r.allElements=l,r.pointclouds=o?o.pointclouds:[]),!t&&(r&&viewer.showCoordType&&(n=r.point.position.toArray(),"local"!=viewer.showCoordType&&(n="lonlat"==viewer.showCoordType?viewer.transform.lonlatToLocal.inverse(n):(n=viewer.transform.lonlatToLocal.inverse(n),viewer.transform.lonlatTo4550.forward(n))),viewer.dispatchEvent({type:"coordinateChange",pos:n})),this.intersect=r)&&(this.hoverViewport.lastIntersect=r),r}},{key:"onMouseMove",value:function(e){return this.dealPointerMove(e)}},{key:"dealPointerMove",value:function(e,t){if(n=(t?((n=this.updateTouchesInfo(e)).camera,n):((n=this.getPointerInViewport(e.clientX,e.clientY,this.dragViewport)).camera,n)).viewport,this.hoverViewport=n){var n,i,r=this.viewer.viewports.some(function(e){return e.view.isFlying()})||viewer.scene.cameraAnimations.some(function(e){return e.onUpdate});if((e.onlyGetIntersect||Potree.settings.intersectWhenHover&&(!this.drag||this.drag.object||n.alignment))&&(i=this.drag&&n.alignment||r,i=this.getIntersect(n,e.onlyGetIntersect,e.pickWindowSize,!!i,e.whichPointcloud)),e.onlyGetIntersect)return i;e.preventDefault(),this.drag&&(this.drag.mouse=t?1:e.buttons,this.drag.pointerDelta.subVectors(this.pointer,this.drag.end),this.drag.end.copy(this.pointer),!this.drag.object||e.buttons!=wA.NONE&&this.drag.notPressMouse?(this.logMessages&&console.log(this.constructor.name+": drag: "),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_drag",consume:function(){}}))):(this.logMessages&&console.log(this.constructor.name+": drag: "+this.drag.object.name),this.drag.object.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"drag"})))),t&&1!=e.touches.length||((!this.drag||this.drag.notPressMouse||Potree.settings.intersectOnObjs&&this.drag.object)&&!r&&(0<(n=this.getHoveredElements()).length&&(i=n.map(function(e){return e.object.name}).join(", "),this.logMessages)&&console.log("".concat(this.constructor.name,": onMouseMove; hovered: '").concat(i,"'")),(r=n.map(function(e){return e.object}).find(function(e){return!0}))!==(i=this.lastMouseoverElement)&&(r&&(this.logMessages&&console.log("".concat(this.constructor.name,": mouseover: ").concat(r.name)),r.dispatchEvent({type:"mouseover",object:r})),i&&(this.logMessages&&console.log("".concat(this.constructor.name,": mouseleave: ").concat(i.name)),i.dispatchEvent({type:"mouseleave",object:i})),this.lastMouseoverElement=r),0<n.length&&(i=n.map(function(e){return e.object}).find(function(e){return e._listeners&&e._listeners.mousemove}))&&i.dispatchEvent({type:"mousemove",object:i}),this.hoveredElements=n),this.viewer.dispatchEvent($.extend(this.getEventDesc(e,t),{type:"global_mousemove"})))}}},{key:"onMouseWheel",value:function(e){var t,n;this.enabled&&(this.logMessages&&console.log(this.constructor.name+": onMouseWheel"),e.preventDefault(),void(t=0)!==e.wheelDelta?t=e.wheelDelta:void 0!==e.detail&&(t=-e.detail),t=Math.sign(t),this.hoverViewport||(n=this.getPointerInViewport(e.clientX,e.clientY).viewport,this.hoverViewport=n),this.hoveredElement?this.hoveredElement.object.dispatchEvent($.extend(this.getEventDesc(e,isTouch),{type:"mousewheel",delta:t,object:this.hoveredElement.object})):this.viewer.dispatchEvent($.extend(this.getEventDesc(e),{type:"global_mousewheel",delta:t})))}},{key:"startDragging",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:null,n=e?e.name:"no name";if(this.logMessages&&console.log("".concat(this.constructor.name,": startDragging: '").concat(n,"'")),this.drag={start:this.pointer.clone(),end:this.pointer.clone(),pointerDelta:new Le(0,0),object:e,hoverViewport:this.hoverViewport,dragViewport:this.hoverViewport},t)for(var i=0,r=Object.keys(t);i<r.length;i++){var a=r[i];this.drag[a]=t[a]}e&&e.dispatchEvent($.extend(this.getEventDesc(),{type:"startDragging"}))}},{key:"toggleSelection",value:function(e){var t=this.selection,n=this.selection.indexOf(e);-1===n?(this.selection.push(e),e.dispatchEvent({type:"select"})):(this.selection.splice(n,1),e.dispatchEvent({type:"deselect"})),this.dispatchEvent({type:"selection_changed",oldSelection:t,selection:this.selection})}},{key:"deselect",value:function(e){var t=this.selection,n=this.selection.indexOf(e);0<=n&&(this.selection.splice(n,1),e.dispatchEvent({type:"deselect"}),this.dispatchEvent({type:"selection_changed",oldSelection:t,selection:this.selection}))}},{key:"deselectAll",value:function(){var e,t=q(this.selection);try{for(t.s();!(e=t.n()).done;)e.value.dispatchEvent({type:"deselect"})}catch(e){t.e(e)}finally{t.f()}var n=this.selection;0<this.selection.length&&(this.selection=[],this.dispatchEvent({type:"selection_changed",oldSelection:n,selection:this.selection}))}},{key:"isSelected",value:function(e){return-1!==this.selection.indexOf(e)}},{key:"registerInteractiveObject",value:function(e){this.interactiveObjects.add(e)}},{key:"removeInteractiveObject",value:function(e){this.interactiveObjects.delete(e)}},{key:"registerInteractiveScene",value:function(e){-1===this.interactiveScenes.indexOf(e)&&this.interactiveScenes.push(e)}},{key:"unregisterInteractiveScene",value:function(e){e=this.interactiveScenes.indexOf(e);-1<e&&this.interactiveScenes.splice(e,1)}},{key:"getHoveredElement",value:function(){var e=this.getHoveredElements();return 0<e.length?e[0]:null}},{key:"getHoveredElements",value:function(n,e,t){var i=this;if(!n){var r,a=i.hoverViewport.interactiveScenes||i.interactiveScenes.concat(i.scene),o=["mouseup","mousemove","mouseover","mouseleave","drag","drop","click","select","deselect"],s=(n=[],q(a));try{for(s.s();!(r=s.n()).done;)r.value.traverseVisible(function(t){t._listeners&&t.visible&&!i.blacklist.has(t)&&0<o.filter(function(e){return void 0!==t._listeners[e]}).length&&n.push(t)})}catch(e){s.e(e)}finally{s.f()}}var a=this.hoverViewport.camera,l=(t||(l=ie.mouseToRay(this.pointer,a),(t=new gd).ray.set(l.origin,l.direction),t.camera=a),"OrthographicCamera"==a.type?t.params.Line.threshold=20/a.zoom:t.params.Line.threshold=.04,t.params.Line2={threshold:20},viewer.setCameraLayers(t,["sceneObjects","mapObjects","measure","transformationTool","model"],this.hoverViewport&&this.hoverViewport.extraEnableLayers),viewer.dispatchEvent({type:"raycaster",viewport:this.hoverViewport}),t.intersectObjects(n.filter(function(e){return e.visible}),!0));l.slice();return l=(l=(l=this.intersect&&null!=this.intersect.distance&&!e?l.filter(function(e){var t=e.object.material;return e.object.pickDontCheckDis||(0==t.depthTest||0==t.depthWrite)&&!t.useDepth||(t.useDepth?e.distance<i.intersect.distance+t.uniforms.occlusionDistance.value:e.distance<i.intersect.distance)}):l).map(function(e){var t=e.object;do{if(n.includes(t)){e.oriObject=e.object,e.object=t;break}}while(t=t.parent);return e})).sort(function(e,t){return(t.object.pickOrder||0)-(e.object.pickOrder||0)})}},{key:"update",value:function(e){}},{key:"getMouseDirection",value:function(e){e=e||this.pointer;var t=this.hoverViewport.camera,n=new Re(e.x,e.y,-1).unproject(t);return{origin:n,direction:new Re(e.x,e.y,1).unproject(t).clone().sub(n).normalize()}}}]),r}(),xA=function(){y(r,zn);var i=C(r);function r(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return te(this,r),(t=i.call(this)).name=n.name,t.renderArea=e,t.oldResolution=new Le,t.screenSizeInfo={W:0,H:0,pixelRatio:1,windowWidth:0,windowHeight:0},t.initContext(n),t.addEventListener("content_changed",function(){t.needRender=!0}),t}return A(r,[{key:"initContext",value:function(e){var t=this,n=(this.renderArea.clientWidth,this.renderArea.clientHeight,document.createElement("canvas")),i=n.getContext("webgl",{alpha:!0,depth:!0,stencil:!1,antialias:!0,preserveDrawingBuffer:!1,powerPreference:"high-performance"}),n=(this.renderer=new Ts({alpha:!0,premultipliedAlpha:!1,canvas:n,context:i}),this.renderer.sortObjects=!0,this.renderer.autoClear=e.autoClear||!1,e.clearColor&&this.renderer.setClearColor(e.clearColor),this.renderArea.appendChild(this.renderer.domElement),this.renderer.domElement.tabIndex="2222",this.renderer.domElement.style.position="absolute",this.renderer.domElement.addEventListener("mousedown",function(){t.renderer.domElement.focus()}),this.renderer.getContext());if(n.getExtension("EXT_frag_depth"),n.getExtension("WEBGL_depth_texture"),n.getExtension("WEBGL_color_buffer_float"),null==n.createVertexArray){i=n.getExtension("OES_vertex_array_object");if(!i)throw new Error("OES_vertex_array_object extension not supported");n.createVertexArray=i.createVertexArrayOES.bind(i),n.bindVertexArray=i.bindVertexArrayOES.bind(i)}}},{key:"updateScreenSize",value:function(){var e,t,n,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},r=!1;null!=i.width&&null!=i.height?(t=i.width,n=i.height,r=!0,e=1):(t=this.renderArea.clientWidth,n=this.renderArea.clientHeight,t===this.screenSizeInfo.W&&n===this.screenSizeInfo.H&&!i.forceUpdateSize&&this.screenSizeInfo.pixelRatio==window.devicePixelRatio||(this.screenSizeInfo.W=t,this.screenSizeInfo.H=n,r=!0,this.screenSizeInfo.pixelRatio=window.devicePixelRatio,e=window.devicePixelRatio)),r&&this.setSize(t,n,e)}},{key:"setSize",value:function(r,a,e,t){t||this.renderer.setSize(r,a,null,e),this.composer&&this.composer.setSize(r,a),this.viewports&&this.viewports.forEach(function(e,t){var n,i;e.active&&(n=r*e.width,0!=(i=a*e.height))&&(e.setResolution(Math.ceil(n),Math.ceil(i),r,a),e.camera.aspect=n/i,"OrthographicCamera"==e.camera.type&&(e.camera.left=-n/2,e.camera.right=n/2,e.camera.bottom=-i/2,e.camera.top=i/2),e.camera.updateProjectionMatrix())}),t||this.emitResizeMsg({viewport:this.viewports[0],deviceRatio:e})}},{key:"emitResizeMsg",value:function(e){e.viewport.resolution.equals(this.oldResolution)||(this.dispatchEvent($.extend(e,{type:"resize"})),this.oldResolution.copy(e.viewport.resolution))}},{key:"cameraChanged",value:function(){for(var e=!1,t=0,n=this.viewports.length;t<n;t++){var i=this.viewports[t].cameraChanged();i.changed&&(e=!0,this.dispatchEvent({type:"camera_changed",camera:this.viewports[t].camera,viewport:this.viewports[t],changeInfo:i}))}return e}},{key:"makeScreenshot",value:function(e,t,n){var i=e.width,e=e.height,r=new Zn(i,e,{format:St}),t=(this.setSize(i,e,1,!0),this.render({target:r,viewports:t||this.viewports,screenshot:!0,width:i,height:e,resize:!0}),Potree.Utils.renderTargetToDataUrl(r,i,e,this.renderer,n));return r.dispose(),{width:i,height:e,dataUrl:t}}}]),r}(),EA=function(){function i(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};te(this,i),this.left=n.left,this.bottom=n.bottom,this.width=n.width,this.height=n.height,this.name=n.name,this.view=e,this.camera=t,this.active=!0,this.unableChangePos=!1,this.noPointcloud,this.resolution=new Le,this.resolution2=new Le,this.offset=new Le,this.extraEnableLayers=n.extraEnableLayers||[],this.cameraLayers=n.cameraLayers,this.pixelRatio=n.pixelRatio}return A(i,[{key:"clone",value:function(){return ag.CloneClassObject(this)}},{key:"getMoveSpeed",value:function(){return this.moveSpeed}},{key:"setMoveSpeed",value:function(e){this.moveSpeed=e}},{key:"layersAdd",value:function(e){this.extraEnableLayers.includes(e)||this.extraEnableLayers.push(e)}},{key:"layersRemove",value:function(e){e=this.extraEnableLayers.indexOf(e);-1<e&&this.extraEnableLayers.splice(e,1)}},{key:"cameraChanged",value:function(){var e=this,t=!0,n=!0,i=!0;return this.previousState&&(t=!this.camera.projectionMatrix.equals(this.previousState.projectionMatrix),n=!this.camera.position.equals(this.previousState.position),i=!this.camera.quaternion.equals(this.previousState.quaternion)),e.previousState={projectionMatrix:e.camera.projectionMatrix.clone(),position:e.camera.position.clone(),quaternion:e.camera.quaternion.clone()},{projectionChanged:t,positionChanged:n,quaternionChanged:i,changed:t||n||i}}},{key:"setResolution",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0;this.resolution.set(e,t),this.resolution2.copy(this.resolution).multiplyScalar(this.pixelRatio||window.devicePixelRatio),this.offset.set(n,i).multiply(new Le(this.left,this.bottom))}}]),i}(),CA={uniforms:{opacity:{type:"f"},progress:{type:"f",value:0},pano0Map:{type:"t",value:null},pano1Map:{type:"t",value:null},depthMap0:{type:"t",value:null},depthMap1:{type:"t",value:null},pano0Position:{type:"v3",value:new Re},pano0Matrix:{type:"m4",value:new _e},pano1Position:{type:"v3",value:new Re},pano1Matrix:{type:"m4",value:new _e},inverseProjectionMatrix:{value:new _e},viewport:{value:new Kn},cameraHeight0:{type:"f",value:1},cameraHeight1:{type:"f",value:1}},vertexShader:"precision highp float;\nprecision highp int;\n\nuniform mat4 modelMatrix;\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\nuniform mat4 viewMatrix;\nuniform mat3 normalMatrix;\nuniform vec3 cameraPosition;\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec2 uv;\n\n\n uniform vec3 pano0Position;\n uniform mat4 pano0Matrix;\n \n uniform vec3 pano1Position;\n uniform mat4 pano1Matrix;\n //uniform mat4 pano1Matrix2;\n\n \n varying vec2 vUv; \n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n varying vec3 vWorldPosition12;\n \n vec3 transformAxis( vec3 direction ) //navvis->4dkk\n {\n float y = direction.y;\n direction.y = direction.z;\n direction.z = -y;\n return direction;\n }\n \n \n void main() {\n \n vUv = uv;\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n \n \n \n vec3 positionLocalToPanoCenter0 = worldPosition.xyz - pano0Position;\n vWorldPosition0 = (vec4(positionLocalToPanoCenter0, 1.0) * pano0Matrix).xyz;\n vWorldPosition0.x *= -1.0;\n vWorldPosition0 = transformAxis(vWorldPosition0);\n \n vec3 positionLocalToPanoCenter1 = worldPosition.xyz - pano1Position;\n vWorldPosition1 = (vec4(positionLocalToPanoCenter1, 1.0) * pano1Matrix).xyz;\n vWorldPosition1.x *= -1.0;\n vWorldPosition1 = transformAxis(vWorldPosition1);\n \n /* \n vec3 positionLocalToPanoCenter12 = worldPosition.xyz - pano1Position;\n vWorldPosition12 = (vec4(positionLocalToPanoCenter12, 1.0) * pano1Matrix2).xyz;\n vWorldPosition12.x *= -1.0;\n vWorldPosition12 = transformAxis(vWorldPosition12);\n */\n \n \n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n \n }\n\n ",fragmentShader:"precision highp float;\nprecision highp int;\n\nuniform mat4 viewMatrix;\nuniform vec3 cameraPosition;\n\n \n #define PI 3.141592653 \n \n \n uniform float modelAlpha;\n uniform float opacity;\n uniform float progress;\n uniform int blackout;\n uniform vec3 pano0Position;\n uniform vec3 pano1Position;\n uniform float maxDistance;\n uniform float minDistance;\n uniform float minOpa;\n \n uniform float cameraHeight0;\n uniform float cameraHeight1;\n\n \n \n /* uniform sampler2D pano0Map;\n uniform sampler2D pano1Map; */ \n uniform samplerCube pano0Map;\n uniform samplerCube pano1Map;\n \n \n varying vec2 vUv; \n varying vec3 vWorldPosition0;\n varying vec3 vWorldPosition1;\n //varying vec3 vWorldPosition12;\n \n /* vec2 getSamplerCoord( vec3 direction ) \n {\n direction = normalize(direction);\n float tx=atan(direction.x,-direction.y)/(PI*2.0)+0.5;\n float ty=acos(direction.z)/PI;\n\n return vec2(tx,ty);\n } */\n\n vec2 getSamplerCoord2( vec3 direction ) \n { \n direction = normalize(direction);\n float tx=atan(direction.x,direction.z)/(PI*2.0)+0.5;\n float ty=acos(direction.y)/PI;\n\n return vec2(tx,ty); \n }\n \n #extension GL_EXT_frag_depth : enable\n #if defined(GL_EXT_frag_depth) && defined(hasDepthTex) \n uniform sampler2D depthMap0;\n uniform sampler2D depthMap1;\n uniform mat4 inverseProjectionMatrix;\n uniform mat4 projectionMatrix;\n uniform vec4 viewport; \n \n vec2 getDepth(vec3 dir, sampler2D depthMap, float height, vec4 eyePos){\n vec2 depthValue = vec2(0.0, 0.0);\n vec2 uv2 = getSamplerCoord2(/* vWorldPosition12 */dir.xyz); //暂时只用基于目标漫游点的方向\n uv2.x -= 0.25; //全景图和Cube的水平采样起始坐标相差90度,这里矫正 0.25 个采样偏移\n vec4 depth = texture2D(depthMap, uv2);\n //float distance = depth.r + 256. * (depth.g + 256. * depth.b);\n //distance *= 255. * .001; // distance is now in meters\n \n //更改\n float distance = (depth.g + depth.r / 256.) * 255.; //为什么要乘以255 \n \n if(distance == 0.0){//漫游点底部识别不到的区域,给一个地板高度 \n if(uv2.y > 0.75) distance = height / dir.y; \n else distance = 100000.0;//给个超级远的值\n } \n \n if(distance == 0.0)distance = 100000.0;//给个超级远的值\n \n depthValue.x = distance;\n \n // return r[1] + r[0] / 256 \n distance += .1; // add a safety margin\n\n vec4 eyePos2 = vec4(normalize(eyePos.xyz) * distance, 1.);\n vec4 clipPos2 = projectionMatrix * eyePos2;\n vec4 ndcPos2 = clipPos2 * 1. / clipPos2.w;\n\n \n depthValue.y = 0.5 * ((gl_DepthRange.far - gl_DepthRange.near) * ndcPos2.z\n + gl_DepthRange.near + gl_DepthRange.far); \n return depthValue; \n }\n //注:未加载好的话,depth为0,导致第一次漫游过去的时候许多mesh会立刻被遮挡,所以要确保加载完\n #endif\n \n void main()\n {\n vec3 vWorldPosition0N = normalize(vWorldPosition0);\n vec3 vWorldPosition1N = normalize(vWorldPosition1);\n /* vec2 samplerCoord0 = getSamplerCoord(vWorldPosition0.xyz);\n vec2 samplerCoord1 = getSamplerCoord(vWorldPosition1.xyz); \n vec4 colorFromPano0=texture2D(pano0Map,samplerCoord0);\n vec4 colorFromPano1=texture2D(pano1Map,samplerCoord1); */\n \n vec4 colorFromPano0 = vec4(0.0,0.0,0.0,0.0);\n if(progress < 1.0){//通常是1\n colorFromPano0=textureCube(pano0Map,vWorldPosition0N.xyz);\n }\n vec4 colorFromPano1=textureCube(pano1Map,vWorldPosition1N.xyz);\n \n gl_FragColor=mix(colorFromPano0,colorFromPano1,progress);\n \n \n \n \n //深度图修改深度\n \n #if defined(GL_EXT_frag_depth) && defined(hasDepthTex) \n vec4 ndcPos;\n ndcPos.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * viewport.xy)) / (viewport.zw) - 1.;\n ndcPos.z = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far) /\n (gl_DepthRange.far - gl_DepthRange.near);\n ndcPos.w = 1.0;\n\n vec4 clipPos = ndcPos / gl_FragCoord.w;\n vec4 eyePos = inverseProjectionMatrix * clipPos;\n vec2 depth0 = vec2(0.0,0.0); \n if(progress < 1.0){\n depth0 = getDepth(vWorldPosition0N, depthMap0, cameraHeight0, eyePos);\n }\n vec2 depth1 = getDepth(vWorldPosition1N, depthMap1, cameraHeight1, eyePos);\n \n /* if(progress < 1.0 && depth1.x == 0.0 && depth0.x > 0.0){\n gl_FragDepthEXT = depth0.y; \n }else{ */\n gl_FragDepthEXT = mix(depth0.y,depth1.y,progress);\n //}\n \n \n\n #endif\n\n \n }\n "},BA=function(){y(r,nc);var i=C(r);function r(){te(this,r);function t(e){e=e.viewport.resolution2,n.uniforms.viewport.value.set(0,0,e.x,e.y)}var n=i.call(this,{fragmentShader:CA.fragmentShader,vertexShader:CA.vertexShader,uniforms:ca.clone(CA.uniforms),side:ve,name:"ModelTextureMaterial",defines:{}}),e=viewer.mainViewport;return t({viewport:e}),viewer.addEventListener("resize",function(e){"MainView"==e.viewport.name&&t(e)}),viewer.addEventListener("camera_changed",function(e){"MainView"==e.viewport.name&&e.camera&&n.uniforms.inverseProjectionMatrix.value.copy(e.camera.projectionMatrixInverse)}),n}return A(r,[{key:"setProjectedPanos",value:function(e,t,n){null!=n&&(this.uniforms.progress.value=n),e&&(this.uniforms.pano0Map.value=e.getSkyboxTexture(),this.uniforms.pano0Position.value.copy(e.position),this.uniforms.pano0Matrix.value.copy(e.panoMatrix),this.uniforms.cameraHeight0.value=e.floorPosition.distanceTo(e.position)),this.uniforms.pano1Map.value=t.getSkyboxTexture(),this.uniforms.pano1Position.value.copy(t.position),this.uniforms.pano1Matrix.value.copy(t.panoMatrix),this.uniforms.cameraHeight1.value=t.floorPosition.distanceTo(t.position),this.pano0=e,this.pano1=t,this.updateDepthTex(e),this.updateDepthTex(t),this.needsUpdate=!0}},{key:"updateDepthTex",value:function(e){Potree.settings.useDepthTex&&e&&e.depthTex&&(e==this.pano0||e==this.pano1)&&(this.uniforms.depthMap0.value=this.pano0&&this.pano0.depthTex,this.uniforms.depthMap1.value=this.pano1&&this.pano1.depthTex,this.updateDepthTexEnable())}},{key:"updateDepthTexEnable",value:function(){var e=this.pano0&&this.pano1&&this.pano0.pointcloud.hasDepthTex&&this.pano1.pointcloud.hasDepthTex;ag.addOrRemoveDefine(this,"hasDepthTex",e?"add":"remove")}}]),r}(),_A=Potree.defines.GLCubeFaces,E={TILE_SIZE:512,FACES_PER_PANO:6,LocationOnTile:{Center:0,UpperLeft:1,UpperRight:2,LowerRight:3,LowerLeft:4},getTileVector:function(e,t,n,i,r,a,o,s){var l=e/t,u=2*(t/e),c=u/2,h=2*(i/l)-1+c,d=2*((r=l-1-r)/l)-1+c;switch(a=a||E.LocationOnTile.Center){case E.LocationOnTile.UpperLeft:d+=c,h=h-c+o*u;break;case E.LocationOnTile.UpperRight:h+=c,d=d+c-o*u;break;case E.LocationOnTile.LowerRight:d-=c,h=h+c-o*u;break;case E.LocationOnTile.LowerLeft:h-=c,d=d-c+o*u;break;case E.LocationOnTile.Center:}switch(n){case _A.GL_TEXTURE_CUBE_MAP_POSITIVE_X:b.setVector(s,-1,d,-h);break;case _A.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:b.setVector(s,1,d,h);break;case _A.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:b.setVector(s,-h,1,-d);break;case _A.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:b.setVector(s,-h,-1,d);break;case _A.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:b.setVector(s,-h,d,1);break;case _A.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:b.setVector(s,h,d,-1)}b.normalize(s)},getFaceForTile:function(e,t){var n=E.TILE_SIZE,e=(e<E.TILE_SIZE&&(n=e),Math.floor(e/n));return Math.floor(t/(e*e))},getTileLocation:function(e,t,n){var i=E.TILE_SIZE,r=(e<E.TILE_SIZE&&(i=e),E.getFaceForTile(e,t)),e=Math.floor(e/i),i=t-r*(e*e);return n.tileX=i%e,n.tileY=Math.floor(i/e),n.face=r,n.faceTileIndex=i,n},getTileCountForSize:function(e){return e<=E.TILE_SIZE?E.FACES_PER_PANO:(e=Math.floor(e/E.TILE_SIZE))*e*E.FACES_PER_PANO}},Xh=(E.getRelativeDirection=(Jg=new b.Matrix4,qg=new b.Quaternion,function(e,t){qg.copy(e),qg.inverse(),Jg.makeRotationFromQuaternion(qg),Jg.applyToVector3(t),b.normalize(t)}),E.matchingTilesInDirection=(Qg=new b.Vector3,Vg=new b.Vector3(0,0,-1),jg=new b.Quaternion,Hg={face:-1,faceTileIndex:-1,tileX:-1,tileY:-1},Wg=function(e,t,n){for(var i=E.getTileCountForSize(e),r=0,a=0;a<i;a++)E.getTileLocation(e,a,Hg),t&&!t(Hg)||(r++,n&&n.push({face:Hg.face,faceTileIndex:Hg.faceTileIndex,tileX:Hg.tileX,tileY:Hg.tileY}));return r},function(e,t,n,i,r,a){var o,s=t<E.TILE_SIZE?t:E.TILE_SIZE;return i||r?(o=!!r,r=r||i,r=Math.max(0,Math.min(r,360)),i=Math.max(0,Math.min(i,360)),b.copyVector(n,Qg),E.getRelativeDirection(e.quaternion4dkk,Qg),o?(jg.setFromUnitVectors(Qg,Vg),Wg(t,function(e){return E.isTileWithinFrustum(t,s,e.face,e.tileX,e.tileY,jg,i,r)},a)):Wg(t,function(e){return E.isTileWithinFOV(t,s,e.face,e.tileX,e.tileY,Qg,i)},a)):Wg(t,null,a)}),E.isTileWithinFrustum=(zg=new b.Vector3,function(e,t,n,i,r,a,o,s){for(var l,u,c=Math.tan(.5*s*b.RADIANS_PER_DEGREE),h=-c,d=Math.tan(.5*o*b.RADIANS_PER_DEGREE),p=-d,f=E.mapFaceToCubemapFace(n),m=0,v=0,g=0,A=0,y=0,w=E.LocationOnTile.Center;w<=E.LocationOnTile.LowerLeft;w++)E.getTileVector(e,t,f,i,r,w,0,zg),b.applyQuaternionToVector(a,zg),-1e-5<=zg.z?0:(u=-1/zg.z,l=zg.x*u,c<(u=zg.y*u)?m++:u<h&&v++,d<l?g++:l<p&&A++,y++);return v!==y&&m!==y&&g!==y&&A!==y}),E.isTileWithinFOV=(Ng=new b.Vector3,Gg=new b.Vector3(0,1,0),Ug=new b.Vector3(1,0,0),function(e,t,n,i,r,a,o){var s=E.mapFaceToCubemapFace(n);if(b.cross(a,Gg,Ug),E.getTileVector(e,t,s,i,r,E.LocationOnTile.Center,0,Ng),E.isWithinFOV(Ng,a,o,null))return!0;for(var l=o/360,u=Math.floor(1/l),c=0,h=0;h<u;h++){for(var d=E.LocationOnTile.UpperLeft;d<=E.LocationOnTile.LowerLeft;d++)if(E.getTileVector(e,t,s,i,r,d,c,Ng),E.isWithinFOV(Ng,a,o,null))return!0;c+=l}return!1}),E.isWithinFOV=(Fg=new b.Vector3,Og=new b.Vector3,function(e,t,n,i){b.copyVector(e,Og),i&&(b.copyVector(i,Fg),b.normalize(Fg),i=b.dot(Fg,e),Fg.x*=i,Fg.y*=i,Fg.z*=i,b.subVector(Og,Fg));e=n/2*b.RADIANS_PER_DEGREE;return Math.cos(e)<=b.dot(Og,t)}),E.mapFaceToCubemapFace=(Rg={0:_A.GL_TEXTURE_CUBE_MAP_POSITIVE_Y,1:_A.GL_TEXTURE_CUBE_MAP_POSITIVE_Z,2:_A.GL_TEXTURE_CUBE_MAP_POSITIVE_X,3:_A.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,4:_A.GL_TEXTURE_CUBE_MAP_NEGATIVE_X,5:_A.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y},function(e){return Rg[e]}),Potree.defines),MA=Xh.PanoRendererEvents,TA=Xh.PanoramaEvents,SA=Xh.PanoSizeClass,IA=new Nc,DA={sizeInfo:{minSize:200,maxSize:250,nearBound:.8,farBound:10},backgroundColor:{r:255,g:255,b:255,a:.4},textColor:{r:0,g:0,b:0,a:1},borderRadius:15,renderOrder:10,useDepth:!0,clipDistance:30,maxClipFactor:.3,occlusionDistance:3},PA={backgroundColor:{r:255,g:255,b:255,a:0},textColor:{r:255,g:255,b:255,a:1},textBorderColor:{r:30,g:30,b:30,a:1},textBorderThick:3,dontFixOrient:!0,renderOrder:10,fontsize:30},kA=new Ba(.2,.2),LA=(new Hu(.1,8,8),new L({color:16711680}),new L({}),(new X).setFromAxisAngle(new Re(0,0,1),Math.PI/2)),RA=null,FA=function(){y(a,zn);var r=C(a);function a(t,e){var n,i;return te(this,a),(n=r.call(this)).id=t.id,n.images360=e,n.visible=!0,n.enabled=!0,n.addEventListener("isVisible",function(e){viewer.updateVisible(n.marker,"panoVisi",e.visible),Potree.settings.showPanoMesh&&(n.mesh.visible=e.visible),("screenshot"==e.reason||e.visible)&&n.label&&(n.label.visible=e.visible),viewer.updateVisible(n.label2,"panoVisi",e.visible)}),"pano"==Potree.settings.editType?(n.uuid=t.uuid,n.index=t.index,n.pointcloud=viewer.scene.pointclouds.find(function(e){return e.panoUuid==t.uuid}),n.pointcloud.panos.push(G(n)),n.sid=n.pointcloud.dataset_id+"|"+n.uuid,n.panosData=t,n.dataPosition=(new Re).copy(t.pose.translation),n.dataQuaternion=(new X).copy(t.pose.rotation),n.dataRotation=(new ki).setFromQuaternion(n.dataQuaternion),n.originPosition=new Re,n.quaternion=new X,n.visibles=t.visibles,n.rtkState=t.has_rtk?t.use_rtk:null,n.originFloorPosition=n.originPosition.clone(),n.originFloorPosition.z-=1.4):(n.originPosition=(new Re).fromArray(t.dataset_location),n.originFloorPosition=(new Re).fromArray(t.dataset_floor_location),n.originID=parseInt(t.file_id),n.pointcloud=viewer.scene.pointclouds.find(function(e){return e.dataset_id==t.dataset_id})||viewer.scene.pointclouds[0],n.pointcloud.panos.push(G(n)),n.sid=n.pointcloud.dataset_id+"|"+n.originID,i=[(i=t.dataset_orientation)[1],i[2],i[3],i[0]],n.quaternion=(new X).fromArray(i),n.quaternion4dkk=ee.convertVisionQuaternion(n.quaternion),n.quaternion2=n.quaternion.clone(),n.quaternion=(new X).multiplyQuaternions(n.quaternion,LA),n.rotation4dkk=(new ki).setFromQuaternion(n.quaternion4dkk)),n.rotation=(new ki).setFromQuaternion(n.quaternion),n.build(),n.transformByPointcloud(),n.minimumTiledPanoLoaded=!1,n.highestPartialTileRenderOpCompleted=0,n.highestFullTileRenderOpCompleted=0,n.shouldRedrawOnBaseLoaded=!1,n.resolutionPromise={},n.tiledPanoRenderTarget=null,n.zoomed=!1,e.panoRenderer.addEventListener(MA.TileRenderSuccess,n.onTileRendered.bind(G(n))),e.panoRenderer.addEventListener(MA.PanoRenderComplete,n.onPanoRendered.bind(G(n))),e.panoRenderer.addEventListener(MA.TileRenderFailure,n.onTileRenderFail.bind(G(n))),e.panoRenderer.addEventListener(MA.UploadAttemptedForAllTiles,n.onUploadAttemptedForAllTiles.bind(G(n))),n.addEventListener("hoverOn",function(e){e.byMainView||n.hoverOn(e)}),n.addEventListener("hoverOff",function(e){e.byMainView||n.hoverOff(e)}),n}return A(a,[{key:"setEnable",value:function(e){viewer.updateVisible(this,"isEnabled",e),this.enabled=e}},{key:"loadDepthImg",value:function(){var e,t,n=this;!this.pointcloud.hasDepthTex||this.depthTex||this.depthTexLoading||(this.depthTexLoading=!0,e="".concat(Potree.settings.urls.prefix1,"/").concat(Potree.settings.webSite,"/").concat(this.pointcloud.sceneCode,"/data/").concat(this.pointcloud.sceneCode,"/depthmap/").concat(this.originID,".png"),(t=IA.load(e,function(){n.depthTex=t,n.images360.dispatchEvent({type:"loadedDepthImg",pano:n,loaded:!0}),n.depthTexLoading=!1},null,function(e){console.error("loadDepthImg失败, 数据集sceneCode"+n.pointcloud.sceneCode,n.id),n.pointcloud.hasDepthTex=!1,n.images360.dispatchEvent({type:"loadedDepthImg",pano:n})})).wrapS=ot,t.flipY=!1,t.magFilter=U,t.minFilter=U)}},{key:"build",value:function(){this.panoMatrix=(new _e).makeRotationFromQuaternion(this.quaternion),this.oriPanoMatrix=this.panoMatrix.clone(),this.quaternion2&&(this.oriPanoMatrix2=(new _e).makeRotationFromQuaternion(this.quaternion2));var t=new Z(kA,(Xg||((Xg={default:IA.load(Potree.resourcePath+"/textures/marker.png"),ring:IA.load(Potree.resourcePath+"/textures/marker2.png")}).default.anisotropy=4,Xg.ring.anisotropy=4),new jm({opacity:.7,side:ve,map:Xg.default,transparent:!0,clipDistance:2,occlusionDistance:1,useDepth:!!Potree.settings.useDepthTex})));t.name="marker_"+this.id,t.up.set(0,0,1),t.lookAt(t.up),t.scale.set(2,2,2),this.addEventListener("changeMarkerTex",function(e){t.material.map=Xg[e.name]}),this.marker=t,"pano"==Potree.settings.editType&&viewer.updateVisible(t,"panoEdit",!1,4),this.images360.node.add(t),Potree.settings.isTest&&this.createTextLabel(),this.createTextLabel2(),t.addEventListener("mouseover",this.hoverOn.bind(this)),t.addEventListener("mouseleave",this.hoverOff.bind(this))}},{key:"transformByPointcloud",value:function(){var e=this.originPosition.clone().applyMatrix4(this.pointcloud.transformMatrix),t=this.originFloorPosition.clone().applyMatrix4(this.pointcloud.transformMatrix);this.setPosition(e,t),this.panoMatrix=(new _e).multiplyMatrices(this.pointcloud.rotateMatrix,this.oriPanoMatrix),this.oriPanoMatrix2&&(this.panoMatrix2=(new _e).multiplyMatrices(this.pointcloud.rotateMatrix,this.oriPanoMatrix2),this.panoMatrix2Inverse=this.panoMatrix2.clone().invert()),this.dispatchEvent("rePos")}},{key:"setPosition",value:function(e,t){this.position=e,this.floorPosition=t,this.marker.position.copy(this.floorPosition),this.marker.position.z+=.04,this.label&&("pano"==Potree.settings.editType?this.label.position.copy(this.position):this.label.position.copy(this.floorPosition),this.label.position.z+=.14,this.label.update()),this.label2&&("pano"==Potree.settings.editType?this.label2.position.copy(this.position):this.label2.position.copy(this.floorPosition),this.label2.position.copy(this.marker.position),this.label2.update())}},{key:"hoverOn",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};Tg.start(Mg(this.marker.material,"opacity",1),250),e.byMap||this.dispatchEvent({type:"hoverOn",byMainView:!0}),e.byImages360||this.images360.dispatchEvent({type:"markerHover",hovered:!0,pano:this})}},{key:"hoverOff",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};Tg.start(Mg(this.marker.material,"opacity",.5),250),e.byMap||this.dispatchEvent({type:"hoverOff",byMainView:!0}),e.byImages360||this.images360.dispatchEvent({type:"markerHover",hovered:!1,pano:this})}},{key:"setZoomed",value:function(e){this.zoomed=e,"showPanos"==Potree.settings.displayMode&&this.updateSkyboxForZoomLevel(),viewer.dispatchEvent({type:"panoSetZoom",zoomed:e})}},{key:"enter",value:function(){this.setZoomed(!1),viewer.dispatchEvent({type:TA.Enter,oldPano:RA,newPano:this}),RA=this}},{key:"exit",value:function(){this.clearWaitDeferreds(),this.minimumTiledPanoLoaded=!1,this.tiledPanoRenderTarget=null,this.setZoomed(!1),this.images360.panoRenderer.deactivateTiledPano(this),this.highestPartialTileRenderOpCompleted=0,this.highestFullTileRenderOpCompleted=0,viewer.dispatchEvent({type:TA.Exit,pano:this})}},{key:"updateSkyboxForZoomLevel",value:function(){this.minimumTiledPanoLoaded&&this.images360.updateProjectedPanos()}},{key:"getSkyboxTexture",value:function(){return this.minimumTiledPanoLoaded?(this.zoomed&&this.images360.qualityManager.maxRenderTargetSize>this.images360.qualityManager.maxNavPanoSize?this.images360.panoRenderer.zoomRenderTarget:(this.tiledPanoRenderTarget.texture.mapping=300,this.tiledPanoRenderTarget)).texture:null}},{key:"isLoaded",value:function(e){return e&&"string"==typeof e&&console.error("Wrong panoSize given to Panorama.isLoaded(); a tiled pano uses PanoSizeClass"),!!this.minimumTiledPanoLoaded&&(!e||this.highestFullTileRenderOpCompleted>=e)}},{key:"getWaitDeferred",value:function(e){var t=this.resolutionPromise[this.id],n=(t||(this.resolutionPromise[this.id]=t={}),t[e]);return n||(n={deferred:$.Deferred(),active:!1},t[e]=n),n}},{key:"clearWaitDeferreds",value:function(){var e,t,n=this.resolutionPromise[this.id];for(e in n||(this.resolutionPromise[this.id]=n={}),n)n.hasOwnProperty(e)&&((t=n[e]).active=!1,t.deferred=$.Deferred())}},{key:"resetWaitDeferred",value:function(e){e=this.getWaitDeferred(e);e.active=!1,e.deferred=$.Deferred()}},{key:"onTileRendered",value:function(e){e.id===this.id&&this.dispatchEvent({type:TA.TileLoaded,size:e.panoSize,index:e.tileIndex,count:e.totalTiles})}},{key:"onPanoRendered",value:function(e){e.id===this.id&&(this.minimumTiledPanoLoaded=!0,this.updateSkyboxForZoomLevel(),e.panoSize>this.highestPartialTileRenderOpCompleted&&(this.highestPartialTileRenderOpCompleted=e.panoSize),e.updateFullComplete&&e.panoSize>this.highestFullTileRenderOpCompleted&&(this.highestFullTileRenderOpCompleted=e.panoSize),viewer.ifAllLoaded(this),this.dispatchEvent({type:TA.LoadComplete,size:e.panoSize,count:e.totalTiles}))}},{key:"onTileRenderFail",value:function(e){e.id===this.id&&this.dispatchEvent({type:TA.LoadFailed})}},{key:"onUploadAttemptedForAllTiles",value:function(e){var t;e.id===this.id&&(t=this.images360.qualityManager.getPanoSize(SA.BASE),e.panoSize===t)&&this.shouldRedrawOnBaseLoaded&&(this.shouldRedrawOnBaseLoaded=!1,this.panoRenderer.resetRenderStatus(this.id,!0,!1),this.panoRenderer.renderPanoTiles(this.id,null,!0,!0))}},{key:"createTextLabel",value:function(){this.removeTextLabel(),this.label=new qm(Object.assign({},DA,{text:this.id+"("+this.originID+")"})),this.images360.node.add(this.label),this.floorPosition&&this.label.position.copy(this.floorPosition)}},{key:"createTextLabel2",value:function(){this.label2=new qm(Object.assign({},PA,{text:parseInt(this.id)+1})),this.images360.node.add(this.label2),this.floorPosition&&this.label2.position.copy(this.floorPosition);this.label2.scale.set(.4,.4,.4),viewer.updateVisible(this.label2,"notDisplay",!1)}},{key:"removeTextLabel",value:function(){this.label&&this.label.parent.remove(this.label)}},{key:"dispose",value:function(){var e=viewer.images360.panos.indexOf(this);-1!=e&&(this.marker.parent.remove(this.marker),this.removeTextLabel(),this.depthTex&&this.depthTex.dispose(),viewer.images360.panos.splice(e,1),this.dispatchEvent("dispose"))}}]),a}(),Vd=(FA.prototype.loadTiledPano=(Yg={},Kg={},Zg={},function(t,n,i,r,a,o){var s,l=this,u=n.datasetsLocal.find(function(e){return e.datasetId==l.pointcloud.dataset_id}).direction,c=(null==r&&(r=!0),null==a&&(a=!0),this.getWaitDeferred(t)),h=c.deferred,d=null,p=null;return i&&("number"==typeof i?d=i:(d=i.hFov,p=i.vFov)),this.isLoaded(t)?h.resolve(t):(c.active||(c.active=!0,s=this.id+":"+t,Yg[s]=Yg[s]||[],Zg[s]=null,i&&(E.matchingTilesInDirection(this,t,u,d,p,c=[]),Zg[s]=c,Yg[s].forEach(function(t){var e=Zg[s].find(function(e){return t.faceTileIndex==e.faceTileIndex&&t.face==e.face});e&&(e.loaded=!0)}),Zg[s].some(function(e){return!e.loaded})||(h.resolve(t),this.resetWaitDeferred(t),Zg[s]=null)),Kg[this.id])||(Kg[this.id]=!0,this.addEventListener(TA.LoadComplete,function(e){var t=this.getWaitDeferred(e.size).deferred;t&&"pending"===t.state()&&this.highestPartialTileRenderOpCompleted>=e.size&&(t.resolve(e.size,e.count),this.resetWaitDeferred(e.size))}.bind(this)),this.addEventListener(TA.LoadFailed,function(t){var n=this.getWaitDeferred(e).deferred;n&&"pending"===n.state()&&this.highestPartialTileRenderOpCompleted>=t.t&&(n.reject(t.t),this.resetWaitDeferred(t.t))}.bind(this)),this.addEventListener(TA.TileLoaded,function(e){var t=e.index,n=e.count,e=e.size,i=this.id+":"+e,r=(Yg[i]=Yg[i]||[],E.getTileLocation(e,t,{})),a=r.faceTileIndex,o=r.face,r=(Yg[i].push({faceTileIndex:a,face:o}),this.getWaitDeferred(e).deferred);r&&"pending"===r.state()&&(r.notify(e,t,n),Zg[i])&&((t=Zg[i].find(function(e){return e.faceTileIndex==a&&e.face==o}))&&(t.loaded=!0),Zg[i].some(function(e){return!e.loaded})||(this.onPanoRendered(this.id,e,n,!0),r.resolve(e,n),this.resetWaitDeferred(e),Zg[i]=null))}.bind(this))),this.images360.tileDownloader.clearForceQueue(),this.images360.tileDownloader.forceQueueTilesForPano(this,t,u,d,p,o),this.tiledPanoRenderTarget=this.images360.panoRenderer.activateTiledPano(this,this.images360.qualityManager.getMaxNavPanoSize(),r),this.images360.panoRenderer.renderPanoTiles(this.id,n,a)),h.promise()}),Potree.defines),OA=(Vd.ModelManagerEvents,Vd.PanoSizeClass),NA=function(){function i(e,t,n){te(this,i),this.maxNavPanoSize=-1,this.maxZoomPanoSize=-1,this.devicePixelDensity=e,this.deviceScreenSize=t,this.clientBandwidth=n,this.panoSizeClassMap={},this.useHighResolutionPanos=!0,this.useUltraHighResolutionPanos=!1,this.modelHasUltraHighPanos=!1,(this.qualityManager=this).maxRenderTargetSize=sf.isMobile()?2048:4096,this.init()}return A(i,[{key:"init",value:function(e){this.buildPanoSizeClassMap(this.devicePixelDensity,this.deviceScreenSize,this.clientBandwidth),this.ultraHighSize=this.getPanoSize(OA.ULTRAHIGH),this.highSize=this.getPanoSize(OA.HIGH),this.standardSize=this.getPanoSize(OA.STANDARD),this.baseSize=this.getPanoSize(OA.BASE),Gm.tiling.maxZoomPanoQuality&&this.ultraHighSize<=Gm.tiling.maxZoomPanoQuality&&(Gm.tiling.allowUltraHighResolution=!0),this.highQualityThreshold=sf.valueFromHash("threshold2k",Gm.windowHeightHighQualityThreshold),this.updateMaximums()}},{key:"updateFromModel",value:function(e){this.updateUltraHighResolutionSettings(e)}},{key:"updateUltraHighResolutionSettings",value:function(e){Gm.tiling.allowUltraHighResolution&&this.modelHasUltraHighPanos?this.useUltraHighResolutionPanos=!0:this.useUltraHighResolutionPanos=!1,this.updateMaximums()}},{key:"enableUltraHighQualityMode",value:function(){this.modelHasUltraHighPanos=!0,this.updateUltraHighResolutionSettings(null)}},{key:"ultraHighQualityModeEnabled",value:function(){return this.modelHasUltraHighPanos}},{key:"onModelChanged",value:function(e){this.updateFromModel(e.model),this.updateMaximums()}},{key:"updateMaximums",value:function(){this.maxNavPanoSize=Gm.tiling.maxNavPanoQuality||this.detectMaxNavPanoSize(),this.maxZoomPanoSize=Gm.tiling.maxZoomPanoQuality||this.detectMaxZoomPanoSize(),this.maxZoomPanoSize<this.maxNavPanoSize&&(this.maxNavPanoSize=this.maxZoomPanoSize)}},{key:"buildPanoSizeClassMap",value:function(){this.panoSizeClassMap[OA.BASE]=512,this.panoSizeClassMap[OA.STANDARD]=1024,this.panoSizeClassMap[OA.HIGH]=2048,this.panoSizeClassMap[OA.ULTRAHIGH]=4096}},{key:"getPanoSize",value:function(e){return this.panoSizeClassMap[e]}},{key:"getMaxPossiblePanoSize",value:function(){return this.getPanoSize(OA.ULTRAHIGH)}},{key:"getMaxPanoSize",value:function(){return this.maxZoomPanoSize}},{key:"getMaxNavPanoSize",value:function(){return this.maxNavPanoSize}},{key:"getMaxZoomPanoSize",value:function(){return this.maxZoomPanoSize}},{key:"detectMaxNavPanoSizeClass",value:function(){return"1k"!==Potree.settings.navTileClass?OA.HIGH:OA.STANDARD}},{key:"detectMaxNavPanoSize",value:function(){var e=this.detectMaxNavPanoSizeClass();return this.getPanoSize(e)}},{key:"detectMaxZoomPanoSize",value:function(){return this.zoomLevelResolution?"4k"==this.zoomLevelResolution&&this.useUltraHighResolutionPanos?this.getPanoSize(OA.ULTRAHIGH):"1k"!=this.zoomLevelResolution&&this.useHighResolutionPanos?this.getPanoSize(OA.HIGH):this.getPanoSize(OA.STANDARD):this.useHighResolutionPanos?this.useUltraHighResolutionPanos?this.getPanoSize(OA.ULTRAHIGH):this.getPanoSize(OA.HIGH):this.getPanoSize(OA.STANDARD)}}]),i}(),GA=Potree.defines.DownloadStatus,UA=Object.freeze({None:0,DirectionalFOV:1}),zA=(HA._panoSpaceDir=new Re,HA._fovThreshold=-1,HA._fovThresholdNarrow=-1,HA);function HA(e,t){var n=HA._panoSpaceDir,i=HA._fovThreshold,r=HA._fovThresholdNarrow,a=Math.max(Math.min(n.dot(e.direction),1),-1),n=Math.max(Math.min(n.dot(t.direction),1),-1);return e._dot=a,t._dot=n,i<=a&&n<i?-1:a<i&&i<=n?1:r<=a&&n<r?-1:a<r&&r<=n||e.panoSize>t.panoSize?1:t.panoSize>e.panoSize?-1:-(a-n)}function QA(e){for(var t=(e=e.split(","))[0].match(/:(.*?);/)[1],n=atob(e[1]),i=n.length,r=new Uint8Array(i);i--;)r[i]=n.charCodeAt(i);return new Blob([r],{type:t})}function VA(){}var jA,WA,JA,qA,XA,YA,KA,ZA=function(){function u(e,t,n,i,r){te(this,u),this.qualityManager=e,this.maxNavQuality=this.qualityManager.getMaxNavPanoSize(),this.maxZoomQuality=this.qualityManager.getMaxZoomPanoSize(),this.baseSize=t,this.standardSize=n,this.highSize=i,this.ultraHighSize=r,this.priorityCriteria=new u.PriorityCriteria(null,new Re(0,0,0),new Re(0,0,-1),new Re(0,0,-1))}return A(u,[{key:"updateCriteria",value:function(e,t,n,i){this.priorityCriteria.pano=e,this.priorityCriteria.cameraPosition.copy(t),this.priorityCriteria.cameraDirs=n,this.priorityCriteria.upcomingPanos=i,this.maxNavQuality=this.qualityManager.getMaxNavPanoSize(),this.maxZoomQuality=this.qualityManager.getMaxZoomPanoSize()}},{key:"canDownloadSize",value:function(e){return this.maxNavQuality>=e||this.maxZoomQuality>=e&&this.zoomingActive}},{key:"populateScoredPanos",value:function(e,t,n,i,r){(n=n||[]).length=0;var a=[cy.filters.inPanoDirection(e.position,i,u.DIRECTION_SCORE_STRICTNESS),cy.filters.not(e)],e=[cy.scoreFunctions.distanceSquared(e),cy.scoreFunctions.direction(e.position,i)],o=ag.sortByScore(t,a,e);if(o)for(var s=0;s<o.length&&s<r;s++){var l=o[s].item;n.push(l)}return n}},{key:"queueTilesForPanos",value:function(e,t,n,i,r){for(var a=0,o=0;o<t.length;o++){var s=t[o];if(a+=0<this.queueTilesForPano(e,n,s,i)?1:0,r&&r<=a)break}return a}},{key:"canIncludeDescriptor",value:function(e){return e.status!==GA.Downloading&&e.status!==GA.Downloaded}},{key:"canIncludePano",value:function(e,t){return!e.isLoaded(t)}},{key:"getFOVDotThreshold",value:function(e){return Math.cos(Be.degToRad(e/2))}},{key:"setZoomingActive",value:function(e){e!==this.zoomingActive&&(this.zoomingActive=e)}}]),u}(),$A=(ZA.PriorityCriteria=function(e,t,n,i,r){this.pano=e,this.cameraPosition=(new Re).copy(t),this.cameraDirs=[],this.panoSpaceDir=(new Re).copy(i),this.upcomingPanos=r,this.copy=function(e){this.pano=e.pano,this.cameraPosition.copy(e.cameraPosition),this.cameraDirs=e.cameraDirs,this.panoSpaceDir.copy(e.panoSpaceDir),this.upcomingPanos=r},this.zoomingActive=!1},ZA.DIRECTIONAL_FOV=180,ZA.DIRECTIONAL_FOV_NARROW=120,ZA.MAX_SCORED_PANOS_TOCONSIDER=6,ZA.MAX_SCORED_PANOS_TOADD=2,ZA.MAX_UPCOMING_PANOS_TOADD=3,ZA.DIRECTION_SCORE_STRICTNESS=.75,ZA.appendQueue=function(e,t){if(e&&t)for(var n=0;n<t.length;n++)e.push(t[n])},ZA.sortPanoTiles=function(e,t,n){n.datasetsLocal&&(n=n.datasetsLocal.find(function(e){return e.datasetId==t.pointcloud.dataset_id}).direction),zA._panoSpaceDir.copy(n),E.getRelativeDirection(t.quaternion4dkk,zA._panoSpaceDir),zA._fovThresholdNarrow=ee.getFOVDotThreshold(ZA.DIRECTIONAL_FOV_NARROW),zA._fovThreshold=ee.getFOVDotThreshold(ZA.DIRECTIONAL_FOV),e.sort(zA)},ZA.insertSortedPanoTile=function(e,t,n,i){i.datasetsLocal&&(i=i.datasetsLocal.find(function(e){return e.datasetId==n.pointcloud.dataset_id}).direction),zA._panoSpaceDir.copy(i),E.getRelativeDirection(n.quaternion4dkk,zA._panoSpaceDir),zA._fovThresholdNarrow=ee.getFOVDotThreshold(ZA.DIRECTIONAL_FOV_NARROW),zA._fovThreshold=ee.getFOVDotThreshold(ZA.DIRECTIONAL_FOV);for(var r=-1,a=0;a<e.length;a++)if(zA(t,e[a])<=0){r=a;break}if(-1===r)e[e.length]=t;else{for(var o=e.length;r<o;o--)e[o]=e[o-1];e[r]=t}},ZA.prototype.filterDepthTex=function(e){var t;Potree.settings.useDepthTex&&this.priorityCriteria.pano&&(t=this.priorityCriteria.cameraDirs.vectorForward,this.populateScoredPanos(this.priorityCriteria.pano,e,e=[],t,ZA.MAX_SCORED_PANOS_TOCONSIDER),e.forEach(function(e){return e.loadDepthImg()}))},ZA.prototype.filterAndPrioritize=(jA=[],WA=[],JA=[],function(e,t,n){var i=this.priorityCriteria.cameraDirs.vectorForward,t=(this.populateScoredPanos(this.priorityCriteria.pano,t,WA,i,ZA.MAX_SCORED_PANOS_TOCONSIDER),WA.forEach(function(e){return e.loadDepthImg()}),this.baseSize),i=this.standardSize,r=this.highSize,a=this.ultraHighSize;this.queueTilesForPano(e,n,this.priorityCriteria.pano,t),this.priorityCriteria.upcomingPanos&&this.queueTilesForPanos(e,this.priorityCriteria.upcomingPanos,n,t,ZA.MAX_UPCOMING_PANOS_TOADD),JA.length=0,this.canDownloadSize(i)&&this.queueTilesInDirectionForPano(JA,n,this.priorityCriteria.pano,i,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,ZA.DIRECTIONAL_FOV_NARROW),ZA.sortPanoTiles(JA,this.priorityCriteria.pano,this.priorityCriteria.cameraDirs),ZA.appendQueue(e,JA),this.queueTilesForPanos(e,WA,n,t,ZA.MAX_SCORED_PANOS_TOADD),JA.length=0,this.canDownloadSize(r)&&this.queueTilesInDirectionForPano(JA,n,this.priorityCriteria.pano,r,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,ZA.DIRECTIONAL_FOV_NARROW),this.canDownloadSize(a)&&this.queueTilesInDirectionForPano(JA,n,this.priorityCriteria.pano,a,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,ZA.DIRECTIONAL_FOV_NARROW),ZA.sortPanoTiles(JA,this.priorityCriteria.pano,this.priorityCriteria.cameraDirs),ZA.appendQueue(e,JA),JA.length=0,this.canDownloadSize(i)&&this.queueTilesInDirectionForPano(JA,n,this.priorityCriteria.pano,i,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,ZA.DIRECTIONAL_FOV),this.canDownloadSize(r)&&this.queueTilesInDirectionForPano(JA,n,this.priorityCriteria.pano,r,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,ZA.DIRECTIONAL_FOV),this.canDownloadSize(a)&&this.queueTilesInDirectionForPano(JA,n,this.priorityCriteria.pano,a,this.priorityCriteria.cameraPosition,this.priorityCriteria.cameraDirs,ZA.DIRECTIONAL_FOV),ZA.sortPanoTiles(JA,this.priorityCriteria.pano,this.priorityCriteria.cameraDirs),ZA.appendQueue(e,JA),this.queueTilesForPanos(e,jA,n,t)}),ZA.prototype.queueTilesInDirectionForPano=(qA={filter:UA.DirectionalFOV,direction:new Re,fov:60},XA=new Re,function(e,t,n,i,r,a,o){a=a.datasetsLocal.find(function(e){return e.datasetId==n.pointcloud.dataset_id}).direction;return XA.copy(a),E.getRelativeDirection(n.quaternion4dkk,XA),qA.direction.copy(XA),qA.fov=o,this.filterAndQueueTileDownloadDescriptors(e,t,n,i,qA)}),ZA.prototype.filterAndQueueTileDownloadDescriptors=(YA=[],function(e,t,n,i,r){t=t.getTileDownloadDescriptors(n,i);YA.length=0,this.filterTileDownloadDescriptors(n,t,YA,r);for(var a=0,o=0;o<YA.length;o++){var s=YA[o];s&&(e.push(s),a++)}return a}),ZA.prototype.filterTileDownloadDescriptors=(new Re,function(e,t,n,i){var r,a;if(i.filter===UA.DirectionalFOV)for(r=0;r<t.length;r++)a=t[r],E.isTileWithinFOV(a.panoSize,a.tileSize,a.face,a.tileX,a.tileY,i.direction,i.fov)&&n.push(a);else for(r=0;r<t.length;r++)a=t[r],n.push(a);for(r=0;r<n.length;r++)a=n[r],this.canIncludeDescriptor(a)||(n[r]=null)}),ZA.prototype.queueTilesForPano=(KA={filter:UA.None},function(e,t,n,i){return this.filterAndQueueTileDownloadDescriptors(e,t,n,i,KA)}),[]),e0={NEXT:-999,SUCCESS:0,EXCEPTION:-1,FAILURE_CODE_3001:3001,FAILURE_CODE_3002:3002,FAILURE_CODE_3003:3003,FAILURE_CODE_3004:3004,FAILURE_CODE_3005:3005,FAILURE_CODE_3006:3006,FAILURE_CODE_3007:3007,FAILURE_CODE_3008:3008,FAILURE_CODE_3009:3009,FAILURE_CODE_3010:3010,FAILURE_CODE_3011:3011,FAILURE_CODE_3012:3012,FAILURE_CODE_3013:3013,FAILURE_CODE_3014:3014,FAILURE_CODE_3015:3015,FAILURE_CODE_3016:3016,FAILURE_CODE_3017:3017,FAILURE_CODE_3018:3018,FAILURE_CODE_5010:5010,FAILURE_CODE_5012:5012,FAILURE_CODE_5014:5014,FAILURE_CODE_5005:5005};$.ajaxSetup({headers:{},beforeSend:function(e){(t=sf.urlHasValue("token",!0))&&localStorage.setItem("token",t);var t=t||localStorage.getItem("token")||"";t?e.setRequestHeader("token",t):-1!=this.url.indexOf("isLogin")&&showLoginTips()},error:function(e,t,n){return-1!=this.url.indexOf("/scene.json")&&404==e.status?$alert({content:i18n.t("tips.scene_notfound")}):"POST"===this.type?$alert({content:i18n.t("tips.network_error")}):void 0},success:function(e){},complete:function(){"POST"===this.type&&o0.__loading&&$waiting.hide(),o0.__loading=!0}});var t0,n0,i0,r0,a0,o0={statusCode:e0,__loading:!0,__request:function(e,i,r,a,o,s){return"function"!=typeof o&&(o=VA),"function"!=typeof s&&(s=VA),e.done(function(e){var t,n;void 0!==e.code?(t=e.code,n=function(e){e!=e0.FAILURE_CODE_3001&&e!=e0.FAILURE_CODE_3002&&e!=e0.FAILURE_CODE_3003&&e!=e0.FAILURE_CODE_3004||-1==r.indexOf("isLogin")&&-1==r.indexOf("openSceneBykey")&&$A.push(function(){o0[i](r,a,o,s)}),s()},(t==e0.EXCEPTION?$alert({content:i18n.t("tips.exception")}):t==e0.FAILURE_CODE_3002||t==e0.FAILURE_CODE_3003||t==e0.FAILURE_CODE_3004?(n(t),showLoginTips()):t==e0.FAILURE_CODE_3001?(n(t),$alert({content:i18n.t("tips.params_notfound")})):t==e0.FAILURE_CODE_3017?(n(t),$alert({content:i18n.t("tips.file_notfound")})):t==e0.FAILURE_CODE_5005?(n(t),$alert({content:i18n.t("tips.scene_notfound")})):t==e0.FAILURE_CODE_5010?(n(t),$alert({content:i18n.t("tips.camera_notfound")})):t==e0.FAILURE_CODE_5012?(n(t),$alert({content:i18n.t("tips.data_error")})):t==e0.FAILURE_CODE_5014?(n(t),$alert({content:i18n.t("tips.auth_deny")})):e0.NEXT)===e0.NEXT&&o(e,0==e.code)):o(e)}),e.fail(s),e.always(function(){return e=null}),e},get:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return/\.json/.test(e)?this.getJson(e,t,n,i):this.__request($.get(e,t),"get",e,t,n,i)},getText:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.ajax({url:e,dataType:"text"}),"getText",e,t,n,i)},getJson:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.getJSON(e,t),"get",e,t,n,i)},getBlob:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.ajax({url:e,dataType:"blob"}),"getBlob",e,t,n,i)},getArraybuffer:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return this.__request($.ajax({url:e,dataType:"arraybuffer"}),"getArraybuffer",e,t,n,i)},post:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return-1==e.indexOf("isLogin")&&o0.__loading&&$waiting.show(),this.__request($.post(e,t),"post",e,t,n,i)},postJson:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;return o0.__loading&&$waiting.show(),this.__request($.ajax({type:"POST",url:e,contentType:"application/json",data:JSON.stringify(t)}),"postJson",e,t,n,i)},postForm:function(e,t,n,i,r){return"function"==typeof r?this.__request($.ajax({type:"POST",url:e,processData:!1,contentType:!1,data:t,xhr:function(){var e;return(e=new XMLHttpRequest).upload.addEventListener("progress",function(e){r(e.loaded/e.total*100+"%")}),e}}),"postForm",e,t,n,i):(o0.__loading&&$waiting.show(),this.__request($.ajax({type:"POST",url:e,processData:!1,contentType:!1,data:t}),"postForm",e,t,n,i))},loadImage:function(e){var t=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:3,i=$.Deferred(),r=new Image;return r.onerror=function(){0<n?setTimeout(function(){console.warn("Retrying load image: "+e),t.loadImage(e,n-1).done(i.resolve.bind(i)).progress(i.notify.bind(i)).fail(i.reject.bind(i))},1e3):i.reject("[".concat(e,"]加载失败"))},r.onload=function(){i.resolve(r)},r.crossOrigin="anonymous",r.src=e,i},uploadFile:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length?arguments[2]:void 0,r=3<arguments.length?arguments[3]:void 0,a=4<arguments.length?arguments[4]:void 0,o=new FormData;for(t in n)"file"==t?o.append("file",n[t],n.filename||n[t].name):"filename"!=t&&o.append(t,n[t]);return this.postForm(e,o,i,r,a)},uploadBlobFile:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=2<arguments.length?arguments[2]:void 0,r=3<arguments.length?arguments[3]:void 0,a=new FormData;for(t in n)"file"===t?a.append("file",QA(n.file),n.filename):"filename"!=t&&a.append(t,n[t]);return this.postForm(e,a,i,r)}},Fu=Potree.defines,s0=Fu.TileDownloaderEvents,l0=Fu.DownloadStatus,u0=(window.downloaded={},window.startdownloads=[],function(){y(n,zn);var e=C(n);function n(){var t;return te(this,n),(t=e.call(this)).panos=null,t.retryMinimumTime=1e4,t.panoLoadCallbacks={},t.downloadDescriptors={},t.priorityQueue=[],t.forceQueue=[],t.activeDownloads=[],t.tilePrioritizer=null,t.refreshInterval=null,t.processPriorityQueue=!1,t.concurrentDownloads=6,t.downloadTestResults={},t.freeze=Object.freeze({Testing:1,Success:2,Fail:3}),viewer.addEventListener("pageVisible",function(e){viewer.updateVisible(G(t),"pageVisible",e.v),t.judgeStart()}),t.visible=!0,Potree.settings.useDepthTex?t.judgeStart():viewer.updateVisible(G(t),"showPanos",!1),t}return A(n,[{key:"setPanoData",value:function(e,t){this.panos=e,this.imagePanos=t}},{key:"start",value:function(){this.downloadCubeTex=!0,Potree.settings.useDepthTex?this.refreshInterval||this.judgeStart():(viewer.updateVisible(this,"showPanos",!0),this.judgeStart())}},{key:"stop",value:function(){this.downloadCubeTex=!1,Potree.settings.useDepthTex||(viewer.updateVisible(this,"showPanos",!1),this.judgeStart())}},{key:"judgeStart",value:function(){this.visible?(this.started=!0,this.refreshUpdateInterval(0)):(this.started=!1,window.clearTimeout(this.refreshInterval))}},{key:"refreshUpdateInterval",value:function(e){e=e||0,this.refreshInterval=window.setTimeout(function(){this.update()?this.refreshUpdateInterval(n.ACTIVE_REFRESH_DELAY):this.refreshUpdateInterval(n.IDLE_REFRESH_DELAY)}.bind(this),e)}},{key:"update",value:function(){var e;if(this.downloadCubeTex)return e=0<this.forceQueue.length,this.processQueueForDownloading(this.forceQueue),this.processPriorityQueue&&(this.queuePrioritizedTilesForPanos(this.panos),0<this.priorityQueue.length&&(e=!0),this.processQueueForDownloading(this.priorityQueue)),e;this.tilePrioritizer.filterDepthTex(this.panos)}},{key:"queuePrioritizedTilesForPanos",value:function(e){this.tilePrioritizer&&(this.clearQueue(this.priorityQueue),this.tilePrioritizer.filterAndPrioritize(this.priorityQueue,e,this),this.clearFromQueue(this.priorityQueue,l0.None,!0),this.setStatusOrRemoveForAllDescriptors(this.priorityQueue,l0.Queued))}},{key:"clearQueue",value:function(e){this.setStatusForAllDescriptors(e,l0.None),e.length=0}},{key:"clearForceQueue",value:function(){this.clearQueue(this.forceQueue)}},{key:"clearFromQueue",value:function(e,t,n){for(var i=0;i<e.length;i++){var r=e[i];r&&(t===r.status&&!n||t!==r.status&&n)&&(e[i]=null)}}},{key:"setStatusForAllDescriptors",value:function(e,t){for(var n=0;n<e.length;n++){var i=e[n];i&&(i.status=t)}}},{key:"setStatusOrRemoveForAllDescriptors",value:function(e,t){for(var n=0;n<e.length;n++){var i=e[n];i&&(i.status!==t?i.status=t:e[n]=null)}}},{key:"getTileDownloadDescriptors",value:function(e,t){var n=this.getAllTileDownloadDescriptorsForPano(e),i=n[t];return i||(i=this.buildDownloadDescriptorArray(t),n[t]=i,this.initTileDownloadDescriptors(i,e,t)),i}},{key:"getAllTileDownloadDescriptorsForPano",value:function(e){var t=this.downloadDescriptors[e.id];return t||(this.downloadDescriptors[e.id]=t={}),t}},{key:"processQueueForDownloading",value:function(e,t){if(this.cleanupActiveDownloads(),this.activeDownloads.length<this.concurrentDownloads||t)for(var n=t?e.length:this.concurrentDownloads-this.activeDownloads.length,i=0;i<n&&0<e.length;0){var r=e.shift();if(r){if(512<r.panoSize&&!this.isPanoDownloaded(r.pano,512)){e.push(r);break}this.startDownload(r),i++}}}},{key:"testDownload",value:function(t,e,n){var i,r=this.downloadTestResults[t];r?r===this.freeze.Success?n(!0):r===this.freeze.Fail&&n(!1):(this.downloadTestResults[t]=this.freeze.Testing,r=this.panos[0],r=this.getTileUrl({pano:r,panoSize:t,tileSize:e,tileIndex:0}),e=function(e){this.downloadTestResults[t]=this.freeze.Success,n(!0)}.bind(this),i=function(){this.downloadTestResults[t]=this.freeze.Fail,n(!1)}.bind(this),this.loadImage(r,0,e,i))}},{key:"startDownload",value:function(e){startdownloads.push(e),e.local2SrcFailed=this.local2SrcFailed,e.status=l0.Downloading;var t=this.getTileUrl(e);t&&(this.activeDownloads.push(e),this.loadImage(t,n.DOWNLOAD_RETRIES,this.downloadComplete.bind(this,e),this.downloadFailed.bind(this,e)))}},{key:"downloadFailed",value:function(e,t){Potree.settings.isLocal2&&!e.local2SrcFailed&&(e.local2SrcFailed=this.local2SrcFailed=!0,t=this.getTileUrl(e),this.loadImage(t,n.DOWNLOAD_RETRIES,this.downloadComplete.bind(this,e),this.downloadFailed.bind(this,e)))}},{key:"downloadComplete",value:function(e,t){var n=this.getPanoLoadCallbacks(e.pano,e.panoSize),i=(e.status=l0.Downloaded,n&&n.onProgress&&n.onProgress(e.pano,e.panoSize),{panoId:e.pano.id,image:t,tileSize:e.tileSize,panoSize:e.panoSize,tileIndex:e.tileIndex,faceTileIndex:e.faceTileIndex,totalTiles:e.totalTiles,face:e.face,tileX:e.tileX,tileY:e.tileY,direction:e.direction});downloaded[e.pano.id]||(downloaded[e.pano.id]={512:[],1024:[],2048:[]}),downloaded[e.pano.id][e.panoSize]||(downloaded[e.pano.id][e.panoSize]=[]),downloaded[e.pano.id][e.panoSize].push(e),512!=e.panoSize&&downloaded[e.pano.id][512].length<6&&console.warn("没下完"),e.image=t,this.dispatchEvent({type:s0.TileDownloadSuccess,desc:i}),this.isPanoDownloaded(e.pano,e.panoSize)&&(i={panoId:e.pano.id,tileSize:e.tileSize,panoSize:e.panoSize},this.dispatchEvent({type:s0.PanoDownloadComplete,desc:i}),n)&&n.onLoad&&n.onLoad(e.pano,e.panoSize)}},{key:"isPanoDownloaded",value:function(e,t){var n=this.getTileDownloadDescriptors(e,t);if(n.length<=0)return!1;for(var i=0;i<n.length;i++)if(n[i].status!==l0.Downloaded)return!1;return!0}},{key:"setPanoLoadCallbacks",value:function(e,t,n,i,r){e=e.id+":"+this.qualityManager.getPanoSize(t);this.panoLoadCallbacks[e]={onLoad:n,onFail:i,onProgress:r}}},{key:"getPanoLoadCallbacks",value:function(e,t){e=e.id+":"+t;return this.panoLoadCallbacks[e]}},{key:"buildDownloadDescriptorArray",value:function(e){for(var t=E.getTileCountForSize(e),n=[],i=0;i<t;i++){var r=this.buildDownloadDescriptor();n.push(r)}return n}},{key:"buildDownloadDescriptor",value:function(){return{panoGroupId:null,pano:null,panoSize:-1,tileSize:-1,tileIndex:-1,totalTiles:-1,faceTileIndex:-1,status:l0.None,url:null,image:null,direction:new Re,face:-1,cubeFace:-1,tileX:-1,tileY:-1}}},{key:"initTileDownloadDescriptors",value:function(e,t,n){for(var i=0;i<e.length;i++){var r=e[i];this.initTileDownloadDescriptor(r,t,n,i)}}},{key:"initTileDownloadDescriptor",value:function(e,t,n,i){var r=E.TILE_SIZE<=n?E.TILE_SIZE:n;e.face=E.getFaceForTile(n,i),e.cubeFace=E.mapFaceToCubemapFace(e.face),e.pano=t,e.panoSize=n,e.tileSize=r,e.tileIndex=i,e.totalTiles=E.getTileCountForSize(n),e.status=l0.None,e.image=null,E.getTileLocation(e.panoSize,e.tileIndex,e),E.getTileVector(e.panoSize,e.tileSize,e.cubeFace,e.tileX,e.tileY,E.LocationOnTile.Center,0,e.direction)}},{key:"getTiles",value:function(e,t,n){return(Potree.settings.isLocal2&&!this.local2SrcFailed||n?"".concat(Potree.settings.urls.prefix3,"/scene_view_data/").concat(t,"/images/"):"".concat(Potree.settings.urls.prefix3,"/images/images").concat(t,"/")).concat(e)}},{key:"loadImage",value:function(e,t,n,i){o0.loadImage(e,t).then(function(e){n(e)}).fail(i)}}]),n}());function c0(e,t){this.tree=e,this.parent=t,this.children=[],this.id=++p0}function h0(e){e.root=function e(t,n,i){if(i>t.levels)return null;var r=new c0(t,n);t.allNodes.push(r);for(var a=0;a<d0;a++)r.children[a]=e(t,r,i+1);return r}(e,null,0)}u0.prototype.forceQueueTilesForPano=(t0=[],n0=[],function(e,t,n,i,r,a){t0.length=0;for(var o=this.getTileDownloadDescriptors(e,t),s=0;s<o.length;s++){var l=o[s];l.status!==l0.None&&l.status!==l0.Queued||t0.push(l)}if(n&&0<t0.length){ZA.sortPanoTiles(t0,e,n),n0.length=0,E.matchingTilesInDirection(e,t,n,i,r,n0);for(var u=0,c=function(e){return e.face===h.face&&e.faceTileIndex===h.faceTileIndex};u<t0.length;){var h=t0[u];n0.findIndex(c)<0?t0.splice(u,1):u++}}for(var d=0;d<t0.length;d++)this.forceQueue.push(t0[d]);this.setStatusForAllDescriptors(this.forceQueue,l0.ForceQueued),this.clearFromQueue(this.priorityQueue,l0.ForceQueued,!1),a&&this.processQueueForDownloading(this.forceQueue,!0)}),u0.prototype.cleanupActiveDownloads=(i0=[],function(){for(var e=i0.length=0;e<this.activeDownloads.length;e++){var t=this.activeDownloads[e];t.status!==l0.Downloaded&&t.status!==l0.Failed&&i0.push(t)}this.activeDownloads.length=0,this.activeDownloads.push.apply(this.activeDownloads,i0)}),u0.prototype.getTileUrl=(r0={256:"256",512:"512",1024:"1k",2048:"2k",4096:"4k"},a0={face:-1,faceTileIndex:-1,tileX:-1,tileY:-1},function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.pano.originID,n=e.panoSize,i=e.tileSize,r=e.tileIndex,a=e.pano.pointcloud.sceneCode,o=Potree.settings.testV4url&&"V4"==e.pano.pointcloud.datasetData.sceneVersion,i=(E.getTileLocation(n,r,a0),Math.floor(n/i)),r=Math.floor(r/(i*i)),i="",s="",s=Potree.settings.isLocal?(i=this.getTiles(i="tiles/"+t+"/"+r0[n]+"_face"+r+"_"+a0.tileX+"_"+a0.tileY+".jpg",a,o),"?"):(i="tiles/4k/"+t+"_skybox"+r+".jpg?x-oss-process=","512"==r0[n]?i+="image/resize,h_512":("1k"==r0[n]||"2k"==r0[n]?i+="image/resize,m_lfit,w_"+n+"/crop,w_512,h_512,":i="tiles/4k/"+t+"_skybox"+r+".jpg?x-oss-process=image/crop,w_512,h_512,",i=i+(0==a0.tileX?"x_0,":"x_"+512*a0.tileX+",")+(0==a0.tileY?"y_0":"y_"+512*a0.tileY)),i=this.getTiles(i,a,o),"&");return i+=s+"time="+e.pano.pointcloud.timeStamp}),u0.tilegen=!0,u0.IDLE_REFRESH_DELAY=500,u0.ACTIVE_REFRESH_DELAY=16,u0.DOWNLOAD_RETRIES=4;var d0=4,p0=0,f0=function(){function i(e,t){te(this,i),this.levels=t,this.tileSize=e,this.root=null,this.allNodes=[],h0(this)}return A(i,[{key:"getSubNode",value:function(e,t,n){(!t||e<this.tileSize)&&(t=0),(!n||e<this.tileSize)&&(n=0),e<this.tileSize&&(e=this.tileSize);e=i.getLevelCountForSize(this.tileSize,e);return function e(t,n,i,r,a){var o,s,l;return t?0===i?t:t.children&&0!==t.children.length?(s=r%(o=Math.pow(2,i)/2),l=a%o,a=Math.floor(a/o),r=Math.floor(r/o),e(t.children[2*a+r],n+1,i-1,s,l)):null:null}(this.root,0,e,t,n)}},{key:"breadthFirst",value:function(e){var t=!!(e=e||{}).nullLevelEnd,n=e.maxLevel,i=e.minLevel,r=e.callback,a=e.saveVisited,o=[],s={},l=0;for(o.push(this.root),o.push(s);0<o.length&&!(n&&n<l);){var u=o.shift();if(u===s)(!i||i<=l)&&(r&&t&&r(null),a)&&t&&a.push(null),0<o.length&&o.push(s),l++,0;else{if(u.children)for(var c=0;c<u.children.length;c++)u.children[c]&&o.push(u.children[c]);var h=this.getFaceIndexFromNode(u);(!i||i<=l)&&(r&&r(u,l,h),a)&&a.push(u),0}}}},{key:"getFaceIndexFromNode",value:function(e){if(!e)return-1;for(var t=1,n=e,i=0,r=0;;){var a=n.parent;if(!a)break;for(var o=-1,s=0;s<a.children.length;s++)a.children[s]===n&&(o=s);i=o%2*t+i,r=Math.floor(o/2)*t+r;t*=2,n=a}return r*t+i}},{key:"depthFirst",value:function(e,t,n){!function e(t,n,i,r,a,o,s,l){if(t){var u=2*r+i;if((s=s||f0.TraversalType.PreOrder)===f0.TraversalType.PreOrder&&(a&&a(t,n,u,i,r),o)&&o.push(t),t.children&&0!==t.children.length){for(var c=2*r,h=2*i,d=0;d<2;d++)for(var p=0;p<2;p++)e(t.children[2*p+d],n+1,h+d,c+p,a,o,s,l);s===f0.TraversalType.PostOrder&&(a&&a(t,n,u,i,r),o)&&o.push(t)}}}(this.root,0,0,0,e,t,n,this.tileSize)}}]),i}(),Od=(f0.TraversalType=Object.freeze({PreOrder:0,PostOrder:1}),f0.getLevelCountForSize=function(e,t){var n=0;for(t<e&&(t=e);!((t/=2)<e);)n++;return n},f0.getSizeForLevel=function(e,t){return Math.pow(2,t)*e},Potree.defines),m0=Od.PanoSizeClass,v0=Od.PanoRendererEvents,g0=Od.Vectors,A0=(Od.SceneRendererEvents,Od.TileDownloaderEvents),y0=Od.GLCubeFaces;var w0,b0,x0,E0,C0,B0,_0,M0,T0,S0,I0,D0,P0,k0,L0,R0,F0,O0,N0,G0,U0,z0=!1,H0=Gm.tiling.uploadIntervalDelay,Q0=Gm.tiling.initialIntervalDelay,V0=Gm.tiling.maxNonBaseUploadsPerFrame,j0=Gm.tiling.maxBaseUploadsPerFrame,W0=0,J0=1,q0=function(){y(a,zn);var r=C(a);function a(e,t,n){var i;return te(this,a),(i=r.call(this)).tileDirectory={},i.activeRenderTargetDescriptors={},i.activePanos=[],i.panoLODDescriptors={},i.panoDescriptors={},i.tileTrees={},i.forceQueue=[],i.uploadQueues={},i.uploadInterval=null,i.uploadIntervalCancelled=!1,i.usingTileOverlay=!1,i.overlayTilesLoaded=!1,i.overlayTileBase=null,i.overlayTilesBasic={},i.overlayTilesEnhanced={},i.zoomRenderTarget=null,i.zoomPano=null,i.zoomingActive=!1,i.zoomPanoId=null,i.zoomPanoRenderingDisabled=!1,i.direction=[],i.maxBaseUploadsPerFrame=j0,i.maxNonBaseUploadsPerFrame=V0,i.M=[],i.viewer=e,i.tileDownloader=t,i.qualityManager=n,i.initTime=performance.now(),i.bindEvents(),i}return A(a,[{key:"getActivePanoTextures",value:function(e){e=e||[];for(var t=0;t<M.length;t++){var n=M[t];n.renderTarget&&n.renderTarget.texture&&e.push(n.renderTarget.texture)}}},{key:"hasQueuedTiles",value:function(){var e=this.peekNextFromUploadQueue();return null!=e}},{key:"getActiveRenderTargetDescriptor",value:function(e){return this.activeRenderTargetDescriptors[e]}},{key:"setActiveRenderTargetDescriptor",value:function(e,t){this.activeRenderTargetDescriptors[e]=t}},{key:"bindEvents",value:function(){this.tileDownloader.addEventListener(A0.TileDownloadSuccess,this.onTileDownloaded.bind(this))}},{key:"enableUltraHighQualityMode",value:function(t){if("2k"==Gm.tileClass||"1k"==Gm.tileClass)return this.enableHighQuality(t);var e;this.qualityManager.ultraHighQualityModeEnabled()||(e=this.qualityManager.getPanoSize(m0.ULTRAHIGH),this.tileDownloader.testDownload(e,E.TILE_SIZE,function(e){e&&(this.qualityManager.enableUltraHighQualityMode(),this.setupZoomRenderTarget(),t())}.bind(this)))}},{key:"activateTiledPano",value:function(e,t,n){n&&this.clearAllQueuedUploads();for(var i=0;i<E.FACES_PER_PANO;i++)this.initTileTree(e.id,i,this.qualityManager.getMaxPossiblePanoSize());this.linkAllTilesAndNodes(e);var r=this.getActiveRenderTargetDescriptor(e.id),t=(t>this.qualityManager.getMaxNavPanoSize()&&(t=this.qualityManager.getMaxNavPanoSize()),r&&t===r.size||(r&&this.deactiveDescripor(r.renderTarget),(r=this.activeDescripor(t))||(t=this.initTiledPano(t,!sf.isMobile()),(r=this.initDescriptor(t.width)).renderTarget=t),r.pano=e,this.resetPanoDescriptor(e.id),this.resetPanoLODDescriptors(e.id),this.resetRenderStatus(e.id,!0,!0)),this.setActiveRenderTargetDescriptor(e.id,r),n?0:1);return this.updateActivePanos(e,t),r.renderTarget}},{key:"deactivateTiledPano",value:function(e){var t=this.getActiveRenderTargetDescriptor(e.id),t=(this.isRenderTargetDescriptorValid(t)&&(this.deactiveDescripor(t.renderTarget),this.setActiveRenderTargetDescriptor(e.id,null)),this.getUploadQueueForPano(e.id));this.clearUploadQueue(t),this.updateActivePanos(),viewer.cancelLoad(e)}},{key:"getActivePanoCount",value:function(){return this.activePanos.length}},{key:"resetRenderStatus",value:function(e,r,a,t){var n=null;t&&(n=f0.getLevelCountForSize(E.TILE_SIZE,t)+1);for(var i=function(e,t,n,i){a&&(t.tile.zoomUploaded=!1),r&&(t.tile.uploaded=!1)},o=0;o<E.FACES_PER_PANO;o++)this.getTileTree(e,o).breadthFirst({callback:i.bind(this,o),minLevel:n})}},{key:"copyBaseRenderStatusToZoomed",value:function(e){for(var t=f0.getLevelCountForSize(E.TILE_SIZE,this.qualityManager.getMaxNavPanoSize()),n=function(e,t,n,i){t.tile.zoomUploaded=t.tile.uploaded,t.zoomCovered=t.covered},i=0;i<E.FACES_PER_PANO;i++)this.getTileTree(e,i).breadthFirst({callback:n.bind(this,i),maxLevel:t})}},{key:"isRenderTargetDescriptorValid",value:function(e){return e&&e.renderTarget}},{key:"isPanoActive",value:function(e){e=this.getActiveRenderTargetDescriptor(e);return this.isRenderTargetDescriptorValid(e)}},{key:"isPanoZoomed",value:function(e){return this.zoomingActive&&this.zoomPanoId===e}},{key:"initTileTree",value:function(e,t,n){var i=this.tileTrees[e],e=(i||(this.tileTrees[e]=i=[]),i[t]);e||(n=f0.getLevelCountForSize(E.TILE_SIZE,n),e=new f0(E.TILE_SIZE,n),i[t]=e)}},{key:"getTileTree",value:function(e,t){e=this.tileTrees[e],e||console.error("PanoRenderer.getTileTree() -> Tree array not yet initialized!"),e=e[t];return e||console.error("PanoRenderer.getTileTree() -> Tree not yet initialized!"),e}},{key:"initTiledPano",value:function(e,t){var n=this.viewer.renderer,e=new Aa(e,{stencilBuffer:!1}),i=new ga([]),t=(i.image=[null,null,null,null,null,null],i.flipY=!0,i.format=St,t?(i.generateMipmaps=!0,i.magFilter=U,i.minFilter=ft):(i.generateMipmaps=!1,i.magFilter=U,i.minFilter=U),e.texture=i,n.setRenderTarget(e),n.setRenderTarget(null),n.properties.get(i));return t.__image__webglTextureCube=t.__webglTexture,e}},{key:"getUploadQueueForPano",value:function(e){var t=this.uploadQueues[e];return t||(this.uploadQueues[e]=t=[]),t}},{key:"isTileUploaded",value:function(e){return this.isPanoZoomed(e.panoId)?e.zoomUploaded:e.uploaded}},{key:"setUploaded",value:function(e,t){this.isPanoZoomed(e.panoId)?e.zoomUploaded=t:e.uploaded=t}},{key:"queueTileUpload",value:function(e,t,n){var i,r=this.getActiveRenderTargetDescriptor(e.panoId);!this.isRenderTargetDescriptorValid(r)||!e.downloaded||this.isTileUploaded(e)||e.uploadQueued&&!n||e.panoSize>this.qualityManager.getMaxNavPanoSize()&&!this.zoomingActive||(i=this.getUploadQueueForPano(e.panoId),n?this.uploadTile(e,!1):(this.shoulPushToFrontOfQueue(e)?this.forceQueue.push(e):t&&this.direction?ZA.insertSortedPanoTile(i,e,r.pano,this.direction):i.push(e),e.uploadQueued=!0,this.uploadInterval||this.uploadIntervalCancelled||this.refreshUploadInterval(0)))}},{key:"shoulPushToFrontOfQueue",value:function(e){return 0===f0.getLevelCountForSize(E.TILE_SIZE,e.panoSize)}},{key:"getTopUploadQueue",value:function(){for(var e,t,n=W0;n<=J0;n++)for(var i=0;i<this.activePanos.length;i++)if(e=this.activePanos[i],0<(t=this.getUploadQueueForPano(e.id)).length)switch(n){case W0:if(0===t[0].level)return t;break;case J0:return t}return null}},{key:"peekNextFromUploadQueue",value:function(){var e;return 0<this.forceQueue.length?this.forceQueue[0]:(e=this.getTopUploadQueue())&&0<e.length?e[0]:null}},{key:"clearAllQueuedUploads",value:function(){this.clearAllUploadQueues(null,0)}},{key:"clearAllQueuedUploadsForPano",value:function(e){this.clearAllUploadQueues(e,0)}},{key:"clearAllUploadQueues",value:function(e,t){if(e)this.clearUploadQueue(this.getUploadQueueForPano(e),t),this.clearUploadQueue(this.forceQueue,t,e);else{for(var n=0;n<this.activePanos.length;n++){var i=this.activePanos[n];this.clearUploadQueue(this.getUploadQueueForPano(i.id),t)}this.clearUploadQueue(this.forceQueue,t)}}},{key:"clearUploadQueue",value:function(e,t,n){null==t&&(t=0);for(var i=0;i<e.length;){var r=e[i];(!n||n===r.tile.panoId)&&r.level>=t?(r.uploadQueued=!1,e.splice(i,1)):i++}}},{key:"updateUploadQueue",value:function(e,t){e=e||1;for(var n=0,i=0;!(t<=i||e<=n);){var r,a=this.getNextFromUploadQueue();if(!a)break;0!==a.level?n++:i++,a.panoSize>this.qualityManager.getMaxNavPanoSize()&&!this.zoomingActive||(r=this.getActiveRenderTargetDescriptor(a.panoId),this.isRenderTargetDescriptorValid(r)&&this.uploadTile(a,a.forceUpload))}}},{key:"updateDirection",value:function(e){if(e=e||this.direction){this.direction=e;for(var t=0;t<this.activePanos.length;t++){var n=this.activePanos[t],i=this.getUploadQueueForPano(n.id);ZA.sortPanoTiles(i,n,this.direction)}}}},{key:"anyUploaded",value:function(e){if(e){if(e.tile&&this.isTileUploaded(e.tile))return!0;if(e.children)for(var t=0;t<e.children.length;t++){var n=e.children[t];if(this.anyUploaded(n))return!0}}return!1}},{key:"setNodeCovered",value:function(e,t){this.isPanoZoomed(e.tile.panoId)?e.zoomCovered=t:e.covered=t}},{key:"isNodeCovered",value:function(e){return!!e&&(this.isPanoZoomed(e.tile.panoId)?e.zoomCovered:e.covered)}},{key:"addCoverageForNode",value:function(e){this.setNodeCovered(e,!0),e.parent&&e.covered&&(e=e.parent,this.nodeSubcovered(e))&&this.addCoverageForNode(e,!0)}},{key:"calcFullCoverage",value:function(e){var t=!1;if(e.children)for(var n=0;n<e.children.length;n++)var i=e.children[n],t=t||this.calcFullCoverage(i);e.covered=e.tile.uploaded||t}},{key:"nodeSubcovered",value:function(e){if(!e.children)return!1;for(var t=0;t<e.children.length;t++)if(!e.children[t]||!this.isNodeCovered(e.children[t]))return!1;return!0}},{key:"resetPanoDescriptor",value:function(e){this.getPanoDescriptor(e)}},{key:"getPanoDescriptor",value:function(e){var t=this.panoDescriptors[e];return t||(this.panoDescriptors[e]=t={}),t}},{key:"resetPanoLODDescriptors",value:function(e){var t,n,i=this.getPanoLODDescriptors(e);for(t in i)i.hasOwnProperty(t)&&((n=i[t]).uploadCount=0,n.uploadAttempts=0,n.uploaded=[])}},{key:"getPanoLODDescriptor",value:function(e,t){var e=this.getPanoLODDescriptors(e),n=e[t];return n||(e[t]=n={uploadCount:0,uploadAttempts:0,uploaded:[]}),n}},{key:"getPanoLODDescriptors",value:function(e){var t=this.panoLODDescriptors[e];return t||(this.panoLODDescriptors[e]=t={}),t}},{key:"onTileDownloaded",value:function(e){var e=e.desc,t=f0.getLevelCountForSize(E.TILE_SIZE,e.panoSize),t=this.getTileDirectoryEntry(e.panoId,e.face,t,e.faceTileIndex);t.downloaded=!0,t.image=e.image,t.panoSize=e.panoSize,t.tileX=e.tileX,t.tileY=e.tileY,t.totalTiles=e.totalTiles,t.tileIndex=e.tileIndex,t.faceTileIndex=e.faceTileIndex,t.face=e.face,t.cubeFace=E.mapFaceToCubemapFace(e.face),t.panoId=e.panoId,t.tileSize=e.tileSize,t.direction=(new Re).copy(e.direction),t.node=null,t.level=f0.getLevelCountForSize(E.TILE_SIZE,t.panoSize),this.isPanoActive(t.panoId)&&(e=this.getTileTree(t.panoId,t.face).getSubNode(t.panoSize,t.tileX,t.tileY),this.linkTileAndNode(t,e),this.queueTileUpload(t,!0))}},{key:"getTileDirectoryEntry",value:function(e,t,n,i){var r=this.tileDirectory[e],a=(r||(this.tileDirectory[e]=r={}),16384*t+1024*n+i),o=r[a];return o||(r[a]=o={downloaded:!1,uploaded:!1,zoomUploaded:!1}),o._key=e+":"+t+":"+n+":"+i,o._tileKey=a,o}},{key:"setZoomingActive",value:function(e,t,n){this.zoomPanoRenderingDisabled||e===this.zoomingActive&&this.zoomPanoId===t.id||(this.zoomingActive=e,this.zoomPanoId=t.id,this.zoomingActive&&(this.zoomPanoId!==t.id||n)&&this.updateZoomedPanoFromBase(t))}},{key:"updateZoomedPanoFromBase",value:function(e){var t,n,i;!this.zoomPanoRenderingDisabled&&this.zoomRenderTarget&&(i=this.getActiveRenderTargetDescriptor(e.id))&&i.renderTarget&&(t=Math.min(this.qualityManager.maxRenderTargetSize,this.qualityManager.getMaxZoomPanoSize()),n=i.renderTarget,i=i.size,this.copyCubeMap(n.texture,this.zoomRenderTarget,i,i,t,t),this.copyBaseRenderStatusToZoomed(e.id))}},{key:"add",value:function(e){this.M.push(e)}},{key:"initDescriptor",value:function(e){var t={renderTarget:null,inUse:!1,size:-1,pano:null};return t.inUse=!0,t.size=e,this.add(t),t}},{key:"activeDescripor",value:function(e){for(var t=0;t<this.M.length;t++){var n=this.M[t];if(!n.inUse&&n.size===e)return n.inUse=!0,n}return null}},{key:"deactiveDescripor",value:function(e){for(var t=0;t<this.M.length;t++){var n=this.M[t];if(n.renderTarget===e)return!(n.inUse=!1)}return!1}},{key:"enableHighQuality",value:function(e){this.qualityManager.highQualityModeStarted||(this.setupZoomRenderTarget(),e(),this.qualityManager.highQualityModeStarted=!0)}},{key:"linkTileAndNode",value:function(e,t){(t.tile=e).node=t}},{key:"linkAllTilesAndNodes",value:function(a){for(var e=function(e,t,n,i,r){t=this.getTileDirectoryEntry(a.id,t,i,r);this.linkTileAndNode(t,n)},t=0;t<E.FACES_PER_PANO;t++){var n=this.getTileTree(a.id,t);n.breadthFirst({callback:e.bind(this,n,t)})}}},{key:"initSizedTexture2D",value:function(e,t,n){var i=this.viewer.renderer,r=i.getContext(),a=i.state,o=new Xn(null),s=(o.flipY=!1,o.generateMipmaps=n=!0!==n?!1:n,i.paramThreeToGL(o.format)),l=i.paramThreeToGL(o.type),u=i.properties.get(o),c=r.createTexture(),e=(a.bindTexture(r.TEXTURE_2D,c),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,o.flipY),r.texImage2D(r.TEXTURE_2D,0,s,e,e,0,s,l,null),o.wrapS=t,o.wrapT=t,i.paramThreeToGL(t));return r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,e),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,e),n?(o.magFilter=U,o.minFilter=ft,r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR_MIPMAP_NEAREST),r.generateMipmap(r.TEXTURE_2D)):(o.magFilter=U,o.minFilter=U,r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR)),a.bindTexture(r.TEXTURE_2D,null),u.__webglTexture=c,o}},{key:"deallocateCubeTexture",value:function(e){var t=this.viewer.renderer,n=t.getContext(),t=t.properties.get(e);n.deleteTexture(t.__image__webglTextureCube)}},{key:"uploadTexture2D",value:function(e,t,n,i,r,a){var o=this.viewer.renderer,s=o.getContext(),l=o.state,u=o.properties.get(t);l.bindTexture(s.TEXTURE_2D,u.__webglTexture),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,t.flipY),s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),s.pixelStorei(s.UNPACK_ALIGNMENT,t.unpackAlignment),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,o.paramThreeToGL(t.wrapS)),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,o.paramThreeToGL(t.wrapT)),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,o.paramThreeToGL(t.magFilter)),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,o.paramThreeToGL(t.minFilter)),s.texSubImage2D(s.TEXTURE_2D,0,n,i,s.RGBA,s.UNSIGNED_BYTE,e),t.generateMipmaps&&s.generateMipmap(s.TEXTURE_2D),l.bindTexture(s.TEXTURE_2D,null)}},{key:"getCubeOrientationForCubeFace",value:function(e,t){switch(e){case y0.GL_TEXTURE_CUBE_MAP_POSITIVE_X:t.set(0,-Math.PI/2,0);break;case y0.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:t.set(0,Math.PI/2,0);break;case y0.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:t.set(Math.PI/2,Math.PI,0);break;case y0.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:t.set(-Math.PI/2,Math.PI,0);break;case y0.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:t.set(0,-Math.PI,0);break;case y0.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:t.set(0,0,0)}}}]),a}();function X0(e){return(e=e.shift()).uploadQueued=!1,e}q0.prototype.setupZoomRenderTarget=(w0={},function(){var e,t,n;"2k"==this.qualityManager.maxRenderTargetSize&&"2k"==this.qualityManager.getMaxNavPanoSize()||(this.qualityManager.getMaxZoomPanoSize()>=this.qualityManager.getMaxNavPanoSize()?this.zoomRenderTarget&&this.zoomRenderTarget.width===this.qualityManager.getMaxZoomPanoSize()||(e=this.zoomRenderTarget,(t=this.qualityManager.getMaxZoomPanoSize())>this.qualityManager.maxRenderTargetSize)||(w0[t]?this.zoomRenderTarget=w0[t]:(this.zoomRenderTarget=this.initTiledPano(t,!1),w0[t]=this.zoomRenderTarget),e&&(t=e.width,n=this.zoomRenderTarget.width,this.copyCubeMap(e.texture,this.zoomRenderTarget,t,t,n,n),e.texture.dispose(),e.texture.loaded=!1,e.texture.version=0,this.deallocateCubeTexture(e.texture),e.texture=null),this.zoomPanoRenderingDisabled=!1):this.zoomPanoRenderingDisabled=!0)}),q0.prototype.updateActivePanos=(b0=[],function(e,t){for(var n=b0.length=0;n<this.activePanos.length;n++){e&&b0.length===t&&b0.push(e);var i=this.activePanos[n],r=this.getActiveRenderTargetDescriptor(i.id);e&&i.id===e.id||!this.isRenderTargetDescriptorValid(r)||b0.push(i)}e&&b0.length<=t&&b0.push(e),this.activePanos.length=0,this.activePanos.push.apply(this.activePanos,b0)}),q0.prototype.renderPanoTiles=(x0=[],function(e,t,n,i){this.zoomRenderTarget&&this.zoomRenderTarget.width===this.qualityManager.getMaxZoomPanoSize()||this.zoomPanoRenderingDisabled||this.setupZoomRenderTarget(),t=t||this.direction||g0.FORWARD;var r=this.getActiveRenderTargetDescriptor(e);this.isRenderTargetDescriptorValid(r)||console.error("PanoRenderer.renderPanoTiles() -> Cannot render to a pano that is not activated.");for(var a=0;a<E.FACES_PER_PANO;a++){var o=this.getTileTree(e,a);x0.length=0,o.breadthFirst({saveVisited:x0});for(var s=0;s<x0.length;s++)this.queueTileUpload(x0[s].tile,!1,i||0===s&&n)}this.updateDirection(t)}),q0.prototype.getNextFromUploadQueue=function(){var e;return 0<this.forceQueue.length?X0(this.forceQueue):(e=this.getTopUploadQueue())&&0<e.length?X0(e):null},q0.prototype.refreshUploadInterval=(E0=null,function(e){this.uploadIntervalCancelled||(E0=E0||function(){this.uploadIntervalCancelled||(this.overlayTilesLoaded||!this.usingTileOverlay?(z0=!0,this.updateUploadQueue(this.maxNonBaseUploadsPerFrame,this.maxBaseUploadsPerFrame),this.peekNextFromUploadQueue()?this.refreshUploadInterval(H0):this.uploadInterval=null):this.refreshUploadInterval(this.uploadIntervalDelay))}.bind(this),null==e&&(e=H0),z0||(e=Q0),this.uploadInterval=window.setTimeout(E0,e),this.uploadIntervalDelay=e)}),q0.prototype.update=(C0=performance.now(),B0=0,function(){this.uploadIntervalCancelled=!0,window.clearTimeout(this.uploadInterval),this.uploadInterval=null;var e=performance.now()-C0;!(H0<e||0===B0)||!this.overlayTilesLoaded&&this.usingTileOverlay||(this.updateUploadQueue(this.maxNonBaseUploadsPerFrame,this.maxBaseUploadsPerFrame),C0=performance.now()),B0++}),q0.prototype.uploadTile=(_0={},M0=Gm.tiling.overlayStyle,function(e,t){function n(){g.uploaded.includes(c)||(g.uploaded.push(c),g.uploadCount++),a.dispatchEvent({type:v0.TileRenderSuccess,id:o,panoSize:u,tileIndex:c,totalTiles:h}),g.uploadCount===h&&a.dispatchEvent({type:v0.PanoRenderComplete,id:o,panoSize:u,totalTiles:h,updateFullComplete:!0}),a.setUploaded(e,!0),a.addCoverageForNode(e.node)}var i,r,a=this,o=e.panoId,s=e.image,l=e.tileSize,u=e.panoSize,c=e.tileIndex,h=e.totalTiles,d=e.tileX,p=e.tileY,f=!0,m=!1,v=!1,g=(this.getPanoDescriptor(o),this.getPanoLODDescriptor(o,u)),A=this.getActiveRenderTargetDescriptor(o),y=A.renderTarget,w=A.size;this.isPanoZoomed(o)&&this.zoomRenderTarget&&(y=this.zoomRenderTarget,w=this.zoomRenderTarget.width);return this.isRenderTargetDescriptorValid(A)||(m=f=!1),t||(this.anyUploaded(e.node)&&(v=m=!(f=!1)),this.isTileUploaded(e)&&(v=!(m=f=!1))),f?(A=l/u*w,t=d*l/u*w,f=p*l/u*w,_0[l]||(_0[l]=this.initSizedTexture2D(l,st)),u>this.qualityManager.maxRenderTargetSize?(r=this.initSizedTexture2D(l,st),i=this.viewer.images360.isHighMapLoaded(e.cubeFace,d,p)):r=_0[l],this.uploadTexture2D(s,r,0,0,l,l),u>this.qualityManager.maxRenderTargetSize?i||this.viewer.images360.updateHighMap(r,e.cubeFace,d,p):1===M0||2===M0?(w=1===M0?this.overlayTilesBasic:this.overlayTilesEnhanced,this.renderToCubeMap(r,y,l,l,0,0,l,l,t,f,A,A,e.cubeFace),this.renderToCubeMap(w[u],y,l,l,0,0,l,l,t,f,A,A,e.cubeFace,Ae,!0,.5)):this.renderToCubeMap(r,y,l,l,0,0,l,l,t,f,A,A,e.cubeFace),n()):v?n():(o+":"+u+":"+c,this.setUploaded(e,!1)),e.uploadAttempted||(g.uploadAttempts++,this.dispatchEvent({type:v0.TileUploadAttempted,id:o,panoSize:u,tileIndex:c,totalTiles:h})),e.uploadAttempted=!0,g.uploadAttempts===h&&this.dispatchEvent({type:v0.UploadAttemptedForAllTiles,id:o,panoSize:u,totalTiles:h}),m}),q0.prototype.renderToCubeMap=(T0=!1,k0=P0=D0=I0=S0=null,function(e,t,n,i,r,a,o,s,l,u,c,h,d,p,f,m){var v=this.viewer.renderer,g=(T0||((I0=new mh(-.5,.5,.5,-.5,-200,200)).position.z=150,(S0=new Ps).add(I0),D0=new pa({uniforms:{map:{type:"t",value:null},opacity:{type:"f",value:1}},vertexShader:nm["basicTextured.vs"],fragmentShader:nm["basicTextured.fs"],depthWrite:!1,depthTest:!1,side:ve}),P0=new Ba(1,1),(k0=new Z(P0,D0)).position.z=0,S0.add(k0),T0=!0),P0.getAttribute("uv")),g=(g.setDynamic(!0),g.needsUpdate=!0,g.array),r=r/n,a=a/i,o=o/n,n=s/i,s=(g[0]=r,g[1]=a+n,g[2]=r+o,g[3]=a+n,g[4]=r,g[5]=a,g[6]=r+o,g[7]=a,P0.getAttribute("position")),i=(s.setDynamic(!0),s.needsUpdate=!0,s.array),n=l/t.width-.5,r=u/t.height-.5,o=c/t.width,g=h/t.height,a=(i[0]=n,i[1]=r+g,i[3]=n+o,i[4]=r+g,i[6]=n,i[7]=r,i[9]=n+o,i[10]=r,v.properties.get(S0),D0.uniforms.map.value=e,D0.blending=p||ge,D0.transparent=!!f,D0.uniforms.opacity.value=m=null==m?1:m,D0.needUpdate=!0,t.viewport.set(0,0,t.width,t.height),v.autoClear),s=v.getRenderTarget();v.autoClear=!1,v.setRenderTarget(t,d),v.render(S0,I0),v.setRenderTarget(s),v.autoClear=a}),q0.prototype.copyCubeMap=(R0=!1,G0=N0=O0=F0=null,U0=new ki,function(e,t,n,i,r,a,o,s,l){if(!(r>this.qualityManager.maxRenderTargetSize)){R0||((O0=new mh(-1,1,1,-1,0,200)).position.set(0,0,0),(F0=new Ps).add(O0),N0=new pa({uniforms:{tDiffuse:{type:"t",value:null},alpha:{type:"f",value:1}},vertexShader:nm["copyCubeMap.vs"],fragmentShader:nm["copyCubeMap.fs"],depthWrite:!1,depthTest:!1,side:ve}),L0=new Ql(2,2,2),G0=new Z(L0,N0),F0.add(G0),R0=!0);var u=this.viewer.renderer.autoClear,c=this.viewer.renderer.getRenderTarget();this.viewer.renderer.autoClear=!1,N0.uniforms.tDiffuse.value=e,N0.blending=o||ge,N0.transparent=!!s,N0.uniforms.alpha.value=l=null==l?1:l,N0.needUpdate=!0;for(var h=0;h<6;h++)this.getCubeOrientationForCubeFace(h,U0),G0.rotation.copy(U0),G0.matrixWorldNeedsUpdate=!0,G0.updateMatrixWorld(),t.viewport.set(0,0,r,a),this.viewer.renderer.setRenderTarget(t,h),this.viewer.renderer.render(F0,O0);this.viewer.renderer.autoClear=u,this.viewer.renderer.setRenderTarget(c)}});function Y0(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}function K0(e,t){Y0.call(this),this.textureID=void 0!==t?t:"tDiffuse",e instanceof pa?(this.uniforms=e.uniforms,this.material=e):e&&(this.uniforms=ca.clone(e.uniforms),this.material=new pa({defines:Object.assign({},e.defines),uniforms:this.uniforms,vertexShader:e.vertexShader,fragmentShader:e.fragmentShader,transparent:!0})),this.camera=new mh(-1,1,1,-1,0,1),this.scene=new Ps,this.quad=new Z(new Ba(2,2),null),this.quad.frustumCulled=!1,this.scene.add(this.quad)}function Z0(e){return(iy=iy||{position:Fv.createFatLineMat({color:Oy,lineWidth:3}),target:Fv.createFatLineMat({color:Ny,lineWidth:3}),frustum:Fv.createFatLineMat({color:Oy,lineWidth:2}),aimAtTarget:new vl({color:Ny})})[e]}var $0,ey,ty,ny,iy,ry=function(){function t(){te(this,t);var e=document.createElement("canvas");this.canvas=e,this.context=e.getContext("2d")}return A(t,[{key:"changeImg",value:function(e){this.img!=e&&(this.canvas.width=e.width,this.canvas.height=e.height,this.context.drawImage(e,0,0),this.img=e)}},{key:"getDepth",value:function(e,t){var e=Math.round(e*(this.canvas.width-1)),t=Math.round(t*(this.canvas.height-1));if(!(e<0||t<0||e>=this.canvas.width||t>=this.canvas.height))return(e=this.context.getImageData(e,t,1,1).data)[1]+e[0]/256}},{key:"sample",value:function(e,t,n){if(e){var i=new THREE.Vector3;if((t=t||viewer.images360.currentPano)!=this.currentPano){if(!t.depthTex)return;this.changeImg(t.depthTex.image),this.currentPano=t}var r,a,o,s=t.position,e=e.dir||(new THREE.Vector3).subVectors(e.point,s).normalize(),l=e.clone().applyMatrix4(t.panoMatrix2Inverse).normalize(),l=ee.getUVfromDir(l),u=this.getDepth(l.x,l.y);return u?(i.copy(e).multiplyScalar(u).add(s),n||(n=this.getNearbyPoint(s,l,-1,0),o=this.getNearbyPoint(s,l,1,0),r=this.getNearbyPoint(s,l,0,-1),a=this.getNearbyPoint(s,l,0,1),o=this.planeFit(e,i,n,o,r,a)),{location:i,normal:o,distance:u}):.75<l.y&&(u=(t.floorPosition.z-s.z-.1)/e.z,i.copy(e).multiplyScalar(u).add(s),{location:i,normal:new THREE.Vector3(0,0,1),distance:u})}}},{key:"getNearbyPoint",value:function(e,t,n,i){t=t.clone(),t.x+=n/(this.canvas.width-1),t.x=this.clampUV(t.x),t.y+=i/(this.canvas.height-1),t.y=this.clampUV(t.y),n=ee.getDirFromUV(t),n.applyMatrix4(viewer.images360.currentPano.panoMatrix2),i=this.getDepth(t.x,t.y);return(new THREE.Vector3).copy(n).multiplyScalar(i).add(e)}},{key:"clampUV",value:function(e){return(e+1)%1}},{key:"planeFit",value:function(n,i,e,t,r,a){var o=new THREE.Vector3,s=new THREE.Plane;function l(e,t){e&&t&&(s.setFromCoplanarPoints(i,e,t),o.addScaledVector(s.normal,n.dot(s.normal)<0?1:-1))}if(l(e,r),l(e,a),l(t,r),l(t,a),0!==o.x||0!==o.y||0!==o.z)return o.normalize(),o}}]),t}(),td=Potree.defines,ay=td.PanoSizeClass,oy=td.Vectors,sy=td.GLCubeFaces,ly=td.PanoramaEvents,uy=((new X).setFromAxisAngle(new Re(0,0,1),Math.PI/2),new gd,new Nc,new L({side:me}),[]),cy=function(){y(c,zn);var u=C(c);function c(r){te(this,c),(a=u.call(this)).viewer=r,a.selectingEnabled=!0,a.panos=[],a.neighbourMap={},a.node=new K,a.node.name="ImagesNode",a.cubePanos=[],a.cube=new Z(new sa(1,1,1,1),new BA),r.updateVisible(a.cube,"showSkybox",!1),a.cube.layers.set(Potree.config.renderLayers.skybox),a.cube.name="skyboxCube",r.scene.scene.add(a.cube),Potree.settings.testCube&&(a.cubeTest=a.cube.clone(),a.cubeTest.material=new L({wireframe:!0,color:"#FF3377",transparent:!0,opacity:.7,depthWrite:!1,depthTest:!1}),r.scene.scene.add(a.cubeTest),a.cubeTest.visible=!0),a._visible=!0,a.currentPano=null,a.mouseLastMoveTime=Date.now(),a.scrollZoomSpeed=.06,a.zoomLevel=1,a.tileDownloader=new u0,a.qualityManager=new NA,a.panoRenderer=new q0(r,a.tileDownloader,a.qualityManager),a.basePanoSize=a.qualityManager.getPanoSize(ay.BASE),a.standardPanoSize=a.qualityManager.getPanoSize(ay.STANDARD),a.highPanoSize=a.qualityManager.getPanoSize(ay.HIGH),a.ultraHighPanoSize=a.qualityManager.getPanoSize(ay.ULTRAHIGH),a.tileDownloader.processPriorityQueue=!1,a.tileDownloader.tilePrioritizer=new ZA(a.qualityManager,a.basePanoSize,a.standardPanoSize,a.highPanoSize,a.ultraHighPanoSize),a.flying_=!1,a.addHighMapCube(),r.addEventListener(ly.Enter,function(e){a.setHighMap(e.newPano)}),r.addEventListener("panoSetZoom",function(e){"showPanos"==Potree.settings.displayMode&&(e.zoomed?a.showHighMap():a.hideHighMap())}),a.depthSampler=new ry,a.addEventListener("loadedDepthImg",function(e){e.loaded&&a.updateDepthTex(e.pano)}),r.fpControls.addEventListener("dollyStopCauseUnable",function(e){var t;Potree.settings.zoom.enabled&&(null!=e.scale?a.zoomBy(e.scale,e.pointer):(t=0<e.delta?1+a.scrollZoomSpeed:1-a.scrollZoomSpeed,0!=e.delta&&a.zoomBy(t)))});r.addEventListener("global_click",function(e){if(!(e.clickElement||Potree.settings.unableNavigate||a.flying||!e.isTouch&&e.button!=le.LEFT||e.drag&&e.drag.object||"pano"==Potree.settings.editType&&"mainView"!=r.modules.PanoEditor.activeViewName||"merge"==Potree.settings.editType&&!e.intersectPoint||r.inputHandler.hoveredElements[0]&&r.inputHandler.hoveredElements[0].isModel&&e.intersectPoint.distance>r.inputHandler.hoveredElements[0].distance)){if("pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType){if(e.hoverViewport==r.mapViewer.viewports[0])return r.mapViewer.dispatchEvent(e);if(e.hoverViewport!=r.mainViewport)return}Potree.settings.dblToFocusPoint||a.flyToPanoClosestToMouse()}}),r.addEventListener("global_mousemove",function(e){!Potree.settings.unableNavigate&&Potree.settings.ifShowMarker&&e.hoverViewport==r.mainViewport&&a.updateClosestPano(e.intersect)}),a.addEventListener("markerHover",function(e){a.updateClosestPano(e.pano,e.hovered)}),Potree.settings.isOfficial||(a.domRoot=r.renderer.domElement.parentElement,(e=$("<input type='button' value='unfocus'></input>")).css({position:"absolute",right:"25%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",display:"none",background:"rgba(255,255,255,0.8)"}),e.on("click",function(){return a.unfocus()}),a.elUnfocus=e,a.domRoot.appendChild(e[0]),"merge"!=Potree.settings.editType&&((n=$("<input type='button' value='隐藏点云'></input>")).css({position:"absolute",right:"40%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",width:"100px",background:"rgba(255,255,255,0.8)"}),a.domRoot.appendChild(n[0]),n.on("click",function(e){var t=r.getObjVisiByReason(r.scene.pointclouds[0],"force");r.scene.pointclouds.forEach(function(e){r.updateVisible(e,"force",!t)}),n.val(t?"显示点云":"隐藏点云")})),(e=$("<input type='button' value='>>全景'></input>")).css({position:"absolute",right:"65%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",width:"100px",background:"rgba(255,255,255,0.8)"}),a.domRoot.appendChild(e[0]),e.on("click",function(e){"showPointCloud"==Potree.settings.displayMode&&0==a.panos.length||(Potree.settings.displayMode="showPointCloud"==Potree.settings.displayMode?"showPanos":"showPointCloud")}),a.elDisplayModel=e);var a,n,e,o="",s="",t=(Object.defineProperty(Potree.settings,"displayMode",{get:function(){return o},set:function(n){if(s=n,console.warn("Request setMode: "+n),n!=o){var e=Potree.config.displayMode[n],t=r.scene.getActiveCamera();if("showPanos"==n&&r.mainViewport.view.isFlying())r.mainViewport.view.addEventListener("flyingDone",function e(){s==n&&(Potree.settings.displayMode=n),r.mainViewport.view.removeEventListener("flyingDone",e)});else{if(a.isAtPano()&&!a.latestToPano)i=e.atPano;else{var i=e.transition;if("showPanos"==n)return 0==a.panos.length?void 0:(a.addEventListener("flyToPanoDone",function e(t){a.removeEventListener("flyToPanoDone",e),setTimeout(function(){s==n&&(Potree.settings.displayMode=n)},t.makeIt?1:50)}),void a.flyToPano({pano:a.findNearestPano()}))}if(i.showSkybox||i.showPoint&&i.pointUsePanoTex?a.tileDownloader.start():a.tileDownloader.stop(),i.showSkybox||i.pointUsePanoTex){e=function e(t){t.pano&&t.pano!=a.currentPano||(setTimeout(function(){s==n&&(Potree.settings.displayMode=n)},1),a.removeEventListener("loadedDepthImg",e))};if(!a.currentPano.depthTex&&a.currentPano.pointcloud.hasDepthTex)return a.addEventListener("loadedDepthImg",e),a.currentPano.loadDepthImg();if(a.checkAndWaitForPanoLoad(a.currentPano,a.basePanoSize,e))return}r.scene.pointclouds.forEach(function(e){r.updateVisible(e,"displayMode",i.showPoint,2)}),i.pointUsePanoTex?r.scene.pointclouds.forEach(function(e){e.material.setProjectedPanos(a.currentPano,a.currentPano,1)}):r.scene.pointclouds.forEach(function(e){e.material.stopProjectedPanos()}),r.updateVisible(a.cube,"showSkybox",i.showSkybox),a.cube.visible?a.setProjectedPanos({progress:1,ifSkybox:!0,ifPointcloud:!1,easeInOutRatio:0,pano0:a.currentPano,pano1:a.currentPano}):(a.smoothZoomTo(1),a.resetHighMap(),a.hideHighMap()),"showPanos"==(o=n)?(t.far=r.farWhenShowPano,Potree.settings.pointDensity="panorama",Potree.config.displayMode.showPanos.transition.pointUsePanoTex&&r.scene.pointclouds.forEach(function(e){e.material.pointSizeType="FIXED"}),a.updateCube(a.currentPano)):(t.limitFar&&(t.far=Potree.settings.cameraFar),Potree.settings.pointDensity=Potree.settings.UserPointDensity,Potree.config.displayMode.showPanos.transition.pointUsePanoTex&&r.scene.pointclouds.forEach(function(e){e.material.pointSizeType=Potree.config.material.pointSizeType})),t.updateProjectionMatrix(),a.elDisplayModel&&a.elDisplayModel.val("showPointCloud"==n?">>全景":">>点云"),a.dispatchEvent({type:"endChangeMode",mode:n}),console.log("setModeSuccess: "+n)}}}}),Potree.settings.displayMode="showPointCloud",null),i=(Object.defineProperty(G(a),"currentPano",{get:function(){return t},set:function(e){e!=t&&(t&&t.exit(),e&&e.enter(),t=e)}}),!0),l=(Object.defineProperty(Potree.settings,"ifShowMarker",{get:function(){return i},set:function(t){(t=!!t)!=i&&(a.panos.forEach(function(e){r.updateVisible(e,"ifShowMarker",t,1)}),i=t)}}),r.addEventListener("update",function(){a.update(r)}),{FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39]});return r.inputHandler.addEventListener("keydown",function(t){if("showPanos"==Potree.settings.displayMode)for(var e in l)if(l[e].some(function(e){return e==t.keyCode})){switch(e){case"FORWARD":a.flyLocalDirection(oy.FORWARD.clone());break;case"BACKWARD":a.flyLocalDirection(oy.BACK.clone());break;case"LEFT":a.flyLocalDirection(oy.LEFT.clone());break;case"RIGHT":a.flyLocalDirection(oy.RIGHT.clone())}break}}),a}return A(c,[{key:"updateDepthTex",value:function(e){this.currentPano==e&&e.depthTex&&this.cube.material.updateDepthTex(e)}},{key:"findNearestPano",value:function(t){t=t?(new Re).copy(t):this.position;var e=ag.sortByScore(this.panos,[c.filters.isEnabled()],[function(e){return-e.position.distanceTo(t)}]);return e&&e[0]&&e[0].item}},{key:"flyLocalDirection",value:function(e){var t=this.getDirection(e),n=1===e.y?.4:.75,e=1===Math.abs(e.x);return this.flyDirection(t,n,e,!0)}},{key:"getDirection",value:function(e){return e?(e=e||(new Re).copy(oy.FORWARD)).applyQuaternion(viewer.mainViewport.camera.quaternion):viewer.scene.view.direction}},{key:"position",get:function(){return this.viewer.scene.view.position.clone()}},{key:"visible",get:function(){return this._visible},set:function(e){this._visible!==e&&(this._visible=e,this.dispatchEvent({type:"visibility_changed",panos:this}))}},{key:"isAtPano",value:function(){return this.currentPano&&viewer.scene.view.position.equals(this.currentPano.position)}},{key:"updateProjectedPanos",value:function(){this.projectedPano0&&this.projectedPano1&&this.setProjectedPanos({pano0:this.projectedPano0,pano1:this.projectedPano1})}},{key:"setProjectedPanos",value:function(){var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.cube.material.setProjectedPanos(t.pano0,t.pano1,t.progress),t.ifPointcloud&&viewer.scene.pointclouds.forEach(function(e){e.material.setProjectedPanos(t.pano0,t.pano1,t.progress,t.easeInOutRatio)}),this.projectedPano0=t.pano0,this.projectedPano1=t.pano1}},{key:"cancelFlyToPano",value:function(){viewer.mainViewport.view.isFlying()||(this.nextPano=null,this.latestToPano=null)}},{key:"flyToPano",value:function(n){var e,t,i,r,a,o,s,l,u,c,h=this;if(n)return n instanceof FA&&(n={pano:n}),e=function(e,t){(e||t)&&(n.callback&&n.callback(e),h.cancelFlyToPano(),h.updateClosestPano(h.closestPano,!1)),h.dispatchEvent({type:"flyToPanoDone",makeIt:e}),n.deferred&&n.deferred.resolve(e)},n.pano.enabled?this.latestToPano&&this.latestToPano!=n?e(!1):this.currentPano!=n.pano||!this.isAtPano()||n.target||n.quaternion?(t=n.target,i=n.easeName||"easeInOutQuad",r=Potree.config.displayMode[Potree.settings.displayMode],a=r.atPano.showPoint,o=n.pano,l=Potree.config.transitionsTime,c=this.isAtPano()?l.panoToPanoMax:l.flyIn,s=null==n.duration?l.flyMinTime+Math.min(l.flytimeDistanceMultiplier*this.position.distanceTo(o.position),c):n.duration,n.duration=s,this.nextPano=o,this.latestToPano=n,l=function e(t){t.pano&&h.latestToPano&&t.pano!=h.latestToPano.pano||h.latestToPano==n&&(setTimeout(function(){h.latestToPano==n&&h.flyToPano(n)},1),h.removeEventListener("loadedDepthImg",e))},!o.depthTex&&o.pointcloud.hasDepthTex?(this.addEventListener("loadedDepthImg",l),o.loadDepthImg()):void((r.atPano.showSkybox||r.atPano.pointUsePanoTex)&&(this.updateCube(this.currentPano,n.pano),this.checkAndWaitForPanoLoad(o,n.basePanoSize||this.basePanoSize,l))||(viewer.updateVisible(this.cube,"showSkybox",r.atPano.showSkybox),r.transition.showPoint&&viewer.scene.pointclouds.forEach(function(e){viewer.updateVisible(e,"displayMode",!0)}),(r.transition.showSkybox||r.transition.pointUsePanoTex)&&this.setProjectedPanos({progress:0,ifSkybox:this.cube.visible,ifPointcloud:r.transition.pointUsePanoTex,easeInOutRatio:a?.3:0,pano0:this.currentPano,pano1:o}),u=o.position.clone(),n.duration=s,n.easeName=i,this.beforeFlyToPano(n),c=function(){h.dispatchEvent({type:"flyToPano",toPano:n}),viewer.scene.view.setView({position:u,target:t,quaternion:n.quaternion,duration:s,callback:function(){r.atPano.pointUsePanoTex||viewer.scene.pointclouds.forEach(function(e){e.material.stopProjectedPanos()}),h.currentPano=o,h.nextPano=null,"showPanos"==Potree.settings.displayMode&&viewer.scene.pointclouds.forEach(function(e){viewer.updateVisible(e,"displayMode",a)}),e(!0),h.updateDepthTex(h.currentPano)},onUpdate:function(t){h.cube.material.uniforms.progress.value=t,viewer.scene.pointclouds.forEach(function(e){e.material.uniforms.progress.value=t})},cancelFun:function(){e(!1,!0)},Easing:i})},"showPanos"==Potree.settings.displayMode?setTimeout(c,40):c()))):(this.dispatchEvent({type:"flyToPano",toPano:n}),e(!0)):e(!1,!0)}},{key:"beforeFlyToPano",value:function(e){this.currentPano!=e.pano&&("showPanos"==Potree.settings.displayMode&&this.resetHighMap(),this.smoothZoomTo(e.zoomLevel||1,e.duration/2))}},{key:"updateCube",value:function(e,t){var n,i,r,a,o,s,l,u=this;if("showPanos"==Potree.settings.displayMode)return viewer.scene.pointclouds.some(function(e){return!e.hasDepthTex})?(n=function(e,t){t=t||e.getSize(new Re);e=e.getCenter(new Re);t.max(new Re(1,1,1)),u.cube.scale.copy(t),u.cube.position.copy(e)},i=function(e){var t=new Y;return t.expandByPoint(e.position),t.expandByVector(new Re(10,10,10)),e.pointcloud.bound.clone().union(t)},void(!t||e.pointcloud==t.pointcloud?n(i(e)):(i=i(e).union(i(t)),r=e.pointcloud.bound,a=t.pointcloud.bound,(r.intersectsBox(a)?0:(o=r.getCenter(new Re),s=a.getCenter(new Re),l=o.distanceTo(s),r.distanceToPoint(s)+a.distanceToPoint(o)-l))<100?n(i):(r=i.getSize(new Re),s=Math.max(r.x,r.y,r.z),r.set(s,s,s),n(e.pointcloud.bound.clone().union(t.pointcloud.bound),r))))):this.updateCube2(e,t)}},{key:"updateCube3",value:function(e,t){var d,p,f,m,v,g,A,n,i,a,o,s,l,u,c,h,y,w,r,b=this;"showPanos"!=Potree.settings.displayMode||e==t||this.cubePanos.includes(e)&&this.cubePanos.includes(t)||(this.cubePanos=[e,t],this.cube.geometry.dispose(),t?(d=2*(e.pointcloud.hasDepthTex&&e.pointcloud.hasDepthTex?sf.isMobile()?3:6:sf.isMobile()?2:3),p=0,f=function(e,t,n){return e&&e.pointcloud.hasDepthTex?b.depthSampler.sample({dir:t},e,!0):(n=n||e.position,viewer.inputHandler.getIntersect(viewer.inputHandler.hoverViewport,!0,null,null,!0,{point:n.clone().add(t),cameraPos:n}))},m=function(e,t){e=(new _e).makeRotationZ(e);return t.clone().applyMatrix4(e)},v=function(i,r,a){function e(e){return e=Be.clamp(e*=t,1,80)}var t=.14*(r.ceilZ-r.floorPosition.z),n=[i.clone().setZ(Math.tan(e(30))).normalize(),i.clone().setZ(Math.tan(e(7))).normalize(),i.clone(),i.clone().setZ(-Math.tan(e(5))).normalize()],o=n.length,n=n.map(function(e,t){var n=f(r,e,a);return n&&n.distance?e.dot(i)*n.distance:50});return n.sort(function(e,t){return t-e}),n[Math.floor(o/2-.5)]},n=function(i,e){function r(e,t){return(2*d+2)*(t=null==t?p:t)+e+2}var t,a,o=i.floorPosition.z;null!=i.ceilZ?a=i.ceilZ:(h=(new _e).makeRotationX(Be.degToRad(40)),h=new Re(0,0,1).applyMatrix4(h),t=(new _e).makeRotationZ(2*Math.PI/3),c=(new _e).makeRotationZ(2*-Math.PI/3),t=h.clone().applyMatrix4(t),c=h.clone().applyMatrix4(c),(h=[h,t,c].map(function(e){e=f(i,e);return e?e.location.z:i.position.z+50})).sort(function(e,t){return t-e}),a=h[0],t=i.position.z+1,a=Math.max(t,a),i.ceilZ=a),[a,o].forEach(function(e){g.push(i.position.clone().setZ(e))});for(var n=Math.PI/(d-1),s=[],l=0;l<d;l++)s.push(m(Math.PI/2-l*n,e));var u=[],c=(s.forEach(function(t,e){var n=v(t,i);0!=e&&e!=d-1||u.push(n),t.multiplyScalar(n),[a,o].forEach(function(e){g.push(i.position.clone().setZ(e).add(t))}),0!=e&&(A.push([r(n=2*e),r(n-1),r(n-2)],[r(n),r(1+n),r(n-1)]),A.push([r(n),r(n-2),r(-2)]),A.push([r(-1),r(n-1),r(1+n)]))}),(p+1)%2),h=4*d+4;return A.push([r(0),r(1),h+2*p],[h+2*p,r(1),h+2*p+1],[r(2*d-2),h+2*c+1,r(2*d-1)],[r(2*d-2),h+2*c,h+2*c+1]),A.push([r(0),h+2*c,r(2*d-2)],[r(0),h+2*p,h+2*c]),A.push([r(2*d-1),h+2*c+1,r(1)],[h+2*c+1,h+2*p+1,r(1)]),p++,u},g=[],A=[],i=(new Re).subVectors(e.position,t.position).setZ(0).normalize(),r=n(e,i),n=n(t,i.negate()),c=(e.ceilZ+t.ceilZ)/2,h=(e.floorPosition.z+t.floorPosition.z)/2,r[0],n[1],r[1],n[0],y=[Math.min(r[0],n[1]),Math.min(r[1],n[0])],w=(new Re).addVectors(e.position,t.position).multiplyScalar(.5),r=[m(-Math.PI/2,i),m(Math.PI/2,i)],e.pointcloud.hasDepthTex&&e.pointcloud.hasDepthTex?(a=[e,t],o=[i.negate(),i],s=[[-1,1],[1,-1]],l=(new Le).subVectors(e.position,t.position).length(),u=[Be.degToRad(45),Be.degToRad(60)],r.forEach(function(t,i){var e,r=[];a.forEach(function(n,e){[m(s[i][e]*u[0],o[e]),m(s[i][e]*u[1],o[e])].forEach(function(e,t){var e=v(e,n);e*Math.cos(u[t])<l&&(e=e*Math.sin(u[t]),r.push(e))})}),r.length?(r.sort(function(e,t){return t-e}),e=r[0],console.log("disToSides",i,r)):e=y[i],t.multiplyScalar(e),[c,h].forEach(function(e){g.push(w.clone().setZ(e).add(t))})})):r.forEach(function(t,e){var n=v(t,null,w);t.multiplyScalar(Math.max(n,y[e])),[c,h].forEach(function(e){g.push(w.clone().setZ(e).add(t))})}),n=Ov.createGeometry(g,A),this.cube.geometry=n,this.cube.scale.set(1,1,1),this.cube.position.set(0,0,0)):(this.cube.geometry=new sa(1,1,1,1),i=e.pointcloud.bound,t=(t=void 0)||i.getSize(new Re),i=i.getCenter(new Re),t.max(new Re(1,1,1)),b.cube.scale.copy(t),b.cube.position.copy(i)))}},{key:"updateCube2",value:function(i,r){var a=this;if(!("showPanos"!=Potree.settings.displayMode||i==r||this.cubePanos.includes(i)&&this.cubePanos.includes(r))){this.cubePanos=[i,r];var t,s,l,n,u,o,c,h,e=function(e,t){t=t||e.getSize(new Re);e=e.getCenter(new Re);t.max(new Re(1,1,1)),a.cube.geometry=new sa(1,1,1,1),a.cube.scale.copy(t),a.cube.position.copy(e),Potree.settings.testCube&&(a.cubeTest.geometry=a.cube.geometry,a.cubeTest.scale.copy(t),a.cubeTest.position.copy(e))},d=function(e){var t=new Y;return t.expandByPoint(e.position),t.expandByVector(new Re(10,10,10)),e.pointcloud.bound.clone().union(t)};if(this.cube.geometry.dispose(),r){var p,f=i.position.distanceTo(r.position),f=(1+3*(Math.abs(i.position.z-r.position.z)/f))*f;if(this.isNeighbour(i,r)?1e3<f:100<f)return R=(x=d(i).union(d(r))).getSize(new Re),v=Math.max(R.x,R.y,R.z),R.set(v,v,v),e(x,R);(this.isNeighbour(i,r)?200<f:15<f)&&(p=!0);var A=2*(i.pointcloud.hasDepthTex&&i.pointcloud.hasDepthTex?6:sf.isMobile()?2:3),F=function(e,t,n){return e&&e.pointcloud.hasDepthTex?a.depthSampler.sample({dir:t},e,!0):(n=n||e.position,viewer.inputHandler.getIntersect(viewer.inputHandler.hoverViewport,!0,null,null,!0,{point:n.clone().add(t),cameraPos:n}))},y=function(e,t){e=(new _e).makeRotationZ(e);return t.clone().applyMatrix4(e)},w=function(i,r,a,e){function t(e){return e=Be.clamp(e*=n,1,80),Math.tan(Be.degToRad(e))}e=null==e?r.ceilZ-r.floorPosition.z:e;var n=.5+1.5*Be.clamp((e-2)/38,0,1),e=[i.clone().setZ(t(35)).normalize(),i.clone().setZ(t(20)).normalize(),i.clone().setZ(t(7)).normalize(),i.clone(),i.clone().setZ(-t(5)).normalize()],o=e.length,e=e.map(function(e,t){var n=F(r,e,a);return n&&n.distance?e.dot(i)*n.distance:50});return e.sort(function(e,t){return t-e}),e[Math.floor(o/2-.5)]},m=[0,0],v=function(i,e){var t,n,r,a,o=i.floorPosition.z;null!=i.ceilZ?a=i.ceilZ:(n=(new _e).makeRotationX(Be.degToRad(40)),n=new Re(0,0,1).applyMatrix4(n),r=(new _e).makeRotationZ(2*Math.PI/3),t=(new _e).makeRotationZ(2*-Math.PI/3),r=n.clone().applyMatrix4(r),t=n.clone().applyMatrix4(t),(n=[n,r,t].map(function(e){e=F(i,e);return e?e.location.z:i.position.z+50})).sort(function(e,t){return t-e}),a=n[0],r=i.position.z+1,a=Math.max(r,a),i.ceilZ=a),[a,o].forEach(function(e){b.push(i.position.clone().setZ(e))});for(var s=Math.PI/(A-1),l=[],u=0;u<A;u++)l.push(y(Math.PI/2-u*s,e));for(var c=l.map(function(e){return{dir:e,dis:w(e,i)}}),h=-1,d=0;d<A;d++){for(var p=d-1,f=0;h<p&&3<c[d].dis/c[p].dis;)f+=c[d].dis/c[p].dis,p--;var m=d-p-1;if(f/=m,0<m&&function(e,t){for(var n=t-(e+=1),i=0,r=e;r<t;r++)i+=c[r].dis;i/=n;e=Math.PI/(A-1)*n/2;return i*Math.tan(e)}(p,d)<.5*f/8){g=void 0;for(var m=p,v=d,g=m+=1;g<v;g++)c[g].disB=.8*c[v].dis;h=d}}c.forEach(function(e,t){var n=e.dir.clone().multiplyScalar(e.disB||e.dis);[a,o].forEach(function(e){b.push(i.position.clone().setZ(e).add(n))})})},b=[],g=[],x=(new Re).subVectors(i.position,r.position).setZ(0).normalize();v(i,x),v(r,x.clone().negate()),o=(i.ceilZ+r.ceilZ)/2,c=(i.floorPosition.z+r.floorPosition.z)/2,h=(new Re).addVectors(i.position,r.position).multiplyScalar(.5),p||(i.pointcloud.hasDepthTex&&i.pointcloud.hasDepthTex?(t=[i,r],s=[x.clone().negate(),x],l=(new Le).subVectors(i.position,r.position).length(),n=1.2-+Be.clamp((l-.5)/49.5,0,1),u=(sf.isMobile?[50]:[35,65]).map(function(e){e=Be.clamp(e*n,5,80);return Be.degToRad(e)}),[[-1,1],[1,-1]].forEach(function(n,e){var a=[],o=0==e?i:r;t.forEach(function(r,t){u.map(function(e){return y(n[t]*e,s[t])}).forEach(function(e,t){var n=w(e,r),i=n*Math.cos(u[t]);i<l&&(t=n*Math.sin(u[t]),r!=o&&(i=l-i),e.multiplyScalar(n),a.push({disToSide:t,disToPano2d:i,pano:r,dir_:e}))})}),a.length&&(a.sort(function(e,t){return e.disToPano2d-t.disToPano2d}),(a=1==a.length&&a[0].disToSide<.5?[]:a).forEach(function(t){var e=t.disToPano2d/l,e=o==i?1-e:e;[i.ceilZ*e+r.ceilZ*(1-e),i.floorPosition.z*e+r.floorPosition.z*(1-e)].forEach(function(e){b.push(t.pano.position.clone().setZ(e).add(t.dir_))})})),m[e]=a.length})):(m=[1,1],[y(Math.PI/2,x),y(-Math.PI/2,x)].forEach(function(t,e){var n=w(t,null,h,o-c);t.multiplyScalar(n),[o,c].forEach(function(e){b.push(h.clone().setZ(e).add(t))})}))),[o,c].forEach(function(e){b.push(h.clone().setZ(e))});for(var E=function(e,t,n){return 2+(2*A+2)*n+2*e+("top"==t?0:1)},C=function(e,t,n){return 1==n&&(e+=m[0]),E(e,t,2)-2},O=function(e,t){return E(-1,e,t)},B=b.length-2,_=b.length-1,M=0;M<2;M++){for(var T=1;T<A;T++)g.push([E(T,"top",M),E(T-1,"btm",M),E(T-1,"top",M)],[E(T,"top",M),E(T,"btm",M),E(T-1,"btm",M)]),g.push([E(T,"top",M),E(T-1,"top",M),O("top",M)]),g.push([E(T,"btm",M),E(T-1,"btm",M),O("btm",M)]);for(var S=(M+1)%2,I=0;I<=m[M];I++){var D=0==I?E(0,"top",M):C(I-1,"top",M),P=I==m[M]?E(A-1,"top",S):C(I,"top",M),k=0==I?E(0,"btm",M):C(I-1,"btm",M),L=I==m[M]?E(A-1,"btm",S):C(I,"btm",M);g.push([D,k,L],[D,L,P]),g.push([D,B,P],[k,_,L]),0==M&&(0==I&&g.push([D,E(A-1,"top",M),B],[k,E(A-1,"btm",M),_]),I==m[M])&&g.push([P,E(0,"top",S),B],[L,E(0,"btm",S),_])}}var R=Ov.createGeometry(b,g);this.cube.geometry=R,this.cube.scale.set(1,1,1),this.cube.position.set(0,0,0),Potree.settings.testCube&&(this.cubeTest.geometry=R,this.cubeTest.scale.set(1,1,1),this.cubeTest.position.set(0,0,0))}else e(d(i))}}},{key:"bump",value:function(e){var t,n,i=this;this.bumping||this.latestToPano||(t="showPanos"==Potree.settings.displayMode?.3:.2,n=this.position.clone(),e=(new Re).addVectors(this.position,e.clone().multiplyScalar(t)),viewer.scene.view.setView({position:e,duration:150,callback:function(){viewer.scene.view.setView({position:n,duration:750,callback:function(){i.bumping=!1},Easing:"easeInOutSine",cancelFun:function(){i.bumping=!1}}),i.bumping=!0},cancelFun:function(){i.bumping=!1},Easing:"easeInOutSine"}),this.bumping=!0)}},{key:"flyToPanoClosestToMouse",value:function(){if(Potree.settings.ifShowMarker||this.updateClosestPano(viewer.inputHandler.intersect),this.closestPano)return e=this.closestPano,this.flyToPano({pano:e});var e=this.viewer.inputHandler.getMouseDirection().direction;this.flyDirection(e)}},{key:"flyDirection",value:function(e,t,n,i){var r=$.Deferred(),t=this.closestPanoInDirection(e,t,n,i);return t?this.flyToPano({pano:t,callback:r.resolve.bind(r,!0)}):(this.bump(e),r.resolve(!1)),r.promise()}},{key:"closestPanoInDirection",value:function(e,t,n,i){return this.rankedPanoInDirection(0,e,t,n,i)}},{key:"rankedPanoInDirection",value:function(e,t,n,i,r){var a,o,s=this,l={pano:null,candidates:[]},i=(e=e||0,n=void 0!==n?n:.75,i?"angle":"direction"),n=(viewer.modules.SiteModel.currentFloor,viewer.modules.SiteModel.inEntity,[c.filters.inPanoDirection(this.position,t,n),c.filters.not(this.currentPano),c.filters.isEnabled()]),i=[c.scoreFunctions.distanceSquared(this.position,1),c.scoreFunctions[i](this.position,t,!0),function(e){return s.isNeighbour(s.currentPano,e)?400:0}];return!r&&viewer.inputHandler.intersect&&this.currentPano&&(a=this.currentPano.floorPosition,o=(new Re).subVectors(viewer.inputHandler.intersect.location,a).normalize(),i.push(function(e){return 400*e.floorPosition.clone().sub(a).normalize().dot(o)*4})),this.findRankedByScore(e,n,i,l),l.pano}},{key:"findRankedByScore",value:function(e,t,n,i){i&&(i.candidates=null,i.pano=null),e=e||0;t=ag.sortByScore(this.panos,t,n);return!t||0===t.length||e>=t.length?null:(i&&(i.candidates=t,i.pano=t[e].item),t[e].item)}},{key:"isNeighbour",value:function(o,s){var e,t,n,i,r,a,l,u;if(o&&s)return(e=this.neighbourMap[o.id])||(this.neighbourMap[o.id]=e={}),(t=this.neighbourMap[s.id])||(this.neighbourMap[s.id]=t={}),n=function(e,t,n){(new Re).subVectors(t.position,e.position).normalize();var i=[];n||i.push([t.position,e.position]),i.push([t.floorPosition.clone().add(new Re(0,0,.1)),e.position]);for(var r=0;r<i.length;r++){var a=(new Re).subVectors(i[r][0],i[r][1]).normalize(),a=viewer.images360.depthSampler.sample({dir:a},e,!0);if(!a||a.distance+.1>o.position.distanceTo(s.position))return!0}},(u=e[s.id]||t[o.id])||(o.depthTex||s.depthTex?null!=e[s.id]&&null!=t[o.id]||(o.depthTex,o.depthTex,null==e[s.id]&&o.depthTex&&((i=n(o,s))&&(u=!0),e[s.id]=!!i),!u&&null==t[o.id]&&s.depthTex&&((i=n(s,o,!u))&&(u=!0),t[o.id]=!!i)):(20<this.panos.length?u=!0:(u=!viewer.inputHandler.ifBlockedByIntersect(s.position,.1,!0,o.position),console.log("使用点云判断"),u&&(n=(new Re).subVectors(s.position,o.position).normalize(),i=s.position.distanceTo(o.position),r=lf.getHFOVForCamera(viewer.mainViewport.camera,!0),a=Math.cos(Be.degToRad(10)),l=Math.cos(Be.degToRad(80)),this.getDirection().dot(n)<Be.clamp(Math.cos(r/2)*i/10,l,a))&&(u=void 0)),e[s.id]=t[o.id]=u)),u}},{key:"updateClosestPano",value:function(e,t){if(e instanceof FA)n=t?e:null;else{if(this.isAtPano())return;if(this.flying)return;if(!(e=e&&e.location))return;var t="pano"!=Potree.settings.editType?[c.sortFunctions.floorDisSquaredToPoint(e)]:[c.sortFunctions.disSquaredToPoint(e)],n=ag.find(this.panos,[],t)}n!=this.closestPano?(n&&(this.isPanoHover=!0),this.closestPanoChanging(this.closestPano,n),this.closestPano=n):this.isPanoHover=!1}},{key:"closestPanoChanging",value:function(e,t){Potree.settings.ifShowMarker&&(e&&e.hoverOff({byImages360:!0}),t)&&t.hoverOn({byImages360:!0})}},{key:"getTileDirection",value:function(){var n=viewer.scene.view.direction.clone();return{datasetsLocal:viewer.scene.pointclouds.map(function(e){var t=(new _e).copy(e.rotateMatrix).invert(),t=n.clone().applyMatrix4(t);return{datasetId:e.dataset_id,direction:ee.convertVector.ZupToYup(t)}}),vectorForward:n}}},{key:"update",value:function(){var e;this.viewer;this.tileDownloader.started&&(e=this.getTileDirection(),this.updateTileDownloader(uy,e),this.updatePanoRenderer(e)),this.updateZoomPano()}},{key:"updateTileDownloader",value:function(e,t){var n=this.nextPano||this.currentPano;n&&(this.tileDownloader.tilePrioritizer.updateCriteria(n,viewer.scene.view.position.clone(),t,0<e.length?e:null),this.tileDownloader.processPriorityQueue=!0)}},{key:"updatePanoRenderer",value:function(e){var t=this.nextPano||this.currentPano;t&&this.panoRenderer.hasQueuedTiles()&&t&&this.panoRenderer.updateDirection(e)}},{key:"checkAndWaitForTiledPanoLoad",value:function(e,t,n,i,r,a,o,s){e||console.error("Player.checkAndWaitForTiledPanoLoad() -> Cannot load texture for null pano.");var l=this.getTileDirection();if(!e.isLoaded(t))return a&&viewer.waitForLoad(e,function(){return e.isLoaded(t)}),e.loadTiledPano(t,l,null,o,s,null).done(function(e,t){n&&n(e,t)}.bind(this)).fail(function(e){i&&i(e)}.bind(this)).progress(function(e,t,n){r&&r(e,t,n)}.bind(this)),!0}},{key:"fitPanoTowardPoint",value:function(t){var n=this,i=t.point,r=t.target,e=t.require||[],a=t.rank||[],o=(t.force,t.getAll),s=t.bestDistance||0,l=t.dir,u=viewer.scene.getActiveCamera(),c=(r&&!l&&(l=(new Re).subVectors(r,i).normalize()),t.boundSphere&&(s=1<u.aspect?t.boundSphere.radius/Be.degToRad(u.fov/2):(u=lf.getHFOVForCamera(u,!0),t.boundSphere.radius/(u/2))),s*s),u=(a.push(function(e){var t,n=Math.abs(e.position.distanceToSquared(i)-c);return r?(t=e.position.distanceToSquared(r),e=(new Re).subVectors(r,e.position).normalize(),e=l.dot(e),(-n-Math.pow(t,1.5))/(e+2)):-n},function(e){return e.depthTex&&t.checkIntersect&&n.panos.length<20&&viewer.inputHandler.ifBlockedByIntersect(r,.1,null,null,null,e)?-1e4:0}),ag.sortByScore(this.panos,e,a));return o?u:u&&0<u.length&&u[0].item}},{key:"zoomBy",value:function(e,t){this.zoomTo(this.zoomLevel*e,t)}},{key:"zoomTo",value:function(e,t){var n,i,r,a=Potree.settings.zoom;a.enabled&&(e=Be.clamp(e,a.min,a.max))!=this.zoomLevel&&(this.zoomLevel=e,a=viewer.scene.view,e=viewer.scene.view.direction,n=viewer.inputHandler.getMouseDirection(t).direction,viewer.setFOV(Potree.config.view.fov*(1/this.zoomLevel)),t=viewer.inputHandler.getMouseDirection(t).direction,a.direction=n,n=a.pitch,i=a.yaw,a.direction=t,t=a.pitch,r=a.yaw,a.direction=e,viewer.scene.view.pitch-=t-n,viewer.scene.view.yaw-=r-i)}},{key:"zoomFovTo",value:function(e){e=Potree.config.view.fov/e;this.zoomTo(e)}},{key:"smoothZoomTo",value:function(t){var n=this,i=this.zoomLevel;i!=t&&Tg.start(function(e){n.zoomTo(i*(1-e)+t*e,!0)},1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,null,null,0,Cg.easeInOutQuad)}},{key:"updateZoomPano",value:function(){var e,t,n,i,r,a=this;this.panoRenderer.zoomPanoRenderingDisabled||"showPanos"!=Potree.settings.displayMode||(e=this.currentPano)&&(t="1k"==Potree.settings.navTileClass?1.3:1.7,n=this.zoomLevel>t,r=!(this.flying&&this.nextPano&&this.nextPano!==this.currentPano),this.tileDownloader.tilePrioritizer.setZoomingActive(r=n&&r),this.panoRenderer.setZoomingActive(r,e,!0),i=function(e,t){a.panoRenderer.resetRenderStatus(e.id,!1,!0,a.qualityManager.getMaxNavPanoSize()),a.panoRenderer.clearAllQueuedUploadsForPano(e.id),a.panoRenderer.renderPanoTiles(e.id,null,!1,!1),e.setZoomed(t)},r&&(!e.zoomed||this.qualityManager.zoomLevelResolution&&"4k"!=this.qualityManager.zoomLevelResolution)?(e.zoomed||i(e,!0),"1k"==Potree.settings.navTileClass&&"1k"!=Potree.settings.tileClass&&this.zoomLevel<2?this.panoRenderer.enableHighQuality(function(){"4k"!=Potree.settings.tileClass&&i(e,!0)}.bind(this)):this.panoRenderer.enableUltraHighQualityMode(function(){this.qualityManager.useUltraHighResolutionPanos&&(Potree.settings.zoom.max=Potree.config.ultraHighQualityMaxZoom),i(e,!0)}.bind(this))):!n&&e.zoomed&&i(e,!1),r)&&"1k"==Potree.settings.navTileClass&&"4k"==Potree.settings.tileClass&&(r=function(e){a.qualityManager.updateMaximums(),a.panoRenderer.setupZoomRenderTarget()},this.qualityManager.zoomLevelResolution=2<=this.zoomLevel?"4k":this.zoomLevel>t?"2k":"1k",this.oldZoomLevel<2&&2<=this.zoomLevel?(r(),i(e,n)):this.oldZoomLevel<=t&&this.zoomLevel>t?r():2<this.oldZoomLevel&&this.zoomLevel<=2?(r(),i(e,n)):this.oldZoomLevel>t&&this.zoomLevel<=t&&r(),this.oldZoomLevel=this.zoomLevel)}},{key:"addHighMapCube",value:function(){if("4k"==Potree.settings.tileClass&&2048==this.qualityManager.maxRenderTargetSize){for(var e=new Ru(1,1,1,1),t=new K,n=0;n<6;n++){for(var i=new K,r=0;r<8;r++)for(var a=0;a<8;a++){var o,s=new Z(e,new L({}));s.position.set(r-3.5,a-3.5,-4),s.material.opacity=.4,s.material.transparent=!0,Potree.settings.isTest&&(o=Math.random(),s.material.color=(new Me).setHSL(o,.6,.7)),s.visible=!1,i.add(s)}switch(n){case sy.GL_TEXTURE_CUBE_MAP_POSITIVE_X:i.rotation.set(0,Math.PI/2,0);break;case sy.GL_TEXTURE_CUBE_MAP_NEGATIVE_X:i.rotation.set(0,-Math.PI/2,0);break;case sy.GL_TEXTURE_CUBE_MAP_POSITIVE_Y:var l=(new X).setFromAxisAngle(new Re(0,1,0),Math.PI),u=(new X).setFromAxisAngle(new Re(1,0,0),Math.PI/2);i.quaternion.copy(l).multiply(u);break;case sy.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:l=(new X).setFromAxisAngle(new Re(0,1,0),Math.PI),u=(new X).setFromAxisAngle(new Re(1,0,0),-Math.PI/2);i.quaternion.copy(l).multiply(u);break;case sy.GL_TEXTURE_CUBE_MAP_POSITIVE_Z:i.rotation.set(0,Math.PI,0);break;case sy.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:i.rotation.set(0,0,0)}i.scale.set(1,-1,1),t.add(i)}t.name="highMapCube",this.highMapCube=t,viewer.scene.scene.add(t);t.scale.set(.1,.1,.1),this.highMapCube.visible=!1,viewer.setObjectLayers(this.highMapCube,"sceneObjects")}}},{key:"isHighMapLoaded",value:function(e,t,n){return!!this.highMapCube.children[e].children[8*t+n].material.map}},{key:"updateHighMap",value:function(e,t,n,i){t=this.highMapCube.children[t].children[8*n+i];t.material.map=e,t.material.opacity=1,t.material.transparent=!1,t.visible=!0,t.material.needsUpdate=!0}},{key:"resetHighMap",value:function(){this.highMapCube&&(this.highMapCube.children.forEach(function(e){return e.children.forEach(function(e){var t;e.material.map&&(e.material.map.dispose(),e.material.map.loaded=!1,e.material.map.version=0,t=viewer.renderer.properties.get(e.material.map),viewer.renderer.getContext().deleteTexture(t.__webglTexture),e.material.map=null,e.material.needsUpdate=!0,e.visible=!1)})}),this.highMapCube.visible=!1)}},{key:"setHighMap",value:function(e){this.highMapCube&&(this.highMapCube.position.copy(e.position),this.highMapCube.quaternion.copy(ee.convertQuaternion.YupToZup(e.quaternion4dkk)),e=(new X).setFromRotationMatrix(e.pointcloud.rotateMatrix),this.highMapCube.quaternion.premultiply(e))}},{key:"showHighMap",value:function(){this.highMapCube&&(this.highMapCube.visible=!0)}},{key:"hideHighMap",value:function(){this.highMapCube&&(this.highMapCube.visible=!1)}},{key:"addPanoData",value:function(e,n){var i=this;0==(e=e.data?e.data:e).length&&console.error(n+" 没有漫游点"),e.forEach(function(e){e.id=i.panos.length;var t=new FA(e,i);t.addEventListener("dispose",function(e){i.closestPano==t&&(i.closestPano=null)}),i.panos.push(t),"pano"==Potree.settings.editType&&Potree.settings.datasetsPanos[n].panos.push(t)})}},{key:"loadDone",value:function(){viewer.setObjectLayers(this.node,"sceneObjects"),this.panos.forEach(function(e){e.label&&viewer.setObjectLayers(e.label,"bothMapAndScene")}),this.tileDownloader.setPanoData(this.panos,[]);var e=new Re(1,1,1);this.bound=ee.getBoundByPoints(this.panos.map(function(e){return e.position}),e),viewer.scene.pointclouds.forEach(function(e){return e.getPanosBound()}),viewer.scene.pointclouds.some(function(e){return 0==e.panos.length})&&(viewer.hasNoPanoDataset=!0)}},{key:"getPano",value:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:"id";return this.panos.find(function(e){return e[n]==t})}}]),c}(),hy=(cy.prototype.checkAndWaitForPanoLoad=($0={},ey={},ty={},function(n,e,t,i,r,a,o,s){if(ty[n.id]=t,function(){for(var e in $0)if($0.hasOwnProperty(e)&&$0[e])if(performance.now()-ey[e]<5e3)return!0;return!1}())return!0;try{return null==a&&(a=!0),$0[n.id]=this.checkAndWaitForTiledPanoLoad(n,e,function(e,t){setTimeout(function(){$0[n.id]=!1,ty[n.id]&&ty[n.id](e,t)},1)},function(e){setTimeout(function(){$0[n.id]=!1,i&&i(e)},1)},r,a,o,s),$0[n.id]&&(ey[n.id]=performance.now()),$0[n.id]}catch(e){throw $0[n.id]=!1,ey[n.id]=performance.now()-5e3,e}}),cy.filters={inPanoDirection:function(n,i,r){return function(e){var t=e.floorPosition.clone().sub(n).normalize(),e=e.position.clone().sub(n).normalize();return t.dot(i)>r||e.dot(i)>r}},inFloorDirection:function(t,n,i){return function(e){return e.floorPosition.clone().sub(t).setZ(0).normalize().dot(n)>i}},isNotBehindNormal:function(t,n){var i=new Re;return n=n.clone(),function(e){return 0<i.copy(e.position).sub(t).normalize().dot(n)}},isCloseEnoughTo:function(t,n){return function(e){return t.distanceTo(e.floorPosition)<n}},not:function(t){return function(e){return e!==t}},isEnabled:function(){return function(e){return e.enabled}},isVisible:function(){return function(e){return e.visible}}},cy.scoreFunctions={direction:function(t,n,e){return function(e){return 400*e.position.clone().sub(t).normalize().dot(n)}},distance:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;return t.position&&(t=t.position),function(e){e=e.position.clone();return-1*t.distanceTo(e)*n}},distanceSquared:function(t){var n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:1;return t.position&&(t=t.position),function(e){e=e.position.clone();return-1*t.distanceToSquared(e)*n}},angle:function(t,n){return function(e){return e.position.clone().sub(t).normalize().angleTo(n)*Potree.config.navigation.angleFactor}}},cy.sortFunctions={floorDisSquaredToPoint:function(n){return function(e,t){return e.floorPosition.distanceToSquared(n)-t.floorPosition.distanceToSquared(n)}},disSquaredToPoint:function(n){return function(e,t){return e.position.distanceToSquared(n)-t.position.distanceToSquared(n)}}},{uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:["varying vec2 vUv;","void main() {","vUv = uv;","gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["uniform float opacity;","uniform sampler2D tDiffuse;","varying vec2 vUv;","void main() {","vec4 texel = texture2D( tDiffuse, vUv );","gl_FragColor = opacity * texel;","}"].join("\n")}),dy=(Object.assign(Y0.prototype,{setSize:function(e,t){},render:function(e,t,n,i,r){console.error("THREE.Pass: .render() must be implemented in derived pass.")}}),K0.prototype=Object.assign(Object.create(Y0.prototype),{constructor:K0,render:function(e,t,n,i,r,a,o){var s=n.getRenderTarget();this.uniforms[this.textureID]&&(this.uniforms[this.textureID].value=r.texture),this.quad.material=this.material,this.renderToScreen?n.render(this.scene,this.camera):(n.setRenderTarget(i),this.clear&&n.clear(),n.render(this.scene,this.camera),n.setRenderTarget(s))}}),Gm.map.mapHeight+100),py=Gm.map.mapHeight+105,fy=new Nc,my=new Ba(1,1),vy=function(){y(a,xA);var r=C(a);function a(e){var t,n,i;return te(this,a),(t=r.call(this,e,{clearColor:Potree.config.mapBG,name:"mapViewer"})).visible=!0,t.initScene(),t.mapLayer=new pA(G(t),t.viewports[0]),t.scene.add(t.mapLayer.sceneGroup),t.mapLayer.sceneGroup.position.setZ(Potree.config.map.mapHeight),t.mapRatio=.5,t.splitDir="leftRight",t.copyPass=new K0(hy),t.copyBuffer=new Zn(100,100,{minFilter:U,magFilter:U,format:St,stencilBuffer:!1}),viewer.addEventListener("camera_changed",function(e){e.viewport==viewer.mainViewport?t.updateCursor():t.updateWhenAtViewer()}),viewer.reticule.addEventListener("update",function(e){t.attachedToViewer&&(t.needRender=!0)}),viewer.scene.addEventListener("360_images_added",t.addPanos.bind(G(t))),viewer.addEventListener("loadPointCloudDone",t.initProjection.bind(G(t))),t.addEventListener("global_click",function(e){!e.isTouch&&e.button!=le.LEFT||t.updateClosestPano(e.intersect)}),t.addEventListener("add",function(e){t.scene.add(e.object),"route"==e.name&&(e.object.position.z=py),viewer.setObjectLayers(e.object,"mapObjects")}),Potree.settings.isOfficial||(e=viewer.renderer.domElement.parentElement,(n=$("<input type='button' value='map绑定'></input>")).css({position:"absolute",right:"80%",bottom:"20px",zIndex:"10000",fontSize:"1em",color:"black",background:"rgba(255,255,255,0.8)"}),i=!1,n.on("click",function(){i=!i,t.attachToMainViewer(i,"measure"),n.val(i?"map分离":"map绑定")}),e.appendChild(n[0])),t}return A(a,[{key:"waitLoadDone",value:function(t){var n=this;0==this.mapLayer.loadingInProgress?t():this.mapLayer.addEventListener("loadDone",function e(){t(),n.mapLayer.removeEventListener("loadDone",e)})}},{key:"addListener",value:function(e){var t=this;e.addEventListener("flyToPano",function(e){e=e.toPano;e.dontMoveMap||t.moveTo(e.pano.position.clone().setZ(Potree.config.map.cameraHeight),void 0,e.duration,null,e.easeName)})}},{key:"initProjection",value:function(){this.started=!0,this.mapLayer.initProjection()}},{key:"initScene",value:function(){var e=this.renderArea.clientWidth,t=this.renderArea.clientHeight,t=(this.camera=new mh(-e/2,e/2,t/2,-t/2,.01,1e4),this.camera.zoom=e/50,this.camera.up.set(0,0,1),this.view=new Dg,this.view.position.set(0,0,Potree.config.map.cameraHeight),this.view.lookAt(0,0,0),this.setViewLimit("standard"),new EA(this.view,this.camera,{left:0,bottom:0,width:1,height:1,name:"mapViewport"})),e=(t.axis=["x","y"],t.axisSign=[1,1],t.noPointcloud=!0,t.render=this.render.bind(this),this.viewports=[t],this.controls=new yA(this,this.viewports[0]),this.controls.setEnable(!0),this.scene=new Ps,this.inputHandler=new bA(this,this.scene),this.inputHandler.name="mapInputHandler",this.inputHandler.registerInteractiveScene(this.scene),this.viewports[0].interactiveScenes=this.inputHandler.interactiveScenes,new Z(my,new L({transparent:!0,opacity:.9,depthTest:!1,map:fy.load(Potree.resourcePath+"/textures/pic_location128.png")})));e.position.set(0,0,0),this.cursor=e,this.scene.add(e),viewer.setObjectLayers(this.scene,"mapObjects")}},{key:"setViewLimit",value:function(e){e=Potree.config.OrthoCameraLimit[e];e?(this.view.limitBound=(new Y).copy(e.posBound),this.camera.zoomLimit=$.extend({},e.zoom)):(this.view.limitBound=null,this.camera.zoomLimit=null)}},{key:"updateCursor",value:function(){var e=ee.getScaleForConstantSize({minSize:80,maxSize:200,nearBound:5,farBound:100,camera:this.camera,position:this.cursor.getWorldPosition(new Re),resolution:this.viewports[0].resolution});this.cursor.scale.set(e,e,e),this.cursor.position.copy(viewer.mainViewport.camera.position).setZ(0),this.cursor.rotation.z=viewer.mainViewport.view.yaw,this.needRender=!0}},{key:"addPanos",value:function(e){var i=this,r=new K;ny={default:new L({transparent:!0,opacity:.5,map:fy.load(Potree.resourcePath+"/textures/map_marker.png")}),selected:new L({transparent:!0,opacity:1,map:fy.load(Potree.resourcePath+"/textures/map_marker.png")})},e.images.panos.forEach(function(t){t.mapMarker=new Z(my,ny.default),t.mapMarker.position.copy(t.position).setZ(0),t.mapMarker.scale.set(1,1,1),t.mapMarker.name="mapMarker",r.add(t.mapMarker);function e(e){e.byMap||(t.mapMarker.material=ny.selected,e.byMainView||t.dispatchEvent({type:"hoverOn",byMap:!0}),i.needRender=!0)}function n(e){e.byMap||(t.mapMarker.material=ny.default,e.byMainView||t.dispatchEvent({type:"hoverOff",byMap:!0}),i.needRender=!0)}t.mapMarker.addEventListener("mouseover",e),t.mapMarker.addEventListener("mouseleave",n),t.addEventListener("hoverOn",e),t.addEventListener("hoverOff",n);t.mapMarker.addEventListener("click",function(e){viewer.images360.flyToPano(t)}),t.addEventListener("isVisible",function(e){viewer.updateVisible(t.mapMarker,"panoVisible",e.visible),i.needRender=!0}),t.addEventListener("rePos",function(e){t.mapMarker.position.copy(t.position).setZ(0)})}),this.scene.add(r),r.position.z=dy,this.panosGroup=r,viewer.setObjectLayers(r,"mapObjects"),this.initFitView()}},{key:"updateClosestPano",value:function(t){var e;viewer.images360.flying||(t=t&&t.orthoIntersect)&&(t=t.clone().setZ(0),e=[function(e){return e.position.clone().setZ(0).distanceTo(t)<20},cy.filters.isEnabled(),cy.filters.isVisible()],e=ag.find(viewer.images360.panos,e,[cy.sortFunctions.floorDisSquaredToPoint(t)]))&&e!=viewer.images360.currentPano&&viewer.images360.flyToPano(e)}},{key:"fitPanosToViewport",value:function(){var e=viewer.images360.bound.size.clone().multiplyScalar(1.1),t=(e.max(new Re(4,4,4)),viewer.images360.bound.center.clone());this.moveTo(t,e,0)}},{key:"fitToPointcloud",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,n=e.bound.getSize(new Re),e=(n.max(new Re(4,4,4)),e.bound.getCenter(new Re));this.moveTo(e,n,t)}},{key:"initFitView",value:function(){this.camera.zoom=14,this.moveTo(viewer.images360.position),this.camera.updateProjectionMatrix()}},{key:"fitToDatasets",value:function(e){var t=new Y,e=(e.forEach(function(e){return t.union(e.bound)}),t.getCenter(new Re)),n=t.getSize(new Re);this.moveTo(e,n,200)}},{key:"moveTo",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length?arguments[3]:void 0,r=4<arguments.length?arguments[4]:void 0;e=new Re(e.x,e.y,Potree.config.map.cameraHeight),this.view.moveOrthoCamera(this.viewports[0],{endPosition:e,boundSize:t,margin:i},n,r)}},{key:"updateWhenAtViewer",value:function(e){this.attachedToViewer&&(this.started&&this.mapLayer.update(),this.updateCursor(),this.needRender=!0)}},{key:"update",value:function(e,t){(this.visible||this.attachedToViewer)&&(this.attachedToViewer?this.mapLayer.needUpdate&&this.updateWhenAtViewer():(this.updateScreenSize(),this.controls.update(e),this.view.applyToCamera(this.camera),e=this.cameraChanged(),this.started&&(e||this.mapLayer.needUpdate)&&this.mapLayer.update(),e&&(this.dispatchEvent({type:"camera_changed",camera:this.camera,viewport:this.viewports[0]}),this.needRender=!0,this.updateCursor()),this.render()))}},{key:"attachToMainViewer",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:.5,i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};if(Potree.settings.isOfficial||(this.renderArea.style.display=e?"none":"block"),e){if(this.enabledOld=this.enabled,this.enabled=!0,"dontSet"!=n){if(this.changeSplitScreenDir(i.dir,n),this.attachedToViewer)return void viewer.updateScreenSize({forceUpdateSize:!0});viewer.viewports=[viewer.mainViewport,viewer.mapViewer.viewports[0]]}"measure"==t?this.inputHandler.registerInteractiveScene(viewer.measuringTool.scene):"split4Screens"==t&&this.inputHandler.registerInteractiveScene(viewer.scene.scene)}else{if(!this.attachedToViewer)return;viewer.mainViewport.left=0,viewer.mainViewport.bottom=0,viewer.mainViewport.width=1,viewer.mainViewport.height=1,this.viewports[0].width=1,this.viewports[0].bottom=0,this.viewports[0].height=1,this.viewports[0].left=0,this.inputHandler.unregisterInteractiveScene(viewer.measuringTool.scene),this.inputHandler.unregisterInteractiveScene(viewer.scene.scene),viewer.viewports=[viewer.mainViewport],this.updateScreenSize({forceUpdateSize:!0})}this.attachedToViewer=e,viewer.updateScreenSize({forceUpdateSize:!0}),i.moveToCurrentPos&&(n=new Le(10,10),this.moveTo(viewer.images360.position.clone(),n,1e3)),this.needRender=!0}},{key:"changeSplitScreenDir",value:function(e,t){e&&(this.splitDir=e),this.updateSplitSize(t)}},{key:"updateSplitSize",value:function(e){null!=e&&(this.mapRatio=e),"leftRight"==this.splitDir?(viewer.mainViewport.left=this.mapRatio,viewer.mainViewport.width=1-this.mapRatio,this.viewports[0].width=this.mapRatio,viewer.mainViewport.bottom=this.viewports[0].bottom=0,viewer.mainViewport.height=this.viewports[0].height=1):"upDown"==this.splitDir&&(viewer.mainViewport.bottom=this.mapRatio,viewer.mainViewport.height=1-this.mapRatio,this.viewports[0].height=this.mapRatio,viewer.mainViewport.left=this.viewports[0].left=0,viewer.mainViewport.width=this.viewports[0].width=1),this.attachedToViewer&&viewer.updateScreenSize({forceUpdateSize:!0})}},{key:"render",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(!this.visible&&!this.attachedToViewer||!this.needRender&&!t.force){if(!this.attachedToViewer)return;e=!0}var n=this.attachedToViewer&&this.needRender&&!t.force,i=t.renderer||this.renderer;t.target?i.setRenderTarget(t.target):n&&(this.copyBuffer.setSize(t.viewport.resolution2.x,t.viewport.resolution2.y),i.setRenderTarget(this.copyBuffer)),(t.clear?t:i).clear(),this.attachedToViewer||viewer.dispatchEvent({type:"render.begin",viewer:this,viewport:this.viewports[0],params:t}),viewer.setCameraLayers(this.camera,["map","mapObjects","bothMapAndScene"]),this.mapGradientBG&&(viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg),i.render(viewer.scene.scene,viewer.scene.cameraBG)),i.render(this.scene,this.camera),i.render(viewer.scene.scene,this.camera),i.setRenderTarget(null),this.needRender=!1,(e||n)&&this.copyPass.render(null,null,i,null,this.copyBuffer)}}]),a}(),gy=function(){y(r,K);var i=C(r);function r(n){function e(e){var t=new L({depthTest:!0,depthWrite:!0,side:ve});return(new Nc).load(W.resourcePath+"/textures/navigation/"+e,function(e){e.anisotropy=n.renderer.capabilities.getMaxAnisotropy(),t.map=e,t.needsUpdate=!0}),t}te(this,r),(a=i.call(this)).viewer=n;var a,t=new Ru(1,1);a.front=new Z(t,e("F.png")),a.front.position.y=-.5,a.front.rotation.x=Math.PI/2,a.front.updateMatrixWorld(),a.front.name="F",a.add(a.front),a.back=new Z(t,e("B.png")),a.back.position.y=.5,a.back.rotation.x=Math.PI/2,a.back.updateMatrixWorld(),a.back.name="B",a.add(a.back),a.left=new Z(t,e("L.png")),a.left.position.x=-.5,a.left.rotation.y=Math.PI/2,a.left.updateMatrixWorld(),a.left.name="L",a.add(a.left),a.right=new Z(t,e("R.png")),a.right.position.x=.5,a.right.rotation.y=Math.PI/2,a.right.updateMatrixWorld(),a.right.name="R",a.add(a.right),a.bottom=new Z(t,e("D.png")),a.bottom.position.z=-.5,a.bottom.updateMatrixWorld(),a.bottom.name="D",a.add(a.bottom),a.top=new Z(t,e("U.png")),a.top.position.z=.5,a.top.updateMatrixWorld(),a.top.name="U",a.add(a.top),a.width=150,a.camera=new mh(-1,1,1,-1,-1,1),a.camera.position.copy(new Re(0,0,0)),a.camera.lookAt(new Re(0,1,0)),a.camera.updateMatrixWorld(),a.camera.rotation.order="ZXY";return a.viewer.renderer.domElement.addEventListener("mousedown",function(e){if(a.visible){a.pickedFace=null;var t=new Le;if(t.x=e.clientX-(window.innerWidth-a.width),t.y=e.clientY,!(t.x<0||t.y>a.width)){t.x=t.x/a.width*2-1,t.y=2*-(t.y/a.width)+1;for(var e=new gd,n=(e.setFromCamera(t,a.camera),e.ray.origin.sub(a.camera.getWorldDirection(new Re)),e.intersectObjects(a.children)),i=1e3,r=0;r<n.length;r++)n[r].distance<i&&(a.pickedFace=n[r].object.name,i=n[r].distance);a.pickedFace&&a.viewer.setView(a.pickedFace)}}},!1),a}return A(r,[{key:"update",value:function(e){this.camera.rotation.copy(e),this.camera.updateMatrixWorld()}}]),r}(),Ay=function(){function o(){te(this,o)}return A(o,null,[{key:"measurementToFeatures",value:function(e){var t,n=e.points.map(function(e){return e.position.toArray()}),i=[];return 1===n.length?(t={type:"Feature",geometry:{type:"Point",coordinates:n[0]},properties:{name:e.name}},i.push(t)):1<n.length&&!e.closed?(t={type:"Feature",geometry:{type:"LineString",coordinates:n},properties:{name:e.name}},i.push(t)):1<n.length&&e.closed&&(t={type:"Feature",geometry:{type:"Polygon",coordinates:[[].concat(J(n),[n[0]])]},properties:{name:e.name}},i.push(t)),e.showDistances&&e.edgeLabels.forEach(function(e){e={type:"Feature",geometry:{type:"Point",coordinates:e.position.toArray()},properties:{distance:e.text}};i.push(e)}),e.showArea&&(n={type:"Feature",geometry:{type:"Point",coordinates:e.areaLabel.position.toArray()},properties:{area:e.areaLabel.text}},i.push(n)),i}},{key:"toString",value:function(e){var t,n=[],i=q(e=(e=e instanceof Array?e:[e]).filter(function(e){return e instanceof Gf}));try{for(i.s();!(t=i.n()).done;)var r=t.value,a=o.measurementToFeatures(r),n=n.concat(a)}catch(e){i.e(e)}finally{i.f()}return JSON.stringify({type:"FeatureCollection",features:n},null,"\t")}}]),o}(),yy=function(){function h(){te(this,h)}return A(h,null,[{key:"measurementPointSection",value:function(e){e=e.points[0].position;return e?"0\nCIRCLE\n8\nlayer_point\n10\n".concat(e.x,"\n20\n").concat(e.y,"\n30\n").concat(e.z,"\n40\n1.0\n"):""}},{key:"measurementPolylineSection",value:function(e){var t,n=8,i=(e.closed&&(n+=1),"0\nPOLYLINE\n8\nlayer_polyline\n62\n1\n66\n1\n10\n0.0\n20\n0.0\n30\n0.0\n70\n".concat(n,"\n")),r=0,a=0,o=0,s=q(e.points);try{for(s.s();!(t=s.n()).done;){var l=t.value.position,r=Math.max(r,l.x),a=Math.max(a,l.y),o=Math.max(o,l.z);i+="0\nVERTEX\n8\n0\n10\n".concat(l.x,"\n20\n").concat(l.y,"\n30\n").concat(l.z,"\n70\n32\n")}}catch(e){s.e(e)}finally{s.f()}return i+="0\nSEQEND\n"}},{key:"measurementSection",value:function(e){return 0===e.points.length?"":1===e.points.length?h.measurementPointSection(e):2<=e.points.length?h.measurementPolylineSection(e):void 0}},{key:"toString",value:function(e){var t,n=(e=(e=e instanceof Array?e:[e]).filter(function(e){return e instanceof Gf})).filter(function(e){return e instanceof Gf}).map(function(e){return e.points}).reduce(function(e,t){return e.concat(t)}).map(function(e){return e.position}),i=new Re(1/0,1/0,1/0),r=new Re(-1/0,-1/0,-1/0),a=q(n);try{for(a.s();!(t=a.n()).done;){var o=t.value;i.min(o),r.max(o)}}catch(e){a.e(e)}finally{a.f()}var s,n="999\nDXF created from potree\n0\nSECTION\n2\nHEADER\n9\n$ACADVER\n1\nAC1006\n9\n$INSBASE\n10\n0.0\n20\n0.0\n30\n0.0\n9\n$EXTMIN\n10\n".concat(i.x,"\n20\n").concat(i.y,"\n30\n").concat(i.z,"\n9\n$EXTMAX\n10\n").concat(r.x,"\n20\n").concat(r.y,"\n30\n").concat(r.z,"\n0\nENDSEC\n"),l="0\nSECTION\n2\nENTITIES\n",u=q(e);try{for(u.s();!(s=u.n()).done;){var c=s.value;l+=h.measurementSection(c)}}catch(e){u.e(e)}finally{u.f()}return n+(l+="0\nENDSEC\n")+"0\nEOF"}}]),h}(),wy=function(){function r(e,t,n){var i=this;te(this,r),this.viewer=e,this.measurement=t,this.propertiesPanel=n,this._update=function(){i.update()}}return A(r,[{key:"createCoordinatesTable",value:function(e){var r,a=this,o=$('\n\t\t\t<table class="measurement_value_table">\n\t\t\t\t<tr>\n\t\t\t\t\t<th>x</th>\n\t\t\t\t\t<th>y</th>\n\t\t\t\t\t<th>z</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t'),s=Potree.resourcePath+"/icons/copy.svg",t=q(e);try{for(t.s();!(r=t.n()).done;)!function(){var t=r.value,e=ie.addCommas(t.x.toFixed(3)),n=ie.addCommas(t.y.toFixed(3)),i=ie.addCommas(t.z.toFixed(3)),e=$("\n\t\t\t\t<tr>\n\t\t\t\t\t<td><span>".concat(e,"</span></td>\n\t\t\t\t\t<td><span>").concat(n,"</span></td>\n\t\t\t\t\t<td><span>").concat(i,'</span></td>\n\t\t\t\t\t<td align="right" style="width: 25%">\n\t\t\t\t\t\t<img name="copy" title="copy" class="button-icon" src="').concat(s,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t'));a.elCopy=e.find("img[name=copy]"),a.elCopy.click(function(){var e=t.toArray().map(function(e){return e.toFixed(3)}).join(", ");ie.clipboardCopy(e),a.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),o.append(e)}()}catch(e){t.e(e)}finally{t.f()}return o}},{key:"createAttributesTable",value:function(){var e=$('<table class="measurement_value_table"></table>');this.measurement.points[0];return e}},{key:"update",value:function(){}}]),r}(),by=function(){y(i,wy);var n=C(i);function i(e,r,t){te(this,i),a=n.call(this,e,r,t);var a,e=Potree.resourcePath+"/icons/remove.svg";return a.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<table id="distances_table" class="measurement_value_table"></table>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<input type="button" name="make_profile" value="profile from measure" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),a.elRemove=a.elContent.find("img[name=remove]"),a.elRemove.click(function(){a.viewer.scene.removeMeasurement(r)}),a.elMakeProfile=a.elContent.find("input[name=make_profile]"),a.elMakeProfile.click(function(){var e,t=new ff,n=(t.name=r.name,t.width=r.getTotalDistance()/50,q(r.points));try{for(n.s();!(e=n.n()).done;){var i=e.value;t.addMarker(i.position.clone())}}catch(e){n.e(e)}finally{n.f()}a.viewer.scene.addProfile(t)}),a.propertiesPanel.addVolatileListener(r,"marker_added",a._update),a.propertiesPanel.addVolatileListener(r,"marker_removed",a._update),a.propertiesPanel.addVolatileListener(r,"marker_moved",a._update),a.update(),a}return A(i,[{key:"update",value:function(){for(var e=this.elContent.find(".coordinates_table_container"),t=(e.empty(),e.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position}))),this.measurement.points.map(function(e){return e.position})),n=[],i=0;i<t.length-1;i++){var r=t[i].distanceTo(t[i+1]);n.push(r.toFixed(3))}var e=this.measurement.getTotalDistance().toFixed(3),a=this.elContent.find("#distances_table");a.empty();for(var o=0;o<n.length;o++){var s=n[o],s=$("\n\t\t\t\t<tr>\n\t\t\t\t\t<th>".concat(0===o?"Distances: ":"",'</th>\n\t\t\t\t\t<td style="width: 100%; padding-left: 10px">').concat(s,"</td>\n\t\t\t\t</tr>"));a.append(s)}e=$('\n\t\t\t<tr>\n\t\t\t\t<th>Total: </td><td style="width: 100%; padding-left: 10px">'.concat(e,"</th>\n\t\t\t</tr>"));a.append(e)}}]),i}(),xy=function(){y(a,wy);var r=C(a);function a(e,t,n){te(this,a),i=r.call(this,e,t,n);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span class="attributes_table_container"></span>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return A(a,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container"),e=(e.empty(),e.append(this.createCoordinatesTable(this.measurement.points)),this.elContent.find(".attributes_table_container"));e.empty(),e.append(this.createAttributesTable())}}]),a}(),Ey=function(){y(a,wy);var r=C(a);function a(e,t,n){te(this,a),i=r.call(this,e,t,n);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span style="font-weight: bold">Area: </span>\n\t\t\t\t<span id="measurement_area"></span>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return A(a,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container");e.empty(),e.append(this.createCoordinatesTable(this.measurement.points)),this.elContent.find("#measurement_area").html(this.measurement.area.value.toFixed(3))}}]),a}(),Cy=function(){y(a,wy);var r=C(a);function a(e,t,n){te(this,a),i=r.call(this,e,t,n);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<table class="measurement_value_table">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>α</th>\n\t\t\t\t\t\t<th>β</th>\n\t\t\t\t\t\t<th>γ</th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td align="center" id="angle_cell_alpha" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_betta" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_gamma" style="width: 33%"></td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return A(a,[{key:"update",value:function(){for(var e=this.elContent.find(".coordinates_table_container"),t=(e.empty(),e.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position}))),[]),n=0;n<this.measurement.points.length;n++)t.push(this.measurement.getAngle(n)*(180/Math.PI));var t=t.map(function(e){return e.toFixed(1)+"°"}),e=this.elContent.find("#angle_cell_alpha"),i=this.elContent.find("#angle_cell_betta"),r=this.elContent.find("#angle_cell_gamma");e.html(t[0]),i.html(t[1]),r.html(t[2])}}]),a}(),By=function(){y(a,wy);var r=C(a);function a(e,t,n){te(this,a),i=r.call(this,e,t,n);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<table id="infos_table" class="measurement_value_table"></table>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return A(a,[{key:"update",value:function(){var e,t,n,i,r=this.elContent.find(".coordinates_table_container"),r=(r.empty(),r.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position}))),this.elContent.find("#infos_table"));3!==this.measurement.points.length?r.empty():(i=this.measurement.points[0].position,e=this.measurement.points[1].position,t=this.measurement.points[2].position,t=(e=Potree.Utils.computeCircleCenter(i,e,t)).distanceTo(i),i=2*Math.PI*t,e="".concat((n=function(e){return Potree.Utils.addCommas(e.toFixed(3))})(e.x)," ").concat(n(e.y)," ").concat(n(e.z)),t=n(t),n=n(i),i='style="width: 100%; padding: 5px;"',r.html("\n\t\t\t<tr>\n\t\t\t\t<th ".concat(r='style="text-align: left"',">Center: </th>\n\t\t\t\t<td ").concat(i,"></td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<td ").concat(i,' colspan="2">\n\t\t\t\t\t').concat(e,"\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th ").concat(r,">Radius: </th>\n\t\t\t\t<td ").concat(i,">").concat(t,"</td>\n\t\t\t</tr>\n\t\t\t<tr>\n\t\t\t\t<th ").concat(r,">Circumference: </th>\n\t\t\t\t<td ").concat(i,">").concat(n,"</td>\n\t\t\t</tr>\n\t\t")))}}]),a}(),_y=function(){y(a,wy);var r=C(a);function a(e,t,n){te(this,a),i=r.call(this,e,t,n);var i,e=Potree.resourcePath+"/icons/remove.svg";return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span id="height_label">Height: </span><br>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeMeasurement(t)}),i.propertiesPanel.addVolatileListener(t,"marker_added",i._update),i.propertiesPanel.addVolatileListener(t,"marker_removed",i._update),i.propertiesPanel.addVolatileListener(t,"marker_moved",i._update),i.update(),i}return A(a,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container");e.empty(),e.append(this.createCoordinatesTable(this.measurement.points.map(function(e){return e.position})));var e=this.measurement.points.slice().sort(function(e,t){return e.position.z-t.position.z}),t=e[0].position.clone(),e=e[e.length-1].position.clone(),t=t.z,e=(e=e.z-t).toFixed(3);this.elHeightLabel=this.elContent.find("#height_label"),this.elHeightLabel.html("<b>Height:</b> ".concat(e))}}]),a}(),My=function(){y(l,wy);var e,s=C(l);function l(e,t,n){te(this,l),i=s.call(this,e,t,n);var i,e=Potree.resourcePath+"/icons/copy.svg",n=Potree.resourcePath+"/icons/remove.svg",r=new Map([[df,"length"],[pf,"rx"]]).get(t.constructor),a=new Map([[df,"width"],[pf,"ry"]]).get(t.constructor),o=new Map([[df,"height"],[pf,"rz"]]).get(t.constructor);return i.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\n\t\t\t\t<table class="measurement_value_table">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>α</th>\n\t\t\t\t\t\t<th>β</th>\n\t\t\t\t\t\t<th>γ</th>\n\t\t\t\t\t\t<th></th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td align="center" id="angle_cell_alpha" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_betta" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="angle_cell_gamma" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="right" style="width: 25%">\n\t\t\t\t\t\t\t<img name="copyRotation" title="copy" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t\t<table class="measurement_value_table">\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<th>').concat(r,"</th>\n\t\t\t\t\t\t<th>").concat(a,"</th>\n\t\t\t\t\t\t<th>").concat(o,'</th>\n\t\t\t\t\t\t<th></th>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td align="center" id="cell_length" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="cell_width" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="center" id="cell_height" style="width: 33%"></td>\n\t\t\t\t\t\t<td align="right" style="width: 25%">\n\t\t\t\t\t\t\t<img name="copyScale" title="copy" class="button-icon" src="').concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</table>\n\n\t\t\t\t<br>\n\t\t\t\t<span style="font-weight: bold">Volume: </span>\n\t\t\t\t<span id="measurement_volume"></span>\n\n\t\t\t\t\x3c!--\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap">\n\t\t\t\t\t\t<input id="volume_show" type="checkbox"/>\n\t\t\t\t\t\t<span>show volume</span>\n\t\t\t\t\t</label>\n\t\t\t\t</li>--\x3e\n\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap">\n\t\t\t\t\t\t<input id="volume_clip" type="checkbox"/>\n\t\t\t\t\t\t<span>make clip volume</span>\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\n\t\t\t\t<li style="margin-top: 10px">\n\t\t\t\t\t<input name="download_volume" type="button" value="prepare download" style="width: 100%" />\n\t\t\t\t\t<div name="download_message"></div>\n\t\t\t\t</li>\n\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<li style="display: grid; grid-template-columns: auto auto; grid-column-gap: 5px; margin-top: 10px">\n\t\t\t\t\t<input id="volume_reset_orientation" type="button" value="reset orientation"/>\n\t\t\t\t\t<input id="volume_make_uniform" type="button" value="make uniform"/>\n\t\t\t\t</li>\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="').concat(n,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),i.elDownloadButton=i.elContent.find("input[name=download_volume]"),i.propertiesPanel.viewer.server?i.elDownloadButton.click(function(){return i.download()}):i.elDownloadButton.hide(),i.elCopyRotation=i.elContent.find("img[name=copyRotation]"),i.elCopyRotation.click(function(){var e=i.measurement.rotation.toArray().slice(0,3).map(function(e){return e.toFixed(3)}).join(", ");ie.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),i.elCopyScale=i.elContent.find("img[name=copyScale]"),i.elCopyScale.click(function(){var e=i.measurement.scale.toArray().map(function(e){return e.toFixed(3)}).join(", ");ie.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),i.elRemove=i.elContent.find("img[name=remove]"),i.elRemove.click(function(){i.viewer.scene.removeVolume(t)}),i.elContent.find("#volume_reset_orientation").click(function(){t.rotation.set(0,0,0)}),i.elContent.find("#volume_make_uniform").click(function(){var e=(t.scale.x+t.scale.y+t.scale.z)/3;t.scale.set(e,e,e)}),i.elCheckClip=i.elContent.find("#volume_clip"),i.elCheckClip.click(function(e){i.measurement.clip=e.target.checked}),i.elCheckShow=i.elContent.find("#volume_show"),i.elCheckShow.click(function(e){i.measurement.visible=e.target.checked}),i.propertiesPanel.addVolatileListener(t,"position_changed",i._update),i.propertiesPanel.addVolatileListener(t,"orientation_changed",i._update),i.propertiesPanel.addVolatileListener(t,"scale_changed",i._update),i.propertiesPanel.addVolatileListener(t,"clip_changed",i._update),i.update(),i}return A(l,[{key:"download",value:(e=d(V().mark(function e(){var t,n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B,_,M,T,S,I,D,P,k,L;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:for(m=this.measurement,A=[],m=m.matrixWorld,g=new Re(.5,0,0).applyMatrix4(m),o=new Re(-.5,0,0).applyMatrix4(m),l=new Re(0,.5,0).applyMatrix4(m),u=new Re(0,-.5,0).applyMatrix4(m),p=new Re(0,0,.5).applyMatrix4(m),m=new Re(0,0,-.5).applyMatrix4(m),v=(new Re).subVectors(o,g).normalize(),a=v.clone().multiplyScalar(-1),s=(new Re).subVectors(u,l).normalize(),h=s.clone().multiplyScalar(-1),d=(new Re).subVectors(m,p).normalize(),f=d.clone().multiplyScalar(-1),v=[(new $i).setFromNormalAndCoplanarPoint(v,g),(new $i).setFromNormalAndCoplanarPoint(a,o),(new $i).setFromNormalAndCoplanarPoint(s,l),(new $i).setFromNormalAndCoplanarPoint(h,u),(new $i).setFromNormalAndCoplanarPoint(d,p),(new $i).setFromNormalAndCoplanarPoint(f,m)],t=[],n=0,i=v;n<i.length;n++)r=[(r=i[n]).normal.toArray(),r.constant].join(","),r="[".concat(r,"]"),t.push(r);g="["+t.join(",")+"]",A.push(g),a=A.join(","),o=[],s=q(this.viewer.scene.pointclouds),e.prev=23,s.s();case 25:if((l=s.n()).done){e.next=39;break}if((c=l.value).visible){e.next=29;break}return e.abrupt("continue",37);case 29:h=c.pcoGeometry.offset.clone(),d=(u=new _e).makeTranslation.apply(u,J(h.multiplyScalar(-1).toArray())),p=c.matrixWorld,f=(new _e).multiplyMatrices(p,d),m="".concat(window.location.pathname,"/../").concat(c.pcoGeometry.url),v={path:m,transform:f.elements},g=JSON.stringify(v),o.push(g);case 37:e.next=25;break;case 39:e.next=44;break;case 41:e.prev=41,e.t0=e.catch(23),s.e(e.t0);case 44:return e.prev=44,s.f(),e.finish(44);case 47:return A=o.join(","),y=this.elContent.find("div[name=download_message]"),w=function(e){y.html('<div style="color: #ff0000">ERROR: '.concat(e,"</div>"))},b=function(e){y.html("".concat(e))},x=null,E="".concat(viewer.server,"/create_regions_filter?pointclouds=[").concat(A,"]®ions=[").concat(a,"]"),b("estimating results ..."),e.next=56,fetch(E);case 56:return E=e.sent,e.next=59,E.json();case 59:if((C=e.sent).handle){e.next=65;break}return w(C.message),e.abrupt("return");case 65:x=C.handle;case 66:B="".concat(viewer.server,"/check_regions_filter?handle=").concat(x),_=function(n){return new Promise(function(e,t){setTimeout(function(){e()},n)})},M=function(e){var t=e.progress,e=e.estimate,t=t["processed points"]/e.points,e=parseInt(100*t);b("progress: ".concat(e,"%"))},T=function(e){var t="downloads ready: <br>";t+="<ul>";for(var n=0;n<e.pointclouds.length;n++){var i="".concat(viewer.server,"/download_regions_filter_result?handle=").concat(x,"&index=").concat(n);t+='<li><a href="'.concat(i,'">result_').concat(n,".las</a> </li>\n")}var r="".concat(viewer.server,"/download_regions_filter_report?handle=").concat(x);t+='<li> <a href="'.concat(r,'">report.json</a> </li>\n'),b(t+="</ul>")},S=function(e){e="Unexpected Response. <br>status: ".concat(e.status," <br>message: ").concat(e.message);b(e)},I=function(e){e="ERROR: ".concat(e.message);throw w(e),new Error(e)},D=Date.now();case 73:return e.next=76,fetch(B);case 76:return k=e.sent,e.next=79,k.json();case 79:"ERROR"!==(P=e.sent).status?e.next=84:(I(P),e.next=94);break;case 84:"FILTERING"!==P.status?e.next=88:(M(P),e.next=94);break;case 88:if("FINISHED"===P.status)return T(P),e.abrupt("break",100);e.next=93;break;case 93:S(P);case 94:return k=(Date.now()-D)/1e3,L=k<10?100:1e3,e.next=98,_(L);case 98:e.next=73;break;case 100:case"end":return e.stop()}},e,this,[[23,41,44,47]])})),function(){return e.apply(this,arguments)})},{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container"),e=(e.empty(),e.append(this.createCoordinatesTable([this.measurement.position])),this.measurement.rotation.toVector3()),t=(e=(e=(e=e.toArray()).map(function(e){return 180*e/Math.PI})).map(function(e){return e.toFixed(1)+"°"}),this.elContent.find("#angle_cell_alpha")),n=this.elContent.find("#angle_cell_betta"),i=this.elContent.find("#angle_cell_gamma");t.html(e[0]),n.html(e[1]),i.html(e[2]);t=(t=this.measurement.scale.toArray()).map(function(e){return ie.addCommas(e.toFixed(2))}),n=this.elContent.find("#cell_length"),i=this.elContent.find("#cell_width"),e=this.elContent.find("#cell_height"),n.html(t[0]),i.html(t[1]),e.html(t[2]),n=this.elContent.find("#measurement_volume"),i=this.measurement.getVolume();n.html(ie.addCommas(i.toFixed(2))),this.elCheckClip.prop("checked",this.measurement.clip),this.elCheckShow.prop("checked",this.measurement.visible)}}]),l}(),Ty=function(){y(o,wy);var e,a=C(o);function o(e,i,t){te(this,o),n=a.call(this,e,i,t);var n,e=Potree.resourcePath+"/icons/remove.svg",r=(n.elContent=$('\n\t\t\t<div class="measurement_content selectable">\n\t\t\t\t<span class="coordinates_table_container"></span>\n\t\t\t\t<br>\n\t\t\t\t<span style="display:flex">\n\t\t\t\t\t<span style="display:flex; align-items: center; padding-right: 10px">Width: </span>\n\t\t\t\t\t<input id="sldProfileWidth" name="sldProfileWidth" value="5.06" style="flex-grow: 1; width:100%">\n\t\t\t\t</span>\n\t\t\t\t<br>\n\n\t\t\t\t<li style="margin-top: 10px">\n\t\t\t\t\t<input name="download_profile" type="button" value="prepare download" style="width: 100%" />\n\t\t\t\t\t<div name="download_message"></div>\n\t\t\t\t</li>\n\n\t\t\t\t<br>\n\n\t\t\t\t<input type="button" id="show_2d_profile" value="show 2d profile" style="width: 100%"/>\n\n\t\t\t\t\x3c!-- ACTIONS --\x3e\n\t\t\t\t<div style="display: flex; margin-top: 12px">\n\t\t\t\t\t<span></span>\n\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t<img name="remove" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t')),n.elRemove=n.elContent.find("img[name=remove]"),n.elRemove.click(function(){n.viewer.scene.removeProfile(i)}),n.elDownloadButton=n.elContent.find("input[name=download_profile]"),n.propertiesPanel.viewer.server?n.elDownloadButton.click(function(){return n.download()}):n.elDownloadButton.hide(),n.elContent.find("#sldProfileWidth"));r.spinner({min:0,max:1e7,step:.01,numberFormat:"n",start:function(){},spin:function(e,t){var n=r.spinner("value");i.setWidth(n)},change:function(e,t){var n=r.spinner("value");i.setWidth(n)},stop:function(e,t){var n=r.spinner("value");i.setWidth(n)},incremental:function(e){var t=r.spinner("value"),n=r.spinner("option","step");return Math.max(1,parseInt(.05*t/n))}}),r.spinner("value",i.getWidth()),r.spinner("widget").css("width","100%");return n.propertiesPanel.addVolatileListener(i,"width_changed",function(e){r.spinner("value")!==i.getWidth()&&r.spinner("value",i.getWidth())}),n.elContent.find("#show_2d_profile").click(function(){n.propertiesPanel.viewer.profileWindow.show(),n.propertiesPanel.viewer.profileWindowController.setProfile(i)}),n.propertiesPanel.addVolatileListener(i,"marker_added",n._update),n.propertiesPanel.addVolatileListener(i,"marker_removed",n._update),n.propertiesPanel.addVolatileListener(i,"marker_moved",n._update),n.update(),n}return A(o,[{key:"update",value:function(){var e=this.elContent.find(".coordinates_table_container");e.empty(),e.append(this.createCoordinatesTable(this.measurement.points))}},{key:"download",value:(e=d(V().mark(function e(){var t,n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B,_,M,T,S,I,D,P,k,O,N,G,U,z,H,Q,L,R,F;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:E=this.measurement,t=[],C=E.getSegments(),n=E.width,i=q(C);try{for(i.s();!(r=i.n()).done;){for(a=r.value,o=a.start.clone().multiply(new Re(1,1,0)),s=a.end.clone().multiply(new Re(1,1,0)),l=(new Re).addVectors(o,s).multiplyScalar(.5),u=(new Re).subVectors(s,o).normalize(),c=(new Re).subVectors(o,s).normalize(),h=new Re(0,0,1),d=(new Re).crossVectors(u,h),p=(new Re).crossVectors(c,h),console.log(p),f=d.clone().multiplyScalar(.5*n).add(l),m=p.clone().multiplyScalar(.5*n).add(l),v=[(new $i).setFromNormalAndCoplanarPoint(u,o),(new $i).setFromNormalAndCoplanarPoint(c,s),(new $i).setFromNormalAndCoplanarPoint(p,f),(new $i).setFromNormalAndCoplanarPoint(d,m)],g=[],A=0,y=v;A<y.length;A++)b=[(w=y[A]).normal.toArray(),w.constant].join(","),b="[".concat(b,"]"),g.push(b);x="["+g.join(",")+"]",t.push(x)}}catch(e){i.e(e)}finally{i.f()}E=t.join(","),C=[],B=q(this.viewer.scene.pointclouds),e.prev=9,B.s();case 11:if((_=B.n()).done){e.next=25;break}if((_=_.value).visible){e.next=15;break}return e.abrupt("continue",23);case 15:P=_.pcoGeometry.offset.clone(),M=(M=new _e).makeTranslation.apply(M,J(P.multiplyScalar(-1).toArray())),P=_.matrixWorld,P=(new _e).multiplyMatrices(P,M),M="".concat(window.location.pathname,"/../").concat(_.pcoGeometry.url),M={path:M,transform:P.elements},P=JSON.stringify(M),C.push(P);case 23:e.next=11;break;case 25:e.next=30;break;case 27:e.prev=27,e.t0=e.catch(9),B.e(e.t0);case 30:return e.prev=30,B.f(),e.finish(30);case 33:return M=C.join(","),T=this.elContent.find("div[name=download_message]"),S=function(e){T.html('<div style="color: #ff0000">ERROR: '.concat(e,"</div>"))},I=function(e){T.html("".concat(e))},D=null,P="".concat(viewer.server,"/create_regions_filter?pointclouds=[").concat(M,"]®ions=[").concat(E,"]"),I("estimating results ..."),e.next=42,fetch(P);case 42:return L=e.sent,e.next=45,L.json();case 45:if((k=e.sent).handle){e.next=51;break}return S(k.message),e.abrupt("return");case 51:D=k.handle;case 52:O="".concat(viewer.server,"/check_regions_filter?handle=").concat(D),N=function(n){return new Promise(function(e,t){setTimeout(function(){e()},n)})},G=function(e){var t=e.progress,e=e.estimate,t=t["processed points"]/e.points,e=parseInt(100*t);I("progress: ".concat(e,"%"))},U=function(e){var t="downloads ready: <br>";t+="<ul>";for(var n=0;n<e.pointclouds.length;n++){var i="".concat(viewer.server,"/download_regions_filter_result?handle=").concat(D,"&index=").concat(n);t+='<li><a href="'.concat(i,'">result_').concat(n,".las</a> </li>\n")}var r="".concat(viewer.server,"/download_regions_filter_report?handle=").concat(D);t+='<li> <a href="'.concat(r,'">report.json</a> </li>\n'),I(t+="</ul>")},z=function(e){e="Unexpected Response. <br>status: ".concat(e.status," <br>message: ").concat(e.message);I(e)},H=function(e){e="ERROR: ".concat(e.message);throw S(e),new Error(e)},Q=Date.now();case 59:return e.next=62,fetch(O);case 62:return L=e.sent,e.next=65,L.json();case 65:"ERROR"!==(R=e.sent).status?e.next=70:(H(R),e.next=80);break;case 70:"FILTERING"!==R.status?e.next=74:(G(R),e.next=80);break;case 74:if("FINISHED"===R.status)return U(R),e.abrupt("break",86);e.next=79;break;case 79:z(R);case 80:return F=(Date.now()-Q)/1e3,F=F<10?100:1e3,e.next=84,N(F);case 84:e.next=59;break;case 86:case"end":return e.stop()}},e,this,[[9,27,30,33]])})),function(){return e.apply(this,arguments)})}]),o}(),Sy=function(){function i(e,t){var n=this,t=(te(this,i),this.viewer=e,this.propertiesPanel=t,this._update=function(){n.update()},Potree.resourcePath+"/icons/copy.svg");this.elContent=$('\n\t\t<div class="propertypanel_content">\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan="3">position</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align="center" id="camera_position_x" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_position_y" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_position_z" style="width: 25%"></td>\n\t\t\t\t\t<td align="right" id="copy_camera_position" style="width: 25%">\n\t\t\t\t\t\t<img name="copyPosition" title="copy" class="button-icon" src="'.concat(t,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan="3">target</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align="center" id="camera_target_x" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_target_y" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="camera_target_z" style="width: 25%"></td>\n\t\t\t\t\t<td align="right" id="copy_camera_target" style="width: 25%">\n\t\t\t\t\t\t<img name="copyTarget" title="copy" class="button-icon" src="').concat(t,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</div>\n\t\t')),this.elCopyPosition=this.elContent.find("img[name=copyPosition]"),this.elCopyPosition.click(function(){var e=n.viewer.scene.getActiveCamera().position.toArray().map(function(e){return e.toFixed(3)}).join(", ");ie.clipboardCopy(e),n.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),this.elCopyTarget=this.elContent.find("img[name=copyTarget]"),this.elCopyTarget.click(function(){var e=n.viewer.scene.view.getPivot().toArray().map(function(e){return e.toFixed(3)}).join(", ");ie.clipboardCopy(e),n.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),this.propertiesPanel.addVolatileListener(e,"camera_changed",this._update),this.update()}return A(i,[{key:"update",value:function(){var e=this.viewer.scene.getActiveCamera(),t=this.viewer.scene.view,e=e.position.toArray().map(function(e){return ie.addCommas(e.toFixed(3))}),e=(this.elContent.find("#camera_position_x").html(e[0]),this.elContent.find("#camera_position_y").html(e[1]),this.elContent.find("#camera_position_z").html(e[2]),t.getPivot().toArray().map(function(e){return ie.addCommas(e.toFixed(3))}));this.elContent.find("#camera_target_x").html(e[0]),this.elContent.find("#camera_target_y").html(e[1]),this.elContent.find("#camera_target_z").html(e[2])}}]),i}(),Iy=function(){function r(e,t,n){var i=this,e=(te(this,r),this.viewer=e,this.propertiesPanel=t,this.annotation=n,this._update=function(){i.update()},"".concat(Potree.resourcePath,"/icons/copy.svg"));this.elContent=$('\n\t\t<div class="propertypanel_content">\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<th colspan="3">position</th>\n\t\t\t\t\t<th></th>\n\t\t\t\t</tr>\n\t\t\t\t<tr>\n\t\t\t\t\t<td align="center" id="annotation_position_x" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="annotation_position_y" style="width: 25%"></td>\n\t\t\t\t\t<td align="center" id="annotation_position_z" style="width: 25%"></td>\n\t\t\t\t\t<td align="right" id="copy_annotation_position" style="width: 25%">\n\t\t\t\t\t\t<img name="copyPosition" title="copy" class="button-icon" src="'.concat(e,'" style="width: 16px; height: 16px"/>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\n\t\t\t</table>\n\n\t\t\t<div>\n\n\t\t\t\t<div class="heading">Title</div>\n\t\t\t\t<div id="annotation_title" contenteditable="true">\n\t\t\t\t\tAnnotation Title\n\t\t\t\t</div>\n\n\t\t\t\t<div class="heading">Description</div>\n\t\t\t\t<div id="annotation_description" contenteditable="true">\n\t\t\t\t\tA longer description of this annotation. \n\t\t\t\t\t\tCan be multiple lines long. TODO: the user should be able\n\t\t\t\t\t\tto modify title and description. \n\t\t\t\t</div>\n\n\t\t\t</div>\n\n\t\t</div>\n\t\t')),this.elCopyPosition=this.elContent.find("img[name=copyPosition]"),this.elCopyPosition.click(function(){var e=i.annotation.position.toArray().map(function(e){return e.toFixed(3)}).join(", ");ie.clipboardCopy(e),i.viewer.postMessage("Copied value to clipboard: <br>'".concat(e,"'"),{duration:3e3})}),this.elTitle=this.elContent.find("#annotation_title").html(n.title),this.elDescription=this.elContent.find("#annotation_description").html(n.description),this.elTitle[0].addEventListener("input",function(){var e=i.elTitle.html();n.title=e},!1),this.elDescription[0].addEventListener("input",function(){var e=i.elDescription.html();n.description=e},!1),this.update()}return A(r,[{key:"update",value:function(){var e=this.annotation,t=this.elContent,n=this.elTitle,i=this.elDescription,r=e.position.toArray().map(function(e){return ie.addCommas(e.toFixed(3))});t.find("#annotation_position_x").html(r[0]),t.find("#annotation_position_y").html(r[1]),t.find("#annotation_position_z").html(r[2]),n.html(e.title),i.html(e.description)}}]),r}(),Dy=function(){function n(l,e,u){te(this,n),this.viewer=l,this.propertiesPanel=e,this.animation=u,this.elContent=$('\n\t\t\t<div class="propertypanel_content">\n\t\t\t\t<span id="animation_keyframes"></span>\n\n\t\t\t\t<span>\n\n\t\t\t\t\t<span style="display:flex">\n\t\t\t\t\t\t<span style="display:flex; align-items: center; padding-right: 10px">Duration: </span>\n\t\t\t\t\t\t<input name="spnDuration" value="5.0" style="flex-grow: 1; width:100%">\n\t\t\t\t\t</span>\n\n\t\t\t\t\t<span>Time: </span><span id="lblTime"></span> <div id="sldTime"></div>\n\n\t\t\t\t\t<input name="play" type="button" value="play"/>\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t'),this.elContent.find("input[name=play]").click(function(){u.play()});function t(){function o(e){var t=$('\n\t\t\t\t\t<div style="display: flex; margin: 0.2em 0em">\n\t\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t\t<input type="button" name="add" value="insert control point" />\n\t\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t</div>\n\t\t\t\t');t.find("input[name=add]").click(function(){u.createControlPoint(e),u.changeCallback()}),c.append(t)}c.empty();var s=0;o(s),u.posCurve.points.forEach(function(e){var t,n,i,r,a;t=s,n=$('\n\t\t\t\t\t<div style="display: flex; margin: 0.2em 0em">\n\t\t\t\t\t\t<span style="flex-grow: 0;">\n\t\t\t\t\t\t\t<img name="assign" src="'.concat(Potree.resourcePath,'/icons/assign.svg" style="width: 1.5em; height: 1.5em"/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span style="flex-grow: 0;">\n\t\t\t\t\t\t\t<img name="move" src="').concat(Potree.resourcePath,'/icons/circled_dot.svg" style="width: 1.5em; height: 1.5em"/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span style="flex-grow: 0; width: 1.5em; height: 1.5em"></span>\n\t\t\t\t\t\t<span style="flex-grow: 0; font-size: 1.5em">keyframe</span>\n\t\t\t\t\t\t<span style="flex-grow: 1"></span>\n\t\t\t\t\t\t<span style="flex-grow: 0;">\n\t\t\t\t\t\t\t<img name="delete" src="').concat(Potree.resourcePath,'/icons/remove.svg" style="width: 1.5em; height: 1.5em"/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t')),i=n.find("img[name=assign]"),r=n.find("img[name=move]"),a=n.find("img[name=delete]"),i.click(function(){u.posCurve.points[t].copy(l.scene.view.position),u.targetCurve.points[t].copy(l.scene.view.getPivot()),u.changeCallback()}),r.click(function(){l.scene.view.position.copy(u.posCurve.points[t]),l.scene.view.lookAt(u.targetCurve.points[t])}),a.click(function(){u.removeControlPoint(t),u.changeCallback()}),c.append(n),o(++s)})}this.elContent.find("#sldTime").slider({value:0,min:0,max:1,step:.001,slide:function(e,t){u.set(t.value),u.updateFrustum()}});var i=this.elContent.find("input[name=spnDuration]"),c=(i.spinner({min:0,max:300,step:.01,numberFormat:"n",start:function(){},spin:function(e,t){var n=i.spinner("value");u.setDuration(n)},change:function(e,t){var n=i.spinner("value");u.setDuration(n)},stop:function(e,t){var n=i.spinner("value");u.setDuration(n)},incremental:function(e){var t=i.spinner("value"),n=i.spinner("option","step");return Math.max(1,parseInt(.05*t/n))}}),i.spinner("value",u.getDuration()),i.spinner("widget").css("width","100%"),this.elContent.find("#animation_keyframes"));t(),u.addEventListener("controlpoint_added",t),u.addEventListener("controlpoint_removed",t)}return A(n,[{key:"update",value:function(){}}]),n}(),Py=function(){function n(e,t){te(this,n),this.container=e,this.viewer=t,this.object=null,this.cleanupTasks=[],this.scene=null}return A(n,[{key:"setScene",value:function(e){this.scene=e}},{key:"set",value:function(e){if(this.object!==e){this.object=e;var t,n=q(this.cleanupTasks);try{for(n.s();!(t=n.n()).done;)(0,t.value)()}catch(e){n.e(e)}finally{n.f()}this.cleanupTasks=[],this.container.empty(),e instanceof Zf?this.setPointCloud(e):e instanceof Gf||e instanceof ff||e instanceof hf?this.setMeasurement(e):e instanceof fa?this.setCamera(e):e instanceof zm?this.setAnnotation(e):e instanceof rv&&this.setCameraAnimation(e)}}},{key:"addVolatileListener",value:function(e,t,n){e.addEventListener(t,n),this.cleanupTasks.push(function(){e.removeEventListener(t,n)})}},{key:"setPointCloud",value:function(f){function e(e){s.html(m.size.toFixed(2)),o.slider({value:m.size})}function t(e){u.html(m.minSize.toFixed(2)),l.slider({value:m.minSize})}function n(){var e=Object.keys(hm)[m.shape];d.selectmenu().val(e).selectmenu("refresh")}function i(){var e=m.backfaceCulling;p.prop("checked",e)}function r(e){A.html(m.opacity.toFixed(2)),g.slider({value:m.opacity})}var a=this,m=f.material,v=$('\n\t\t\t<div class="scene_content selectable">\n\t\t\t\t<ul class="pv-menu-list">\n\n\t\t\t\t<li>\n\t\t\t\t<span data-i18n="appearance.point_size"></span>: <span id="lblPointSize"></span> <div id="sldPointSize"></div>\n\t\t\t\t</li>\n\t\t\t\t<li>\n\t\t\t\t<span data-i18n="appearance.min_point_size"></span>: <span id="lblMinPointSize"></span> <div id="sldMinPointSize"></div>\n\t\t\t\t</li>\n\n\t\t\t\t\x3c!-- SIZE TYPE --\x3e\n\t\t\t\t<li>\n\t\t\t\t\t<label for="optPointSizing" class="pv-select-label" data-i18n="appearance.point_size_type">Point Sizing </label>\n\t\t\t\t\t<select id="optPointSizing" name="optPointSizing">\n\t\t\t\t\t\t<option>FIXED</option>\n\t\t\t\t\t\t<option>ATTENUATED</option>\n\t\t\t\t\t\t<option>ADAPTIVE</option>\n\t\t\t\t\t</select>\n\t\t\t\t</li>\n\n\t\t\t\t\x3c!-- SHAPE --\x3e\n\t\t\t\t<li>\n\t\t\t\t\t<label for="optShape" class="pv-select-label" data-i18n="appearance.point_shape"></label><br>\n\t\t\t\t\t<select id="optShape" name="optShape">\n\t\t\t\t\t\t<option>SQUARE</option>\n\t\t\t\t\t\t<option>CIRCLE</option>\n\t\t\t\t\t\t<option>PARABOLOID</option>\n\t\t\t\t\t</select>\n\t\t\t\t</li>\n\n\t\t\t\t<li id="materials_backface_container">\n\t\t\t\t<label><input id="set_backface_culling" type="checkbox" /><span data-i18n="appearance.backface_culling"></span></label>\n\t\t\t\t</li>\n\t\t\t\t\n\t\t\t\t\x3c!-- OPACITY --\x3e\n\t\t\t\t<li><span data-i18n="appearance.point_opacity"></span>:<span id="lblOpacity"></span><div id="sldOpacity"></div></li>\n\n\t\t\t\t<div class="divider">\n\t\t\t\t\t<span>Attribute</span>\n\t\t\t\t</div>\n\n\t\t\t\t<li>\n\t\t\t\t\t<select id="optMaterial" name="optMaterial"></select>\n\t\t\t\t</li>\n\n\t\t\t\t<div id="materials.composite_weight_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Attribute Weights</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>RGB: <span id="lblWeightRGB"></span> <div id="sldWeightRGB"></div>\t</li>\n\t\t\t\t\t<li>Intensity: <span id="lblWeightIntensity"></span> <div id="sldWeightIntensity"></div>\t</li>\n\t\t\t\t\t<li>Elevation: <span id="lblWeightElevation"></span> <div id="sldWeightElevation"></div>\t</li>\n\t\t\t\t\t<li>Classification: <span id="lblWeightClassification"></span> <div id="sldWeightClassification"></div>\t</li>\n\t\t\t\t\t<li>Return Number: <span id="lblWeightReturnNumber"></span> <div id="sldWeightReturnNumber"></div>\t</li>\n\t\t\t\t\t<li>Source ID: <span id="lblWeightSourceID"></span> <div id="sldWeightSourceID"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.rgb_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>RGB</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>Gamma: <span id="lblRGBGamma"></span> <div id="sldRGBGamma"></div>\t</li>\n\t\t\t\t\t<li>Brightness: <span id="lblRGBBrightness"></span> <div id="sldRGBBrightness"></div>\t</li>\n\t\t\t\t\t<li>Contrast: <span id="lblRGBContrast"></span> <div id="sldRGBContrast"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.extra_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Extra Attribute</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li><span data-i18n="appearance.extra_range"></span>: <span id="lblExtraRange"></span> <div id="sldExtraRange"></div></li>\n\n\t\t\t\t\t<li>Gamma: <span id="lblExtraGamma"></span> <div id="sldExtraGamma"></div></li>\n\t\t\t\t\t<li>Brightness: <span id="lblExtraBrightness"></span> <div id="sldExtraBrightness"></div></li>\n\t\t\t\t\t<li>Contrast: <span id="lblExtraContrast"></span> <div id="sldExtraContrast"></div></li>\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t<div id="materials.matcap_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>MATCAP</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<div id="matcap_scheme_selection" style="display: flex; flex-wrap: wrap;"> </div>\n\t\t\t\t\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.color_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Color</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<input id="materials.color.picker" />\n\t\t\t\t</div>\n\n\n\t\t\t\t<div id="materials.elevation_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Elevation</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li><span data-i18n="appearance.elevation_range"></span>: <span id="lblHeightRange"></span> <div id="sldHeightRange"></div>\t</li>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<selectgroup id="gradient_repeat_option">\n\t\t\t\t\t\t\t<option id="gradient_repeat_clamp" value="CLAMP">Clamp</option>\n\t\t\t\t\t\t\t<option id="gradient_repeat_repeat" value="REPEAT">Repeat</option>\n\t\t\t\t\t\t\t<option id="gradient_repeat_mirrored_repeat" value="MIRRORED_REPEAT">Mirrored Repeat</option>\n\t\t\t\t\t\t</selectgroup>\n\t\t\t\t\t</li>\n\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<span>Gradient Scheme:</span>\n\t\t\t\t\t\t<div id="elevation_gradient_scheme_selection" style="display: flex; padding: 1em 0em">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.transition_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Transition</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>transition: <span id="lblTransition"></span> <div id="sldTransition"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.intensity_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Intensity</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<li>Range: <span id="lblIntensityRange"></span> <div id="sldIntensityRange"></div>\t</li>\n\t\t\t\t\t<li>Gamma: <span id="lblIntensityGamma"></span> <div id="sldIntensityGamma"></div>\t</li>\n\t\t\t\t\t<li>Brightness: <span id="lblIntensityBrightness"></span> <div id="sldIntensityBrightness"></div>\t</li>\n\t\t\t\t\t<li>Contrast: <span id="lblIntensityContrast"></span> <div id="sldIntensityContrast"></div>\t</li>\n\t\t\t\t</div>\n\n\t\t\t\t<div id="materials.gpstime_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>GPS Time</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t</div>\n\t\t\t\t\n\t\t\t\t<div id="materials.index_container">\n\t\t\t\t\t<div class="divider">\n\t\t\t\t\t\t<span>Indices</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t'),o=(v.i18n(),this.container.append(v),v.find("#sldPointSize")),s=v.find("#lblPointSize"),l=(o.slider({value:m.size,min:0,max:3,step:.01,slide:function(e,t){m.size=t.value}}),this.addVolatileListener(m,"point_size_changed",e),e(),v.find("#sldMinPointSize")),u=v.find("#lblMinPointSize"),c=(l.slider({value:m.size,min:0,max:3,step:.01,slide:function(e,t){m.minSize=t.value}}),this.addVolatileListener(m,"point_size_changed",t),t(),Object.keys(cm)[m.pointSizeType]),h=v.find("#optPointSizing"),d=(h.selectmenu(),h.val(c).selectmenu("refresh"),h.selectmenu({change:function(e,t){m.pointSizeType=cm[t.item.value]}}),v.find("#optShape")),p=(d.selectmenu({change:function(e,t){t=t.item.value;m.shape=hm[t]}}),this.addVolatileListener(m,"point_shape_changed",n),n(),v.find("#set_backface_culling")),c=(p.click(function(){m.backfaceCulling=p.prop("checked")}),this.addVolatileListener(m,"backface_changed",i),i(),$("#materials_backface_container")),h=(c.css("display","none"),f.pcoGeometry.pointAttributes),g=(!!h.hasNormals&&h.hasNormals()&&c.css("display","block"),v.find("#sldOpacity")),A=v.find("#lblOpacity");g.slider({value:m.opacity,min:0,max:1,step:.001,slide:function(e,t){m.opacity=t.value}});this.addVolatileListener(m,"opacity_changed",r),r();var y,h=f.pcoGeometry.pointAttributes.attributes,h=((c=[]).push.apply(c,J(h.map(function(e){return e.name}))),c.indexOf("intensity")),w=(0<=h&&c.splice(h+1,0,"intensity gradient"),c.push("elevation","color","matcap","indices","level of detail","composite"),["POSITION_CARTESIAN","position"]),c=c.filter(function(e){return!w.includes(e)}),b=v.find("#optMaterial"),x=q(c);try{for(x.s();!(y=x.n()).done;){var E=y.value,C=$("<option>".concat(E,"</option>"));b.append(C)}}catch(e){x.e(e)}finally{x.f()}function B(e,t){var n=b.selectmenu().val(),i=(m.activeAttributeName=n,f.getAttribute(n)),r=(!!(i="intensity gradient"===n?f.getAttribute("intensity"):i)&&["intensity","intensity gradient"].includes(i.name)?(f.material.intensityRange[0]===1/0&&(f.material.intensityRange=i.range),a=(r=N(i.range,2))[0],r=r[1],v.find("#sldIntensityRange").slider({range:!0,min:a,max:r,step:.01,values:[a,r],slide:function(e,t){var n=t.values[0],t=t.values[1];m.intensityRange=[n,t]}})):i&&(r=(a=N(i.range,2))[0],a=a[1],o=(o=m.getRange(i.name))||J(i.range),"number"==typeof r)&&"number"==typeof a&&v.find("#sldExtraRange").slider({range:!0,min:r,max:a,step:.01,values:o,slide:function(e,t){var t=N(t.values,2),n=t[0],t=t[1];m.setRange(i.name,[n,t])}}),$("#materials\\.composite_weight_container")),a=$("#materials\\.elevation_container"),o=$("#materials\\.rgb_container"),s=$("#materials\\.extra_container"),l=$("#materials\\.color_container"),u=$("#materials\\.intensity_container"),c=$("#materials\\.index_container"),h=$("#materials\\.transition_container"),d=$("#materials\\.gpstime_container"),p=$("#materials\\.matcap_container");c.css("display","none"),u.css("display","none"),a.css("display","none"),o.css("display","none"),s.css("display","none"),l.css("display","none"),r.css("display","none"),h.css("display","none"),p.css("display","none"),d.css("display","none"),"composite"===n?(r.css("display","block"),a.css("display","block"),o.css("display","block"),u.css("display","block")):"elevation"===n?a.css("display","block"):"RGB and Elevation"===n?(o.css("display","block"),a.css("display","block")):"rgba"===n?o.css("display","block"):"color"===n?l.css("display","block"):"intensity"===n||"intensity gradient"===n?u.css("display","block"):"indices"===n?c.css("display","block"):"matcap"===n?p.css("display","block"):"classification"!==n&&("gps-time"===n?d.css("display","block"):"number of returns"===n||"return number"===n||["source id","point source id"].includes(n)||s.css("display","block"))}function _(){b.val(m.activeAttributeName).selectmenu("refresh")}b.selectmenu({change:B});this.addVolatileListener(m,"point_color_type_changed",_),this.addVolatileListener(m,"active_attribute_changed",_),_(),B();var M,h=Object.keys(Potree.Gradients).map(function(e){return{name:e,values:tm[e]}}),T=v.find("#elevation_gradient_scheme_selection"),S=q(h);try{for(S.s();!(M=S.n()).done;)!function(){var e=M.value,t=$('\n\t\t\t\t\t<span style="flex-grow: 1;">\n\t\t\t\t\t</span>\n\t\t\t\t'),n=Potree.Utils.createSvgGradient(e.values);n.setAttributeNS(null,"class","button-icon"),t.append($(n)),t.click(function(){m.gradient=tm[e.name]}),T.append(t)}()}catch(e){S.e(e)}finally{S.f()}for(var c=[{name:"Normals",icon:"".concat(Potree.resourcePath,"/icons/matcap/check_normal+y.jpg")},{name:"Basic 1",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_1.jpg")},{name:"Basic 2",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_2.jpg")},{name:"Basic Dark",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_dark.jpg")},{name:"Basic Side",icon:"".concat(Potree.resourcePath,"/icons/matcap/basic_side.jpg")},{name:"Ceramic Dark",icon:"".concat(Potree.resourcePath,"/icons/matcap/ceramic_dark.jpg")},{name:"Ceramic Lightbulb",icon:"".concat(Potree.resourcePath,"/icons/matcap/ceramic_lightbulb.jpg")},{name:"Clay Brown",icon:"".concat(Potree.resourcePath,"/icons/matcap/clay_brown.jpg")},{name:"Clay Muddy",icon:"".concat(Potree.resourcePath,"/icons/matcap/clay_muddy.jpg")},{name:"Clay Studio",icon:"".concat(Potree.resourcePath,"/icons/matcap/clay_studio.jpg")},{name:"Resin",icon:"".concat(Potree.resourcePath,"/icons/matcap/resin.jpg")},{name:"Skin",icon:"".concat(Potree.resourcePath,"/icons/matcap/skin.jpg")},{name:"Jade",icon:"".concat(Potree.resourcePath,"/icons/matcap/jade.jpg")},{name:"Metal_ Anisotropic",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_anisotropic.jpg")},{name:"Metal Carpaint",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_carpaint.jpg")},{name:"Metal Lead",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_lead.jpg")},{name:"Metal Shiny",icon:"".concat(Potree.resourcePath,"/icons/matcap/metal_shiny.jpg")},{name:"Pearl",icon:"".concat(Potree.resourcePath,"/icons/matcap/pearl.jpg")},{name:"Toon",icon:"".concat(Potree.resourcePath,"/icons/matcap/toon.jpg")},{name:"Check Rim Light",icon:"".concat(Potree.resourcePath,"/icons/matcap/check_rim_light.jpg")},{name:"Check Rim Dark",icon:"".concat(Potree.resourcePath,"/icons/matcap/check_rim_dark.jpg")},{name:"Contours 1",icon:"".concat(Potree.resourcePath,"/icons/matcap/contours_1.jpg")},{name:"Contours 2",icon:"".concat(Potree.resourcePath,"/icons/matcap/contours_2.jpg")},{name:"Contours 3",icon:"".concat(Potree.resourcePath,"/icons/matcap/contours_3.jpg")},{name:"Reflection Check Horizontal",icon:"".concat(Potree.resourcePath,"/icons/matcap/reflection_check_horizontal.jpg")},{name:"Reflection Check Vertical",icon:"".concat(Potree.resourcePath,"/icons/matcap/reflection_check_vertical.jpg")}],F=v.find("#matcap_scheme_selection"),I=0,D=c;I<D.length;I++)!function(){var e=D[I],t=$('\n\t\t\t\t\t\t<img src="'.concat(e.icon,'" class="button-icon" style="width: 25%;" />\n\t\t\t\t'));t.click(function(){m.matcap=e.icon.substring(e.icon.lastIndexOf("/"))}),F.append(t)}();v.find("#sldRGBGamma").slider({value:m.rgbGamma,min:0,max:4,step:.01,slide:function(e,t){m.rgbGamma=t.value}}),v.find("#sldRGBContrast").slider({value:m.rgbContrast,min:-1,max:1,step:.01,slide:function(e,t){m.rgbContrast=t.value}}),v.find("#sldRGBBrightness").slider({value:m.rgbBrightness,min:-1,max:1,step:.01,slide:function(e,t){m.rgbBrightness=t.value}}),v.find("#sldExtraGamma").slider({value:m.extraGamma,min:0,max:4,step:.01,slide:function(e,t){m.extraGamma=t.value}}),v.find("#sldExtraBrightness").slider({value:m.extraBrightness,min:-1,max:1,step:.01,slide:function(e,t){m.extraBrightness=t.value}}),v.find("#sldExtraContrast").slider({value:m.extraContrast,min:-1,max:1,step:.01,slide:function(e,t){m.extraContrast=t.value}}),v.find("#sldHeightRange").slider({range:!0,min:0,max:1e3,step:.01,values:[0,1e3],slide:function(e,t){m.heightMin=t.values[0],m.heightMax=t.values[1]}}),v.find("#sldIntensityGamma").slider({value:m.intensityGamma,min:0,max:4,step:.01,slide:function(e,t){m.intensityGamma=t.value}}),v.find("#sldIntensityContrast").slider({value:m.intensityContrast,min:-1,max:1,step:.01,slide:function(e,t){m.intensityContrast=t.value}}),v.find("#sldIntensityBrightness").slider({value:m.intensityBrightness,min:-1,max:1,step:.01,slide:function(e,t){m.intensityBrightness=t.value}}),v.find("#sldWeightRGB").slider({value:m.weightRGB,min:0,max:1,step:.01,slide:function(e,t){m.weightRGB=t.value}}),v.find("#sldWeightIntensity").slider({value:m.weightIntensity,min:0,max:1,step:.01,slide:function(e,t){m.weightIntensity=t.value}}),v.find("#sldWeightElevation").slider({value:m.weightElevation,min:0,max:1,step:.01,slide:function(e,t){m.weightElevation=t.value}}),v.find("#sldWeightClassification").slider({value:m.weightClassification,min:0,max:1,step:.01,slide:function(e,t){m.weightClassification=t.value}}),v.find("#sldWeightReturnNumber").slider({value:m.weightReturnNumber,min:0,max:1,step:.01,slide:function(e,t){m.weightReturnNumber=t.value}}),v.find("#sldWeightSourceID").slider({value:m.weightSourceID,min:0,max:1,step:.01,slide:function(e,t){m.weightSourceID=t.value}}),v.find("#materials\\.color\\.picker").spectrum({flat:!0,showInput:!0,preferredFormat:"rgb",cancelText:"",chooseText:"Apply",color:"#".concat(m.color.getHexString()),move:function(e){e=e.toRgb(),e=(new Me).setRGB(e.r/255,e.g/255,e.b/255);m.color=e},change:function(e){e=e.toRgb(),e=(new Me).setRGB(e.r/255,e.g/255,e.b/255);m.color=e}}),this.addVolatileListener(m,"color_changed",function(){v.find("#materials\\.color\\.picker").spectrum("set","#".concat(m.color.getHexString()))});function P(){var e,t=f.getAttribute("position"),n=(t=t?(e=(n=t.range[0][2])-.2*(n=(t=t.range[1][2])-n),t+.2*n):(t=[f.pcoGeometry.tightBoundingBox,f.getBoundingBoxWorld()].find(function(e){return void 0!==e}),f.updateMatrixWorld(!0),n=(t=ie.computeTransformedBoundingBox(t,f.matrixWorld)).max.z-t.min.z,e=t.min.z-.2*n,t.max.z+.2*n),m.elevationRange);v.find("#lblHeightRange").html("".concat(n[0].toFixed(2)," to ").concat(n[1].toFixed(2))),v.find("#sldHeightRange").slider({min:e,max:t,values:n})}function k(){var e=m.activeAttributeName,t=f.getAttribute(e);null!=t&&"number"==typeof(e=null==(e=m.getRange(e))?t.range:e)[0]&&"number"==typeof e[1]&&(e?(t="".concat(e[0].toFixed(2)," to ").concat(e[1].toFixed(2)),v.find("#lblExtraRange").html(t)):v.find("could not deduce range"))}function L(){var e=m.intensityGamma,t=m.intensityContrast,n=m.intensityBrightness;O(),v.find("#lblIntensityGamma").html(e.toFixed(2)),v.find("#lblIntensityContrast").html(t.toFixed(2)),v.find("#lblIntensityBrightness").html(n.toFixed(2)),v.find("#sldIntensityGamma").slider({value:e}),v.find("#sldIntensityContrast").slider({value:t}),v.find("#sldIntensityBrightness").slider({value:n})}function R(){var e=m.rgbGamma,t=m.rgbContrast,n=m.rgbBrightness;v.find("#lblRGBGamma").html(e.toFixed(2)),v.find("#lblRGBContrast").html(t.toFixed(2)),v.find("#lblRGBBrightness").html(n.toFixed(2)),v.find("#sldRGBGamma").slider({value:e}),v.find("#sldRGBContrast").slider({value:t}),v.find("#sldRGBBrightness").slider({value:n})}var O=function(){var e=m.intensityRange;v.find("#lblIntensityRange").html("".concat(parseInt(e[0])," to ").concat(parseInt(e[1])))},h=(P(),v.find("#sldHeightRange").slider("option","min"),v.find("#sldHeightRange").slider("option","max"),v.find("#gradient_repeat_option")),c=(h.selectgroup({title:"Gradient"}),h.find("input").click(function(e){a.viewer.setElevationGradientRepeat(lm[e.target.value])}),Object.keys(lm).filter(function(e){return lm[e]===a.viewer.elevationGradientRepeat}));h.find("input[value=".concat(c,"]")).trigger("click");this.addVolatileListener(m,"material_property_changed",k),this.addVolatileListener(m,"material_property_changed",P),this.addVolatileListener(m,"material_property_changed",L),this.addVolatileListener(m,"material_property_changed",R),k(),P(),L(),R()}},{key:"setMeasurement",value:function(e){var t={DISTANCE:{panel:by},AREA:{panel:Ey},POINT:{panel:xy},ANGLE:{panel:Cy},HEIGHT:{panel:_y},PROFILE:{panel:Ty},VOLUME:{panel:My},CIRCLE:{panel:By},OTHER:{panel:xy}},n=new((n=e)instanceof Gf?!n.showDistances||n.showArea||n.showAngles?n.showDistances&&n.showArea&&!n.showAngles?t.AREA:1===n.maxMarkers?t.POINT:n.showDistances||n.showArea||!n.showAngles?n.showHeight?t.HEIGHT:n.showCircle?t.CIRCLE:t.OTHER:t.ANGLE:t.DISTANCE:n instanceof ff?t.PROFILE:n instanceof hf?t.VOLUME:void 0).panel(this.viewer,e,this);this.container.append(n.elContent)}},{key:"setCamera",value:function(e){var t=new Sy(this.viewer,this);this.container.append(t.elContent)}},{key:"setAnnotation",value:function(e){e=new Iy(this.viewer,this,e);this.container.append(e.elContent)}},{key:"setCameraAnimation",value:function(e){e=new Dy(this.viewer,this,e);this.container.append(e.elContent)}}]),n}(),ky=function(){y(a,zn);var r=C(a);function a(e,t){function n(){i.update()}var i;te(this,a),(i=r.call(this)).position=e,i.color="#"+new Me(t).getHexString(),i.svg=i.create(),i.visible_=!0;return viewer.addEventListener("camera_changed",n),i.addEventListener("dispose",function(){viewer.removeEventListener("camera_changed",n)}),i}return A(a,[{key:"create",value:function(){var o=this,e="http://www.w3.org/2000/svg",t=document.createElementNS(e,"svg"),e=(t.setAttribute("width","2em"),t.setAttribute("height","2em"),t.setAttribute("position","absolute"),t.style.left="50px",t.style.top="50px",t.style.position="absolute",t.style.zIndex="10000",t.style.cursor="grab",t.style.transform="translate(-50%,-50%)",document.createElementNS(e,"circle"));e.setAttributeNS(null,"cx","1em"),e.setAttributeNS(null,"cy","1em"),e.setAttributeNS(null,"r","0.5em"),e.setAttributeNS(null,"style","fill: "+this.color+"; stroke: black; stroke-width: 0.2em;"),t.appendChild(e);function n(e){o.selectedElement=t,document.addEventListener("mousemove",r)}function i(e){o.selectedElement=null,document.removeEventListener("mousemove",r)}viewer.renderer.domElement.parentElement.appendChild(t);var r=function(e){var t,n,i,r,a;o.selectedElement&&(e.preventDefault(),n=viewer.renderer.domElement.getBoundingClientRect(),a=e.clientX-n.x,e=e.clientY-n.y,t=(n=viewer.renderer.getSize(new Le)).width,n=n.height,i=viewer.scene.getActiveCamera(),(r=o.position.clone().project(i)).x=(a/t-.5)/.5,r.y=(-(e-n)/n-.5)/.5,a=r.clone().unproject(i),o.position.set(a.x,a.y,a.z),o.update(),o.dispatchEvent({type:"dragged",position:o.position}))};return t.addEventListener("mousedown",n),t.addEventListener("mouseup",i),t.style.display=this.visible?"":"none",this.addEventListener("dispose",function(){t.removeEventListener("mousedown",n),t.removeEventListener("mouseup",i)}),t}},{key:"visible",get:function(){return this.visible_},set:function(e){(this.visible_=e)?this.update():this.svg.style.display="none"}},{key:"update",value:function(){if(this.visible){var e=viewer.scene.getActiveCamera(),e=Potree.Utils.getPos2d(this.position,e,viewer.renderArea,viewer.mainViewport);if(!e.trueSide)return this.svg.style.display="none";this.svg.style.left=e.posInViewport.x,this.svg.style.top=e.posInViewport.y,this.svg.style.display=""}}},{key:"dispose",value:function(){this.svg.remove(),this.dispatchEvent("dispose")}}]),a}(),Ly=(new Ba(1,1),function(){y(r,Jm);var i=C(r);function r(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return te(this,r),n.sizeInfo={width2d:60},(t=i.call(this,n)).position.copy(e),t.dragStyle=n.dragStyle||"default",t.bindEvent(),t}return A(r,[{key:"bindEvent",value:function(){var r,a,o=this;this.addEventListener("drag",function(e){var t,n,i=viewer.scene.getActiveCamera();r?(n=(new Le).subVectors(e.pointer,a),(t=r.clone()).x+=n.x,t.y+=n.y,n=t.clone().unproject(i),o.position.set(n.x,n.y,n.z)):(r=o.position.clone().project(i),a=e.pointer.clone()),o.update(),o.dispatchEvent({type:"dragged",position:o.position})}),this.addEventListener("drop",function(e){a=r=null}),this.addEventListener("mouseover",function(e){viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),this.addEventListener("mouseleave",function(e){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})})}}]),r}()),Ry=new Z(new zu(.08,.08,3,2),new L({color:"#f88"})),Fy=function(){y(u,K);var l=C(u);function u(e,t,n,i){var r,a=4<arguments.length&&void 0!==arguments[4]?arguments[4]:{};te(this,u),(r=l.call(this)).curve=new Jc(e,!1,"centripetal"),r.name=i||"curveNode",r.handleMat=a.handleMat,r.lineMat=t,r.createPath(),r.color=n,r.handles=[],r.wholeLength=0,r.viewports=a.viewports||[viewer.mainViewport];for(var o=0,s=r.points.length;o<s;o++)r.handles.push(r.createHandle(r.points[o]));return r.visible_=!0,Potree.settings.isTest&&(r.spheres=new K,r.add(r.spheres)),r.updatePath(),r}return A(u,[{key:"addPoint",value:function(e,t,n){var i=this.points.length,r=(null==t&&(t=i),this.createHandle(e));this.handles=[].concat(J(this.handles.slice(0,t)),[r],J(this.handles.slice(t,i))),this.points=[].concat(J(this.points.slice(0,t)),[e],J(this.points.slice(t,i))),n&&(this.updatePath(),this.updateHandle(t))}},{key:"removePoint",value:function(e){this.handles[e].dispose(),this.handles.splice(e,1),this.points.splice(e,1),this.updatePath()}},{key:"createPath",value:function(){var e=Fv.createFatLine([],this.lineMat);this.line=e,this.add(e)}},{key:"updatePath",value:function(){var n=this;this.curve.needsUpdate=!0;var e=this.points.length;if(this.wholeLength=this.points.reduce(function(e,t,n,i){return 0==n?0:e+t.distanceTo(i[n-1])},0),1<e){var t=Be.clamp(Math.ceil(5*this.wholeLength),30,500),t=this.curve.getSpacedPoints(t);if(this.needsPercent){this.pointsPercent=[0];for(var i=[0],r=0,a=t[0],o=1;o<e;o++){var s=this.points[o];r+=s.distanceTo(a),a=s,i.push(r)}for(var l=1;l<e;l++)this.pointsPercent.push(0==r?l/e:i[l]/r)}Potree.settings.isTest&&(this.spheres.children.forEach(function(e){return e.visible=!1}),t.forEach(function(e,t){t=n.spheres.children[t];t||(t=Ry.clone(),n.spheres.add(t)),t.position.copy(e),t.visible=!0}))}else t=[];Fv.updateLine(this.line,t),this.dispatchEvent("updatePath")}},{key:"createHandle",value:function(e){var n,i=this;return this.handleMat?(n=new Ly(e,{mat:this.handleMat,viewports:this.viewports}),this.add(n)):n=new ky(e,this.color),n.visible=this.visible,n.addEventListener("dragged",function(e){var t=i.handles.indexOf(n);i.points[t].copy(e.position),i.updatePath(),i.dispatchEvent({type:"dragCurvePoint",index:t})}),n}},{key:"updateHandle",value:function(e){this.visible&&this.handles[e].update()}},{key:"updateHandles",value:function(){var n=this;this.handles.forEach(function(e,t){n.updateHandle(t)})}},{key:"update",value:function(){this.updateHandles(),this.updatePath()}},{key:"visible",get:function(){return this.visible_},set:function(t){t!=this.visible_&&(this.visible_=t,this.visible=t,this.handles)&&(this.handles.forEach(function(e){return e.visible=t}),t)&&this.updateHandles()}},{key:"points",get:function(){return this.curve.points},set:function(e){this.curve.points=e}},{key:"getPointAt",value:function(e){return this.curve.getPointAt(e)}},{key:"getSpacedPoints",value:function(e){return this.curve.getSpacedPoints(e)}},{key:"dispose",value:function(){this.parent&&this.parent.remove(this),this.handles.forEach(function(e){return e.dispose()}),this.line.geometry&&this.line.geometry.dispose()}}]),u}(),Oy="red",Ny="blue",Gy=function(){y(c,zn);var n=C(c);function c(e){var t;return te(this,c),(t=n.call(this)).viewer=e,t.selectedElement=null,t.uuid=Be.generateUUID(),t.node=new K,t.node.name="camera animation",t.viewer.scene.scene.add(t.node),t.frustum=t.createFrustum(),t.node.add(t.frustum),t.name="Camera Animation",t.curveType="centripetal",t.visible=!0,t.targets=[],t.createPath(),t.duration=5,t.percent=0,t.currentIndex=0,t.durations=[],t.quaternions=[],Potree.settings.isTest||t.setVisible(!1),t.addEventListener("dispose",function(){t.dispose()}),t.targetLines=new K,t.node.add(t.targetLines),t}return A(c,[{key:"createControlPoint",value:function(e,t){var n=this,i=this.posCurve.points.length,r=new Re,a=new Re,o=(null==e&&(e=i),t?(r.copy(t.position),a.copy(t.target)):2<=i&&0===e?(o=(new Re).subVectors(this.posCurve.points[0],this.posCurve.points[1]),r.copy(this.posCurve.points[0]).add(o),(new Re).subVectors(this.targets[0].position,this.targets[1].position),a.copy(this.targets[0].position).add(o)):2<=i&&e===i?(o=(new Re).subVectors(this.posCurve.points[i-1],this.posCurve.points[i-2]),r.copy(this.posCurve.points[i-2]).add(o),(new Re).subVectors(this.targets[i-1].position,this.targets[i-2].position),a.copy(this.targets[i-2].position).add(o)):2<=i&&(r.copy(this.posCurve.points[e-1].clone().add(this.posCurve.points[e]).multiplyScalar(.5)),a.copy(this.targets[i-1].position.clone().add(this.targets[i]).multiplyScalar(.5))),this.posCurve.addPoint(r,e),new ky(a,Ny)),o=(o.visible=this.visible,this.targets=[].concat(J(this.targets.slice(0,e)),[o],J(this.targets.slice(e,i))),this.useDurSlice&&(this.durations=[].concat(J(this.durations.slice(0,e)),[t.duration],J(this.durations.slice(e,i)))),this.dispatchEvent({type:"controlpoint_added",index:e}),Fv.createLine([r,a],{mat:Z0("aimAtTarget")}));this.targetLines.children=[].concat(J(this.targetLines.children.slice(0,e)),[o],J(this.targetLines.children.slice(e,i))),this.targets[e].addEventListener("dragged",function(e){n.updatePathCallback(),n.dragPointCallback(e)})}},{key:"dragPointCallback",value:function(e){var t=e.index;null==e.index&&(t=this.targets.indexOf(e.target)),Fv.moveLine(this.targetLines.children[t],[this.posCurve.points[t],this.targets[t].position]),this.updateFrustum()}},{key:"updatePathCallback",value:function(){this.quaternions=[];for(var e=this.posCurve.points.length,t=0;t<e;t++){var n=ee.getQuaFromPosAim(this.posCurve.points[t],this.targets[t].position);this.quaternions.push(n)}this.reMapCurvePercent()}},{key:"removeControlPoint",value:function(e){this.posCurve.removePoint(e),this.targets[e].dispose(),this.targets.splice(e,1),this.dispatchEvent({type:"controlpoint_removed",index:e}),this.targetLines.remove(this.targetLines.children[e]),this.useDurSlice&&this.durations.splice(e,1)}},{key:"createPath",value:function(){this.posCurve=new Fy([],Z0("position"),Oy,"posCurve"),this.posCurve.needsPercent=!0,this.node.add(this.posCurve),this.posCurve.addEventListener("dragCurvePoint",this.dragPointCallback.bind(this)),this.posCurve.addEventListener("updatePath",this.updatePathCallback.bind(this))}},{key:"createFrustum",value:function(){var e=[new Re(0,0,0),new Re(-.3,-.3,1),new Re(0,0,0),new Re(.3,-.3,1),new Re(0,0,0),new Re(.3,.3,1),new Re(0,0,0),new Re(-.3,.3,1),new Re(-.3,-.3,1),new Re(.3,-.3,1),new Re(.3,-.3,1),new Re(.3,.3,1),new Re(.3,.3,1),new Re(-.3,.3,1),new Re(-.3,.3,1),new Re(-.3,-.3,1)],e=(e.forEach(function(e){return e.z*=-1}),Fv.createFatLine(e,{material:Z0("frustum")}));return e.visible=!1,e}},{key:"reMapCurvePercent",value:function(){var e=this.posCurve.points.length;if(e<2)return this.newPointsPercents=[];var t=[0];if(this.useDurSlice){for(var n=[0],i=0,r=0;r<e-1;r++){var a=this.durations[r];n.push(i+=a)}for(var o=1;o<e;o++)t.push(0==i?o/e:n[o]/i)}else{for(var s=this.duration/e,l=Math.min(.8,s),u=Be.clamp(.8*Math.PI,l,s),c=this.posCurve.pointsPercent,h=1;h<e;h++){var d,p=(c[h]-c[h-1])*this.duration,f=l;p<u&&(d=this.quaternions[h].angleTo(this.quaternions[h-1]),f=Be.clamp(.8*d,l,s)),p=Math.max(p,f),d=t[h-1]+p/this.duration,t.push(d)}var m,v=t[e-1];ee.closeTo(v,1)||(m=1/v,t=t.map(function(e){return e*m}))}this.newPointsPercents=t}},{key:"at",value:function(e,t,n){var i,r,a,o=e=Be.clamp(e,0,1),e=(o<1?(this.currentIndex=this.newPointsPercents.findIndex(function(e){return o<e})-1,e=this.newPointsPercents[this.currentIndex],s=this.newPointsPercents[this.currentIndex+1],s=(o-e)/(s-e),e=this.posCurve.pointsPercent[this.currentIndex],o=e+(this.posCurve.pointsPercent[this.currentIndex+1]-e)*s,e=this.quaternions[this.currentIndex+1],i=this.quaternions[this.currentIndex],i=(new X).copy(i),_g(i,e)(s)):(this.currentIndex=this.posCurve.points.length-1,i=ee.getQuaFromPosAim(this.posCurve.points[this.currentIndex],this.targets[this.currentIndex].position)),this.posCurve.getPointAt(o)),s=(null!=t?(a=(Potree.settings.tourTestCameraMove?(r=this.frustum.quaternion.clone(),this.frustum):(r=(s=viewer.scene.getActiveCamera()).quaternion.clone(),s)).position.clone(),n=n||1/Potree.settings.cameraAniSmoothRatio,n=Be.clamp(n*=60*t,0,1),_g(r,i)(n),Bg(a,e)(n)):(r=i,a=e),(new ki).setFromQuaternion(r));return{position:a,rotation:s}}},{key:"set",value:function(e){this.percent=e}},{key:"setVisible",value:function(t){this.node.visible=t,this.posCurve.visible=t,this.targets.forEach(function(e){return e.visible=t}),this.visible=t}},{key:"setDuration",value:function(e){e!=this.duration&&(this.duration=e,this.quaternions.length==this.posCurve.points.length)&&this.reMapCurvePercent()}},{key:"getDuration",value:function(e){return this.duration}},{key:"play",value:function(){var i=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if(this.onUpdate)return console.error("已经开始播放");var r=0,a=0,o=(null!=e.percent?r=e.percent:e.index&&(a=index,r=this.posCurve.pointsPercent[index]),this.duration);this.originalyVisible=this.visible,Potree.settings.tourTestCameraMove||this.setVisible(!1);var s,l=0,u=Potree.settings.cameraAniSmoothRatio/60*3,c=0;this.onUpdate=function(e){var t,n;i.posCurve.points.length<2?(1==i.posCurve.points.length&&(viewer.scene.view.position.copy(i.posCurve.points[0]),viewer.scene.view.rotation=(new ki).setFromQuaternion(i.quaternions[0])),i.pause()):(s?t=(performance.now()-s)/1e3/o+r:(t=0,n=.2,.25<(l+=e.delta)&&(s=performance.now())),i.set(t),n=i.at(t,e.delta,n),a!=i.currentIndex&&(a=i.currentIndex,console.log("updateCurrentIndex",a),i.dispatchEvent({type:"updateCurrentIndex",currentIndex:a})),Potree.settings.tourTestCameraMove||(viewer.scene.view.position.copy(n.position),viewer.scene.view.rotation=n.rotation),i.updateFrustum(n),1<=t&&(u<c?i.pause():c+=e.delta))},this.viewer.addEventListener("update",this.onUpdate)}},{key:"pause",value:function(){this.setVisible(this.originalyVisible),this.viewer.removeEventListener("update",this.onUpdate),this.dispatchEvent("playDone"),this.onUpdate=null}},{key:"updateFrustum",value:function(e){var t=this.frustum;1<this.posCurve.points.length?(t.visible=!0,e=e||this.at(this.percent),t.position.copy(e.position),t.rotation.copy(e.rotation)):t.visible=!1}},{key:"changeCallback",value:function(){this.posCurve.update(),this.targets.forEach(function(e){return e.update()}),this.updateFrustum()}},{key:"dispose",value:function(){this.posCurve.dispose(),this.targets.forEach(function(e){return e.dispose()}),this.durations=[],this.node.parent.remove(this.node)}}],[{key:"defaultFromView",value:function(e){for(var t=new c(e),n=e.scene.getActiveCamera(),e=e.scene.view.getPivot(),i=new Re(.3*n.position.x+.7*e.x,.3*n.position.y+.7*e.y,.3*n.position.z+.7*e.z),r=new Re(.05*n.position.x+.95*e.x,.05*n.position.y+.95*e.y,.05*n.position.z+.95*e.z),a=ie.computeAzimuth(n.position,e),o=0;o<5;o++){var s=1.5*Math.PI*(o/5)+a,l=2*Math.cos(s),s=2*Math.sin(s),u=new Re(i.x+l,i.y+s,i.z),l=new Re(r.x+.1*l,r.y+.1*s,r.z);t.createControlPoint(null,{position:u,target:l})}return t.changeCallback(),t}}]),c}();function Uy(e){for(var e=e.toFixed(3),t=(e=(e+="").split("."))[0],e=1<e.length?"."+e[1]:"",n=/(\d+)(\d{3})/;n.test(t);)t=t.replace(n,"$1,$2");return t+e}var zy=function(){function i(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=(te(this,i),this.element=document.createElement("div"),this.labels=[],this.sliders=[],this.range=null!=e.range?e.range:[0,1],this.slide=null!=e.slide?e.slide:null,this.step=null!=e.step?e.step:1e-4,null!=e.levels?e.levels:1),n=0;n<t;n++)this.addLevel()}return A(i,[{key:"setRange",value:function(e){this.range=J(e);var t=this.sliders[0];$(t).slider({min:e[0],max:e[1]});for(var n=1;n<this.sliders.length;n++){var i=this.sliders[n-1],r=this.sliders[n],i=J($(i).slider("option","values"));$(r).slider({min:i[0],max:i[1]})}this.updateLabels()}},{key:"setValues",value:function(e){var t,n=q(this.sliders);try{for(n.s();!(t=n.n()).done;){var i=t.value;$(i).slider({values:J(e)})}}catch(e){n.e(e)}finally{n.f()}this.updateLabels()}},{key:"addLevel",value:function(){var e,o=this,t=document.createElement("li"),n=document.createTextNode("Range: "),i=document.createElement("span"),r=document.createElement("div"),s=this.sliders.length,a=0,l=0;l=(0===this.sliders.length?(a=(e=N(this.range,2))[0],e):(e=this.sliders[this.sliders.length-1],a=(e=N($(e).slider("option","values"),2))[0],e))[1],$(r).slider({range:!0,min:a,max:l,step:this.step,values:[a,l],slide:function(e,t){for(var n,i=o.sliders.length,r=s+1;r<i;r++){var a=o.sliders[r];$(a).slider({range:!0,min:t.values[0],max:t.values[1],values:J(t.values)})}o.slide&&(n=J(t.values),o.slide({target:o,range:o.range,values:n})),o.updateLabels()}}),t.append(n,i,r),this.sliders.push(r),this.labels.push(i),this.element.append(t),this.updateLabels()}},{key:"removeLevel",value:function(){}},{key:"updateSliders",value:function(){}},{key:"updateLabels",value:function(){for(var e=this.sliders.length,t=0;t<e;t++){var n=this.sliders[t],i=this.labels[t],n=N($(n).slider("option","values"),2),r=n[0],n=n[1],r=Uy(r),n=Uy(n),r="".concat(r," to ").concat(n);i.innerHTML=r}}}]),i}(),Hy=function(){y(i,Yf);var e=C(i);function i(t){var n;te(this,i),(n=e.call(this)).viewer=t,n.renderer=t.renderer,n.originalCam=t.scene.getActiveCamera(),n.shearCam=t.scene.getActiveCamera().clone(),n.shearCam.rotation.set(n.originalCam.rotation.toArray()),n.shearCam.updateProjectionMatrix(),n.shearCam.updateProjectionMatrix=function(){return n.shearCam.projectionMatrix},n.image=null,n.fadeFactor=20,n.fovDelta=0,n.fovMin=.1,n.fovMax=120,n.shear=[0,0],n.elUp=$('<input type="button" value="🡅" style="position: absolute; top: 10px; left: calc(50%); z-index: 1000" />'),n.elRight=$('<input type="button" value="🡆" style="position: absolute; top: calc(50%); right: 10px; z-index: 1000" />'),n.elDown=$('<input type="button" value="🡇" style="position: absolute; bottom: 10px; left: calc(50%); z-index: 1000" />'),n.elLeft=$('<input type="button" value="🡄" style="position: absolute; top: calc(50%); left: 10px; z-index: 1000" />'),n.elExit=$('<input type="button" value="Back to 3D view" style="position: absolute; bottom: 10px; right: 10px; z-index: 1000" />'),n.elExit.click(function(){n.release()}),n.elUp.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[1]+=.1*e}),n.elRight.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[0]+=.1*e}),n.elDown.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[1]-=.1*e}),n.elLeft.click(function(){var e=t.getFOV(),e=Math.tan(Be.degToRad(e/2));n.shear[0]-=.1*e}),n.scene=null,n.sceneControls=new Ps;return n.addEventListener("mousewheel",function(e){n.fovDelta+=-e.delta}),n}return A(i,[{key:"hasSomethingCaptured",value:function(){return null!==this.image}},{key:"capture",value:function(e){this.hasSomethingCaptured()||(this.image=e,this.originalFOV=this.viewer.getFOV(),this.originalControls=this.viewer.getControls(),this.viewer.setControls(this),this.viewer.scene.overrideCamera=this.shearCam,e=this.viewer.renderer.domElement,e=$(e.parentElement),this.shear=[0,0],e.append(this.elUp),e.append(this.elRight),e.append(this.elDown),e.append(this.elLeft),e.append(this.elExit))}},{key:"release",value:function(){this.image=null,this.viewer.scene.overrideCamera=null,this.elUp.detach(),this.elRight.detach(),this.elDown.detach(),this.elLeft.detach(),this.elExit.detach(),this.viewer.setFOV(this.originalFOV),this.viewer.setControls(this.originalControls)}},{key:"setScene",value:function(e){this.scene=e}},{key:"update",value:function(e){var t=this.viewer.getFOV(),n=t*(1+ +this.fovDelta/10),n=Math.max(this.fovMin,n),t=(n=Math.min(this.fovMax,n))/t,i=this.viewer.inputHandler.mouse,r=this.viewer.renderer.getSize(new Le),i=[i.x/r.x,(r.y-i.y)/r.y],r=r.x/r.y,a=2*Math.tan(Be.degToRad(n/2)),r=r*a,r=[this.shear[0]-.5*r,this.shear[0]+.5*r],a=[this.shear[1]-.5*a,this.shear[1]+.5*a],t=1-t,r=[(1-t)*this.shear[0]+t*((1-i[0])*r[0]+i[0]*r[1]),(1-t)*this.shear[1]+t*((1-i[1])*a[0]+i[1]*a[1])],t=(this.shear=r,this.viewer.setFOV(n),this.originalCam),i=this.shearCam,r=(t.fov=n,t.updateMatrixWorld(),t.updateProjectionMatrix(),i.copy(t),(a=i.rotation).set.apply(a,J(t.rotation.toArray())),i.updateMatrixWorld(),i.projectionMatrix.copy(t.projectionMatrix),N(this.shear,2)),n=r[0],a=r[1],t=(new _e).set(1,0,n,0,0,1,a,0,0,0,1,0,0,0,0,1),r=i.projectionMatrix;r.multiply(t),i.projectionMatrixInverse.copy(r).invert(),i.projectionMatrix.elements.reduce(function(e,t){return e+t},0);this.fovDelta*=0}}]),i}();var Qy,Vy,jy,Wy,Jy,qy,Xy,Yy,Ky,Zy,$y,ew,tw,nw,iw=new Ru(1,1),rw=new Hl,aw=(rw.vertices.push(new Re(-.5,-.5,0),new Re(.5,-.5,0),new Re(.5,.5,0),new Re(-.5,.5,0),new Re(-.5,-.5,0)),function(){function n(e){te(this,n),this.id=e,this.fov=1,this.position=new Re,this.rotation=new Re,this.width=0,this.height=0,this.fov=1;(e=new pa({uniforms:{tColor:{value:new Xn},uNear:{value:0},uOpacity:{value:1}},vertexShader:"\n\tuniform float uNear;\n\tvarying vec2 vUV;\n\tvarying vec4 vDebug;\n\t\n\tvoid main(){\n\t\tvDebug = vec4(0.0, 1.0, 0.0, 1.0);\n\t\tvec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\n\t\t// make sure that this mesh is at least in front of the near plane\n\t\tmodelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear;\n\t\tgl_Position = projectionMatrix * modelViewPosition;\n\t\tvUV = uv;\n\t}\n\t",fragmentShader:"\n\tuniform sampler2D tColor;\n\tuniform float uOpacity;\n\tvarying vec2 vUV;\n\tvarying vec4 vDebug;\n\tvoid main(){\n\t\tvec4 color = texture2D(tColor, vUV);\n\t\tgl_FragColor = color;\n\t\tgl_FragColor.a = uOpacity;\n\t}\n\t",side:ve})).side=ve;var t=new vl({color:65280});this.mesh=new Z(iw,e),this.line=new xl(rw,t),this.texture=null,this.mesh.orientedImage=this}return A(n,[{key:"set",value:function(e,t,n,i){var t=t.map(Be.degToRad),r=((r=this.position).set.apply(r,J(e)),(r=this.mesh.position).set.apply(r,J(e)),(r=this.rotation).set.apply(r,J(t)),(e=this.mesh.rotation).set.apply(e,J(t)),N(n,2));this.width=r[0],this.height=r[1],this.mesh.scale.set(this.width/this.height,1,1),this.fov=i,this.updateTransform()}},{key:"updateTransform",value:function(){var e=this.mesh,t=this.line,n=this.fov,i=(e.updateMatrixWorld(),e.getWorldDirection()),n=Be.degToRad(n/2),n=-.5/Math.tan(n),i=i.clone().multiplyScalar(n);e.position.add(i),t.position.copy(e.position),t.scale.copy(e.scale),t.rotation.copy(e.rotation)}}]),n}()),ow=function(){y(n,Yf);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).node=null,e.cameraParams=null,e.imageParams=null,e.images=null,e._visible=!0,e}return A(n,[{key:"visible",get:function(){return this._visible},set:function(e){if(this._visible!==e){var t,n=q(this.images);try{for(n.s();!(t=n.n()).done;){var i=t.value;i.mesh.visible=e,i.line.visible=e}}catch(e){n.e(e)}finally{n.f()}this._visible=e,this.dispatchEvent({type:"visibility_changed",images:this})}}}]),n}(),Tp=function(){function D(){te(this,D)}var i,t,n;return A(D,null,[{key:"loadCameraParams",value:(n=d(V().mark(function e(t){var n,i,r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:return n=e.sent,e.next=5,n.text();case 5:return n=e.sent,r=new DOMParser,r=r.parseFromString(n,"application/xml"),o=parseInt(r.getElementsByTagName("width")[0].textContent),i=parseInt(r.getElementsByTagName("height")[0].textContent),r=parseFloat(r.getElementsByTagName("f")[0].textContent),a=i/2/r,a=2*Be.radToDeg(Math.atan(a)),o={path:t,width:o,height:i,f:r,fov:a},e.abrupt("return",o);case 15:case"end":return e.stop()}},e)})),function(e){return n.apply(this,arguments)})},{key:"loadImageParams",value:(t=d(V().mark(function e(t){var n,i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:if((n=e.sent).ok){e.next=6;break}return console.error("failed to load ".concat(t)),e.abrupt("return");case 6:return e.next=8,n.text();case 8:i=e.sent,i=i.split(/\r?\n/),r=[],a=1;case 12:if(a<i.length){if((o=i[a]).startsWith("#"))return e.abrupt("continue",21);e.next=16}else e.next=24;break;case 16:if((s=o.split(/\s+/)).length<6)return e.abrupt("continue",21);e.next=19;break;case 19:l={id:s[0],x:Number.parseFloat(s[1]),y:Number.parseFloat(s[2]),z:Number.parseFloat(s[3]),omega:Number.parseFloat(s[4]),phi:Number.parseFloat(s[5]),kappa:Number.parseFloat(s[6])},r.push(l);case 21:a++,e.next=12;break;case 24:return e.abrupt("return",r);case 25:case"end":return e.stop()}},e)})),function(e){return t.apply(this,arguments)})},{key:"load",value:(i=d(V().mark(function e(t,a,u){var n,o,i,s,l,r,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B,_,M,T,S,I;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=performance.now(),e.next=3,Promise.all([D.loadCameraParams(t),D.loadImageParams(a)]);case 3:i=e.sent,i=N(i,2),o=i[0],i=i[1],s=new Hy(u),l=new gd,I=performance.now(),console.log(I-n),r=o.width,c=o.height,h=[],(d=new K).name="oriented_images",p=q(i);try{for(p.s();!(f=p.n()).done;)m=f.value,v=m.x,g=m.y,A=m.z,y=m.omega,w=m.phi,b=m.kappa,x=new aw(m.id),E=[v,g,A],C=[y,w,b],B=[r,c],x.set(E,C,B,o.fov),d.add(x.mesh),d.add(x.line),h.push(x)}catch(e){p.e(e)}finally{p.f()}return M=_=null,I=function(e){performance.now();_&&_.line.material.color.setRGB(0,1,0),e.preventDefault();var t,n,i=u.renderer.domElement.getBoundingClientRect(),e=[e.clientX,e.clientY],e=[(e[0]-i.left)/i.width,(e[1]-i.top)/i.height],i=re(Le,e),e=u.scene.getActiveCamera(),i=new Re(2*i.x-1,-2*i.y+1),r=h.map(function(e){return e.mesh}),i=(l.setFromCamera(i,e),l.intersectObjects(r)),e=!1,i=(_=0<i.length?((r=i[0].object.orientedImage).line.material.color.setRGB(1,0,0),e=_!==r,r):null,null===M&&null!==_);null===M||null!==_&&!e||(u.scene.removePolygonClipVolume(M),M=null),(i||e)&&(r=_,(e=new ma(i=o.fov,o.width/o.height,1,1e6)).rotation.order=u.scene.getActiveCamera().rotation.order,e.rotation.copy(r.mesh.rotation),t=(r=r.mesh).getWorldDirection(),r=r.position,i=Be.degToRad(i/2),i=.5/Math.tan(i),t=r.clone().add(t.clone().multiplyScalar(i)),i=r.clone().sub(t),(new Re).addVectors(t,i.clone().multiplyScalar(u.getMoveSpeed())),e.position.copy(t),r=new Potree.PolygonClipVolume(e),i=new Z,t=new Z,e=new Z,n=new Z,i.position.set(-1,-1,0),t.position.set(1,-1,0),e.position.set(1,1,0),n.position.set(-1,1,0),r.markers.push(i,t,e,n),r.initialized=!0,u.scene.addPolygonClipVolume(r),M=r),performance.now()},T=function(e){console.log("move to image "+e.id);var t,n=e.mesh,i=e.position.clone(),r=n.position.clone();u.scene.view.setView(i,r,500,function(){s.capture(e)}),null===e.texture&&(t=e,i="".concat(Potree.resourcePath,"/images/loading.jpg"),(new Nc).load(i,function(e){null===t.texture&&(t.texture=e,t.mesh.material.uniforms.tColor.value=e,n.material.needsUpdate=!0)}),r="".concat(a,"/../").concat(t.id),(new Nc).load(r,function(e){t.texture=e,t.mesh.material.uniforms.tColor.value=e,n.material.needsUpdate=!0}))},S=function(e){s.hasSomethingCaptured()||_&&T(_)},u.renderer.domElement.addEventListener("mousemove",I,!1),u.renderer.domElement.addEventListener("mousedown",S,!1),u.addEventListener("update",function(){var e,t=q(h);try{for(t.s();!(e=t.n()).done;){var n=e.value,i=(n.mesh.matrixWorld,n.width/n.height),r=u.scene.getActiveCamera(),a=n.mesh.getWorldPosition(new Re),o=r.position.distanceTo(a),s=Be.degToRad(1),l=o*Math.tan(s),l=Math.max(l,1);n.mesh.scale.set(l*i,l,1),n.line.scale.set(l*i,l,1),n.mesh.material.uniforms.uNear.value=r.near}}catch(e){t.e(e)}finally{t.f()}}),(I=new ow).node=d,I.cameraParamsPath=t,I.imageParamsPath=a,I.cameraParams=o,I.imageParams=i,I.images=h,Potree.debug.moveToImage=T,e.abrupt("return",I);case 34:case"end":return e.stop()}},e)})),function(e,t,n){return i.apply(this,arguments)})}]),D}(),sw={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},lw={isSpaceSeparator:function(e){return"string"==typeof e&&sw.Space_Separator.test(e)},isIdStartChar:function(e){return"string"==typeof e&&("a"<=e&&e<="z"||"A"<=e&&e<="Z"||"$"===e||"_"===e||sw.ID_Start.test(e))},isIdContinueChar:function(e){return"string"==typeof e&&("a"<=e&&e<="z"||"A"<=e&&e<="Z"||"0"<=e&&e<="9"||"$"===e||"_"===e||""===e||""===e||sw.ID_Continue.test(e))},isDigit:function(e){return"string"==typeof e&&/[0-9]/.test(e)},isHexDigit:function(e){return"string"==typeof e&&/[0-9A-Fa-f]/.test(e)}};function uw(){if(Qy[Wy])return String.fromCodePoint(Qy.codePointAt(Wy))}function r(){var e=uw();return"\n"===e?(Jy++,qy=0):e?qy+=e.length:qy++,e&&(Wy+=e.length),e}var cw={default:function(){switch(nw){case"\t":case"\v":case"\f":case" ":case" ":case"\ufeff":case"\n":case"\r":case"\u2028":case"\u2029":return void r();case"/":return r(),void(Zy="comment");case void 0:return r(),hw("eof")}if(!lw.isSpaceSeparator(nw))return cw[Vy]();r()},comment:function(){switch(nw){case"*":return r(),void(Zy="multiLineComment");case"/":return r(),void(Zy="singleLineComment")}throw gw(r())},multiLineComment:function(){switch(nw){case"*":return r(),void(Zy="multiLineCommentAsterisk");case void 0:throw gw(r())}r()},multiLineCommentAsterisk:function(){switch(nw){case"*":return void r();case"/":return r(),void(Zy="default");case void 0:throw gw(r())}r(),Zy="multiLineComment"},singleLineComment:function(){switch(nw){case"\n":case"\r":case"\u2028":case"\u2029":return r(),void(Zy="default");case void 0:return r(),hw("eof")}r()},value:function(){switch(nw){case"{":case"[":return hw("punctuator",r());case"n":return r(),dw("ull"),hw("null",null);case"t":return r(),dw("rue"),hw("boolean",!0);case"f":return r(),dw("alse"),hw("boolean",!1);case"-":case"+":return"-"===r()&&(tw=-1),void(Zy="sign");case".":return $y=r(),void(Zy="decimalPointLeading");case"0":return $y=r(),void(Zy="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return $y=r(),void(Zy="decimalInteger");case"I":return r(),dw("nfinity"),hw("numeric",1/0);case"N":return r(),dw("aN"),hw("numeric",NaN);case'"':case"'":return ew='"'===r(),$y="",void(Zy="string")}throw gw(r())},identifierNameStartEscape:function(){if("u"!==nw)throw gw(r());r();var e=pw();switch(e){case"$":case"_":break;default:if(lw.isIdStartChar(e))break;throw yw()}$y+=e,Zy="identifierName"},identifierName:function(){switch(nw){case"$":case"_":case"":case"":return void($y+=r());case"\\":return r(),void(Zy="identifierNameEscape")}if(!lw.isIdContinueChar(nw))return hw("identifier",$y);$y+=r()},identifierNameEscape:function(){if("u"!==nw)throw gw(r());r();var e=pw();switch(e){case"$":case"_":case"":case"":break;default:if(lw.isIdContinueChar(e))break;throw yw()}$y+=e,Zy="identifierName"},sign:function(){switch(nw){case".":return $y=r(),void(Zy="decimalPointLeading");case"0":return $y=r(),void(Zy="zero");case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return $y=r(),void(Zy="decimalInteger");case"I":return r(),dw("nfinity"),hw("numeric",tw*(1/0));case"N":return r(),dw("aN"),hw("numeric",NaN)}throw gw(r())},zero:function(){switch(nw){case".":return $y+=r(),void(Zy="decimalPoint");case"e":case"E":return $y+=r(),void(Zy="decimalExponent");case"x":case"X":return $y+=r(),void(Zy="hexadecimal")}return hw("numeric",0*tw)},decimalInteger:function(){switch(nw){case".":return $y+=r(),void(Zy="decimalPoint");case"e":case"E":return $y+=r(),void(Zy="decimalExponent")}if(!lw.isDigit(nw))return hw("numeric",tw*Number($y));$y+=r()},decimalPointLeading:function(){if(!lw.isDigit(nw))throw gw(r());$y+=r(),Zy="decimalFraction"},decimalPoint:function(){switch(nw){case"e":case"E":return $y+=r(),void(Zy="decimalExponent")}if(!lw.isDigit(nw))return hw("numeric",tw*Number($y));$y+=r(),Zy="decimalFraction"},decimalFraction:function(){switch(nw){case"e":case"E":return $y+=r(),void(Zy="decimalExponent")}if(!lw.isDigit(nw))return hw("numeric",tw*Number($y));$y+=r()},decimalExponent:function(){switch(nw){case"+":case"-":return $y+=r(),void(Zy="decimalExponentSign")}if(!lw.isDigit(nw))throw gw(r());$y+=r(),Zy="decimalExponentInteger"},decimalExponentSign:function(){if(!lw.isDigit(nw))throw gw(r());$y+=r(),Zy="decimalExponentInteger"},decimalExponentInteger:function(){if(!lw.isDigit(nw))return hw("numeric",tw*Number($y));$y+=r()},hexadecimal:function(){if(!lw.isHexDigit(nw))throw gw(r());$y+=r(),Zy="hexadecimalInteger"},hexadecimalInteger:function(){if(!lw.isHexDigit(nw))return hw("numeric",tw*Number($y));$y+=r()},string:function(){switch(nw){case"\\":return r(),void($y+=function(){switch(uw()){case"b":return r(),"\b";case"f":return r(),"\f";case"n":return r(),"\n";case"r":return r(),"\r";case"t":return r(),"\t";case"v":return r(),"\v";case"0":if(r(),lw.isDigit(uw()))throw gw(r());return"\0";case"x":return r(),function(){var e="",t=uw();if(lw.isHexDigit(t)&&(e+=r(),t=uw(),lw.isHexDigit(t)))return e+=r(),String.fromCodePoint(parseInt(e,16));throw gw(r())}();case"u":return r(),pw();case"\n":case"\u2028":case"\u2029":return r(),"";case"\r":return r(),"\n"===uw()&&r(),"";case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case void 0:throw gw(r())}return r()}());case'"':return ew?(r(),hw("string",$y)):void($y+=r());case"'":return ew?void($y+=r()):(r(),hw("string",$y));case"\n":case"\r":throw gw(r());case"\u2028":case"\u2029":e=nw,console.warn("JSON5: '".concat(ww(e),"' in strings is not valid ECMAScript; consider escaping"));break;case void 0:throw gw(r())}var e;$y+=r()},start:function(){switch(nw){case"{":case"[":return hw("punctuator",r())}Zy="value"},beforePropertyName:function(){switch(nw){case"$":case"_":return $y=r(),void(Zy="identifierName");case"\\":return r(),void(Zy="identifierNameStartEscape");case"}":return hw("punctuator",r());case'"':case"'":return ew='"'===r(),void(Zy="string")}if(!lw.isIdStartChar(nw))throw gw(r());$y+=r(),Zy="identifierName"},afterPropertyName:function(){if(":"===nw)return hw("punctuator",r());throw gw(r())},beforePropertyValue:function(){Zy="value"},afterPropertyValue:function(){switch(nw){case",":case"}":return hw("punctuator",r())}throw gw(r())},beforeArrayValue:function(){if("]"===nw)return hw("punctuator",r());Zy="value"},afterArrayValue:function(){switch(nw){case",":case"]":return hw("punctuator",r())}throw gw(r())},end:function(){throw gw(r())}};function hw(e,t){return{type:e,value:t,line:Jy,column:qy}}function dw(e){var t,n=q(e);try{for(n.s();!(t=n.n()).done;){var i=t.value;if(uw()!==i)throw gw(r());r()}}catch(e){n.e(e)}finally{n.f()}}function pw(){for(var e="",t=4;0<t--;){var n=uw();if(!lw.isHexDigit(n))throw gw(r());e+=r()}return String.fromCodePoint(parseInt(e,16))}var fw={start:function(){if("eof"===Xy.type)throw Aw();mw()},beforePropertyName:function(){switch(Xy.type){case"identifier":case"string":return Yy=Xy.value,void(Vy="afterPropertyName");case"punctuator":return void vw();case"eof":throw Aw()}},afterPropertyName:function(){if("eof"===Xy.type)throw Aw();Vy="beforePropertyValue"},beforePropertyValue:function(){if("eof"===Xy.type)throw Aw();mw()},beforeArrayValue:function(){if("eof"===Xy.type)throw Aw();("punctuator"===Xy.type&&"]"===Xy.value?vw:mw)()},afterPropertyValue:function(){if("eof"===Xy.type)throw Aw();switch(Xy.value){case",":return void(Vy="beforePropertyName");case"}":vw()}},afterArrayValue:function(){if("eof"===Xy.type)throw Aw();switch(Xy.value){case",":return void(Vy="beforeArrayValue");case"]":vw()}},end:function(){}};function mw(){var e,t;switch(Xy.type){case"punctuator":switch(Xy.value){case"{":e={};break;case"[":e=[]}break;case"null":case"boolean":case"numeric":case"string":e=Xy.value}void 0===Ky?Ky=e:(t=jy[jy.length-1],Array.isArray(t)?t.push(e):t[Yy]=e),Vy=null!==e&&"object"===v(e)?(jy.push(e),Array.isArray(e)?"beforeArrayValue":"beforePropertyName"):null==(t=jy[jy.length-1])?"end":Array.isArray(t)?"afterArrayValue":"afterPropertyValue"}function vw(){jy.pop();var e=jy[jy.length-1];Vy=null==e?"end":Array.isArray(e)?"afterArrayValue":"afterPropertyValue"}function gw(e){return bw((void 0===e?"JSON5: invalid end of input at ":"JSON5: invalid character '".concat(ww(e),"' at ")).concat(Jy,":").concat(qy))}function Aw(){return bw("JSON5: invalid end of input at ".concat(Jy,":").concat(qy))}function yw(){return qy-=5,bw("JSON5: invalid identifier character at ".concat(Jy,":").concat(qy))}function ww(e){var t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"};return t[e]||(e<" "?"\\x"+("00"+(t=e.charCodeAt(0).toString(16))).substring(t.length):e)}function bw(e){e=new SyntaxError(e);return e.lineNumber=Jy,e.columnNumber=qy,e}var xw,Ew={parse:function(e,t){for(Qy=String(e),Vy="start",jy=[],Jy=1,Ky=Yy=Xy=void(qy=Wy=0);Xy=function(){for(Zy="default",$y="",ew=!1,tw=1;;){nw=uw();var e=cw[Zy]();if(e)return e}}(),fw[Vy](),"eof"!==Xy.type;);return"function"==typeof t?function e(t,n,i){var r=t[n];if(null!=r&&"object"===v(r))for(var a in r){var o=e(r,a,i);void 0===o?delete r[a]:r[a]=o}return i.call(t,n,r)}({"":Ky},"",t):Ky},stringify:function(e,t,n){var i,l,c=[],h="",d="";if(null==t||"object"!==v(t)||Array.isArray(t)||(n=t.space,l=t.quote,t=t.replacer),"function"==typeof t)i=t;else if(Array.isArray(t)){var r,p=[],a=q(t);try{for(a.s();!(r=a.n()).done;){var o=r.value,s=void 0;"string"==typeof o?s=o:("number"==typeof o||o instanceof String||o instanceof Number)&&(s=String(o)),void 0!==s&&p.indexOf(s)<0&&p.push(s)}}catch(e){a.e(e)}finally{a.f()}}return n instanceof Number?n=Number(n):n instanceof String&&(n=String(n)),"number"==typeof n?0<n&&(n=Math.min(10,Math.floor(n)),d=" ".substr(0,n)):"string"==typeof n&&(d=n.substr(0,10)),f("",{"":e});function f(e,t){var n=t[e];switch(null!=n&&("function"==typeof n.toJSON5?n=n.toJSON5(e):"function"==typeof n.toJSON&&(n=n.toJSON(e))),(n=i?i.call(t,e,n):n)instanceof Number?n=Number(n):n instanceof String?n=String(n):n instanceof Boolean&&(n=n.valueOf()),n){case null:return"null";case!0:return"true";case!1:return"false"}return"string"==typeof n?m(n):"number"==typeof n?String(n):"object"===v(n)?(Array.isArray(n)?function(e){if(0<=c.indexOf(e))throw TypeError("Converting circular structure to JSON5");c.push(e);for(var t=h,n=(h+=d,[]),i=0;i<e.length;i++){var r=f(String(i),e);n.push(void 0!==r?r:"null")}{var a;a=0===n.length?"[]":""===d?"["+n.join(",")+"]":(a=",\n"+h,a=n.join(a),"[\n"+h+a+",\n"+t+"]")}return c.pop(),h=t,a}:function(e){if(0<=c.indexOf(e))throw TypeError("Converting circular structure to JSON5");c.push(e);var t,n,i=h,r=(h+=d,p||Object.keys(e)),a=[],o=q(r);try{for(o.s();!(t=o.n()).done;){var s,l=t.value,u=f(l,e);void 0!==u&&(s=function(e){if(0===e.length)return m(e);var t=String.fromCodePoint(e.codePointAt(0));if(!lw.isIdStartChar(t))return m(e);for(var n=t.length;n<e.length;n++)if(!lw.isIdContinueChar(String.fromCodePoint(e.codePointAt(n))))return m(e);return e}(l)+":",""!==d&&(s+=" "),a.push(s+=u))}}catch(e){o.e(e)}finally{o.f()}r=0===a.length?"{}":""===d?"{"+(n=a.join(","))+"}":(r=",\n"+h,n=a.join(r),"{\n"+h+n+",\n"+i+"}");return c.pop(),h=i,r})(n):void 0}function m(e){for(var n={"'":.1,'"':.2},t={"'":"\\'",'"':'\\"',"\\":"\\\\","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\v":"\\v","\0":"\\0","\u2028":"\\u2028","\u2029":"\\u2029"},i="",r=0;r<e.length;r++){var a,o=e[r];switch(o){case"'":case'"':n[o]++,i+=o;continue;case"\0":if(lw.isDigit(e[r+1])){i+="\\x00";continue}}t[o]?i+=t[o]:i+=o<" "?"\\x"+("00"+(a=o.charCodeAt(0).toString(16))).substring(a.length):o}var s=l||Object.keys(n).reduce(function(e,t){return n[e]<n[t]?e:t});return s+(i=i.replace(new RegExp(s,"g"),t[s]))+s}}},Cw=function(){function t(e){te(this,t),this.viewer=e,this.measuringTool=e.measuringTool,this.profileTool=e.profileTool,this.volumeTool=e.volumeTool,this.dom=$("#sidebar_root")}return A(t,[{key:"createToolIcon",value:function(e,t,n){e=$('\n\t\t\t<img src="'.concat(e,'"\n\t\t\t\tstyle="width: 32px; height: 32px"\n\t\t\t\tclass="button-icon"\n\t\t\t\tdata-i18n="').concat(t,'" />\n\t\t'));return e.click(n),e}},{key:"init",value:function(){"merge"==Potree.settings.editType?(this.initMergeBar(),this.initToolbar(),this.initScene(),this.initNavigation()):(this.initAccordion(),this.initAppearance(),this.initToolbar(),this.initScene(),this.initNavigation(),this.initFilters(),this.initSettings(),"pano"!=Potree.settings.editType?(this.initAlignment(),this.initClipModel(),this.initSiteModel(),this.initParitcle(),this.initClippingModel()):this.initPanosEdit()),$("#potree_version_number").html(Potree.version.major+"."+Potree.version.minor+Potree.version.suffix)}},{key:"initAlignment",value:function(){function e(n,i){return function(){var e=$('#alignment li[name="selectPointCloud"] input:checked');Array.from(e).forEach(function(t){var e=viewer.scene.pointclouds.find(function(e){return e.name==t.name});n(e,i)})}}var t=viewer.modules.Alignment,n=$("#alignment"),i=n.find('[name="transform"] button');i.eq(0).on("click",e(t.rotate,10)),i.eq(1).on("click",e(t.rotate,1)),i.eq(2).on("click",e(t.rotate,.1)),i.eq(3).on("click",e(t.rotate,-10)),i.eq(4).on("click",e(t.rotate,-1)),i.eq(5).on("click",e(t.rotate,-.1)),i.eq(6).on("click",e(t.translate,new Re(-1,0,0))),i.eq(7).on("click",e(t.translate,new Re(1,0,0))),i.eq(8).on("click",e(t.translate,new Re(0,-1,0))),i.eq(9).on("click",e(t.translate,new Re(0,1,0))),i.eq(10).on("click",e(t.translate,new Re(0,0,-1))),i.eq(11).on("click",e(t.translate,new Re(0,0,1))),n.find("#startAlignment").on("click",function(){t.enter()}),n.find("#exitAlignment").on("click",function(){t.save(),t.leave()}),n.find("#rotTool").on("click",function(){t.switchHandle("rotate")}),n.find("#moveTool").on("click",function(){t.switchHandle("translate")})}},{key:"initMergeBar",value:function(){var e=$("#mergeModel"),t=(e.find("button"),viewer.modules.MergeEditor),r=!1;e.find('ul[name="model"] li button').on("click",function(e){var t,n,i;return r?console.log("还在加载",r):(t=$(e.target),n=t.parent().attr("name"),"select"==t.attr("name")?Potree.selectModel(n):void("添加"==t.text()?(i=Date.now(),Potree.addModel(n,function(){r=!1,t.text("删除");var e=Date.now();console.log("加载完毕",n,"用时",(e-i)/1e3,"s")}),r=n):(Potree.removeModel(n),t.text("添加"))))}),e.find('li button[name="splitScreen"]').on("click",function(e){e=$(e.target);"分屏"==e.text()?(e.text("恢复"),t.enterSplit()):(e.text("分屏"),t.leaveSplit())});e.find('li button[name="tag"]').on("click",function(e){$(e.target);viewer.tagTool.startInsertion()})}},{key:"initClippingModel",value:function(){var e=this,t=viewer.modules.clipping,n=$("#clipping"),i=n.find('[name="operation"] button[name="add"] '),r=n.find('[name="operation"] button[name="switchView"] '),a=n.find(' button[name="enter"] '),o=n.find(' button[name="exit"] '),s=n.find('[name="list"] ul ');a.on("click",function(){t.enter(),n.find("li[name=operation]").css("display","block"),n.find("li[name=list]").css("display","block")}),o.on("click",function(){t.leave(),n.find("li[name=operation]").css("display","none"),n.find("li[name=list]").css("display","none")}),r.on("click",function(){t.switchView("top"==t.activeViewName?"mainView":"top")}),n.find('[name="operation"] button[name="translation"] ').on("click",function(){t.setTranMode("translation")}),n.find('[name="operation"] button[name="rotation"] ').on("click",function(){t.setTranMode("rotation")}),n.find('[name="operation"] button[name="scale"] ').on("click",function(){t.setTranMode("scale")}),i.on("click",function(){var t=e.volumeTool.startInsertion({clip:!0,clipTask:Potree.ClipTask.SHOW_OUTSIDE}),n=$("<li><button name='changeTask'>不可见</button><button name='chose'>选择</button><button name='delete'>删除</button></li>");s.append(n),n.find("button[name=changeTask]").on("click",function(e){"不可见"==e.target.innerText?(t.clipTask=Potree.ClipTask.SHOW_INSIDE,e.target.innerText="可见"):(t.clipTask=Potree.ClipTask.SHOW_OUTSIDE,e.target.innerText="不可见"),t.update()}),n.find("button[name=chose]").on("click",function(e){viewer.transformObject(t)}),n.find("button[name=delete]").on("click",function(e){n.remove(),viewer.scene.removeVolume(t)})}),n.find("button[name=save]").on("click",function(e){t.saveClipData()})}},{key:"addAlignmentButton",value:function(e){var t=$('#alignment li[name="selectPointCloud"]>div'),e=$(' <input name="'.concat(e.name,'" class="editCheckbox" type="checkbox" >\n \n <label for="showingLabels">').concat(e.name,"</label>"));t.append(e)}},{key:"initClipModel",value:function(){var e=viewer.modules.Clip,t=$("#clipModel").find("button");t.eq(0).on("click",e.enter.bind(e)),t.eq(1).on("click",e.download.bind(e)),t.eq(2).on("click",e.leave.bind(e))}},{key:"initSiteModel",value:function(){var e=viewer.modules.SiteModel,t=$("#siteModel");t.find('button[name="start"] ').on("click",e.enter.bind(e)),t.find('button[name="exit"] ').on("click",e.leave.bind(e)),t.find('button[name="building"] ').on("click",e.startInsertion.bind(e,"building")),t.find('button[name="floor"] ').on("click",function(){e.addFloor(e.buildings[0],"top")}),t.find('button[name="room"] ').on("click",function(){e.startInsertion("room",e.buildings[0].buildChildren[0])}),t.find('button[name="digHole"] ').on("click",function(){e.selected&&e.startInsertion("hole",e.selected)}),t.find('button[name="selectBuilding"] ').on("click",function(){e.selectEntity(e.buildings[0])}),t.find('button[name="selectFloor"] ').on("click",function(){e.selectEntity(e.buildings[0].buildChildren[0])}),t.find('button[name="selectRoom"] ').on("click",function(){e.selectEntity(e.buildings[0].buildChildren[0].buildChildren[0])}),t.find('button[name="removeFirstBuilding"] ').on("click",function(){e.removeEntity(e.buildings[0])}),t.find('button[name="removeFirstFloor"] ').on("click",function(){e.removeEntity(e.buildings[0].buildChildren[0])}),t.find('button[name="removeFirstRoom"] ').on("click",function(){e.removeEntity(e.buildings[0].buildChildren[0].buildChildren[0])}),t.find('button[name="removeFirstHole"] ').on("click",function(){e.selected.removeHole(e.selected.holes[0])}),t.find('button[name="removeFirstMarker"] ').on("click",function(){e.selected.removeMarker(0)})}},{key:"initParitcle",value:function(){var e=viewer.modules.ParticleEditor,t=$("#particle");t.find('button[name="addFire"] ').on("click",function(){e.startInsertion("fire+smoke")}),t.find('button[name="addExplode"] ').on("click",function(){e.startInsertion("explode")})}},{key:"initPanosEdit",value:function(){var e=viewer.modules.PanoEditor,t=viewer.modules.Alignment,n=$("#panos");n.find('button[name="save"] ').on("click",function(){console.log("saveData",e.exportSavingData())}),n.find('button[name="translate"] ').on("click",function(){t.switchHandle("translate")}),n.find('button[name="rotate"] ').on("click",function(){t.switchHandle("rotate")}),n.find('button[name="topView"] ').on("click",function(){e.switchView("top")}),n.find('button[name="sideView"] ').on("click",function(){e.switchView("right")}),n.find('button[name="3DView"] ').on("click",function(){e.switchView("mainView")}),n.find('button[name="addLink"] ').on("click",function(){e.setLinkOperateState("addLink",!0)}),n.find('button[name="removeLink"] ').on("click",function(){e.setLinkOperateState("removeLink",!0)}),n.find('button[name="getCloser"] ').on("click",function(){e.setZoomInState(!0)})}},{key:"initToolbar",value:function(){var n=this,e=$("#tools"),e=(e.append(this.createToolIcon(Potree.resourcePath+"/icons/angle.png","[title]tt.angle_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showAngles:!0,showArea:!1,closed:!0,maxMarkers:3,minMarkers:3,measureType:"Angle"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/point.svg","[title]tt.point_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showAngles:!1,showCoordinates:!0,showEdges:!1,showArea:!1,closed:!0,maxMarkers:1,minMarkers:1,measureType:"Point"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]tt.distance_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!1,closed:!1,minMarkers:2,maxMarkers:2,measureType:"Distance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]MulDistance",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!1,closed:!1,minMarkers:2,measureType:"MulDistance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]Ver MulDistance",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({measureType:"Ver MulDistance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/distance.svg","[title]Hor MulDistance",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({measureType:"Hor MulDistance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/height.svg","[title]tt.height_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showHeight:!0,showArea:!1,closed:!1,maxMarkers:2,minMarkers:2,measureType:"Ver Distance"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/circle.svg","[title]tt.circle_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showHeight:!1,showArea:!1,showCircle:!0,showEdges:!1,closed:!1,maxMarkers:3,minMarkers:3,measureType:"Circle"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/azimuth.svg","Azimuth",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!1,showHeight:!1,showArea:!1,showCircle:!1,showEdges:!1,showAzimuth:!0,closed:!1,maxMarkers:2,minMarkers:2,measureType:"Azimuth"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]tt.area_measurement",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:3,measureType:"Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]Hor Area",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:3,measureType:"Hor Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]Ver Area",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:3,measureType:"Ver Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]area_freedom_rect",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:4,maxMarkers:4,isRect:!0,measureType:"Rect Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]area_horizontal_rect",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:4,maxMarkers:4,isRect:!0,faceDirection:"horizontal",measureType:"Hor Rect Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/area.svg","[title]area_vertical_rect",function(){$("#menu_measurements").next().slideDown();var t=n.measuringTool.startInsertion({showDistances:!0,showArea:!0,closed:!0,minMarkers:4,maxMarkers:4,isRect:!0,faceDirection:"vertical",measureType:"Ver Rect Area"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/volume.svg","[title]tt.volume_measurement",function(){var t=n.volumeTool.startInsertion(),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/sphere_distances.svg","[title]tt.volume_measurement",function(){var t=n.volumeTool.startInsertion({type:mg}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/profile.svg","[title]tt.height_profile",function(){$("#menu_measurements").next().slideDown();var t=n.profileTool.startInsertion(),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/annotation.svg","[title]tt.annotation",function(){$("#menu_measurements").next().slideDown();var t=n.viewer.annotationTool.startInsertion(),e=$("#jstree_scene").jstree().get_json("annotations").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/reset_tools.svg","[title]tt.remove_all_measurement",function(){n.viewer.scene.removeAllMeasurements()})),$("#measurement_options_show")),t=(e.selectgroup({title:"Show/Hide labels"}),e.find("input").click(function(e){e="SHOW"===e.target.value;n.measuringTool.showLabels=e}),this.measuringTool.showLabels?"SHOW":"HIDE");e.find("input[value=".concat(t,"]")).trigger("click")}},{key:"initScene",value:function(){function t(e){var t=e.pointcloud,e="".concat(Potree.resourcePath,"/icons/cloud.svg"),n=w(b,t.name,e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function n(e){var e=e.measurement,t=ie.getMeasurementIcon(e);w(x,e.name,t,e)}function i(e){var t=e.volume,e=ie.getMeasurementIcon(t),n=w(x,t.name,e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function r(e){var e=e.profile,t=ie.getMeasurementIcon(e);w(x,e.name,t,e)}function e(e){var e=e.animation,t="".concat(Potree.resourcePath,"/icons/camera_animation.svg");w(E,"animation",t,e)}function a(e){var t=e.images,e="".concat(Potree.resourcePath,"/icons/picture.svg"),n=w(C,"images",e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function o(e){var t=e.images,e="".concat(Potree.resourcePath,"/icons/picture.svg"),n=w(C,"360° images",e,t);t.addEventListener("visibility_changed",function(){t.visible?y.jstree("check_node",n):y.jstree("uncheck_node",n)})}function s(e){var t,e=e.geopackage,n="".concat(Potree.resourcePath,"/icons/triangle.svg"),i=$("#jstree_scene"),r=q(e.node.children);try{for(r.s();!(t=r.n()).done;){var a=t.value,o=a.name,s=i.jstree("create_node","vectors",{text:o,icon:n,object:a,data:a},"last",!1,!1);i.jstree(a.visible?"check_node":"uncheck_node",s)}}catch(e){r.e(e)}finally{r.f()}}function l(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.measurement.uuid});y.jstree("delete_node",e.id)}var u,c=this,h=$("#menu_scene"),F=h.next().find("#scene_objects"),O=h.next().find("#scene_object_properties"),h=h.next().find("#scene_export"),d="".concat(Potree.resourcePath,"/icons/file_geojson.svg"),p="".concat(Potree.resourcePath,"/icons/file_dxf.svg"),f="".concat(Potree.resourcePath,"/icons/file_potree.svg"),m=(h.append('\n\t\t\t\tExport: <br>\n\t\t\t\t<a href="#" download="measure.json"><img name="geojson_export_button" src="'.concat(d,'" class="button-icon" style="height: 24px" /></a>\n\t\t\t\t<a href="#" download="measure.dxf"><img name="dxf_export_button" src="').concat(p,'" class="button-icon" style="height: 24px" /></a>\n\t\t\t\t<a href="#" download="potree.json5"><img name="potree_export_button" src="').concat(f,'" class="button-icon" style="height: 24px" /></a>\n\t\t\t')),h.find("img[name=geojson_export_button]").parent()),v=(m.click(function(e){var t=c.viewer.scene,t=[].concat(J(t.measurements),J(t.profiles),J(t.volumes));0<t.length?(t=Ay.toString(t),t=window.URL.createObjectURL(new Blob([t],{type:"data:application/octet-stream"})),m.attr("href",t)):(c.viewer.postError("nothing to export"),e.preventDefault())}),h.find("img[name=dxf_export_button]").parent()),g=(v.click(function(e){var t=c.viewer.scene,t=[].concat(J(t.measurements),J(t.profiles),J(t.volumes));0<t.length?(t=yy.toString(t),t=window.URL.createObjectURL(new Blob([t],{type:"data:application/octet-stream"})),v.attr("href",t)):(c.viewer.postError("no measurements to export"),e.preventDefault())}),h.find("img[name=potree_export_button]").parent()),A=(g.click(function(e){var t=Potree.saveProject(c.viewer),t=Ew.stringify(t,null,"\t"),t=window.URL.createObjectURL(new Blob([t],{type:"data:application/octet-stream"}));g.attr("href",t)}),new Py(O,this.viewer)),y=(A.setScene(this.viewer.scene),localStorage.removeItem("jstree"),$('<div id="jstree_scene"></div>')),w=(F.append(y),y.jstree({plugins:["checkbox","state"],core:{dblclick_toggle:!1,state:{checked:!0},check_callback:!0,expand_selected_onload:!0},checkbox:{keep_selected_style:!0,three_state:!1,whole_node:!1,tie_selection:!1}}),function(e,t,n,i){e=y.jstree("create_node",e,{text:t,icon:n,data:i},"last",!1,!1);return i.visible?y.jstree("check_node",e):y.jstree("uncheck_node",e),e}),b=y.jstree("create_node","#",{text:"<b>Point Clouds</b>",id:"pointclouds"},"last",!1,!1),x=y.jstree("create_node","#",{text:"<b>Measurements</b>",id:"measurements"},"last",!1,!1),d=y.jstree("create_node","#",{text:"<b>Annotations</b>",id:"annotations"},"last",!1,!1),E=y.jstree("create_node","#",{text:"<b>Other</b>",id:"other"},"last",!1,!1),p=y.jstree("create_node","#",{text:"<b>Vectors</b>",id:"vectors"},"last",!1,!1),C=y.jstree("create_node","#",{text:"<b> Images</b>",id:"images"},"last",!1,!1),N=(y.jstree("check_node",b),y.jstree("check_node",x),y.jstree("check_node",d),y.jstree("check_node",E),y.jstree("check_node",p),y.jstree("check_node",C),y.on("create_node.jstree",function(e,t){y.jstree("open_all")}),y.on("select_node.jstree",function(e,t){t=t.node.data;A.set(t),c.viewer.inputHandler.deselectAll(),t instanceof pg&&c.viewer.inputHandler.toggleSelection(t),$(c.viewer.renderer.domElement).focus()}),y.on("deselect_node.jstree",function(e,t){A.set(null)}),y.on("delete_node.jstree",function(e,t){A.set(null)}),y.on("dblclick",".jstree-anchor",function(e){var t,n,i=$.jstree.reference(e.target).get_node(e.target).data;e.target.classList.contains("jstree-checkbox")||(i instanceof Zf?(e=c.viewer.getBoundingBox([i]),(n=new K).boundingBox=e,c.viewer.zoomTo(n,1,500)):i instanceof eg?(e=i.points.map(function(e){return e.position}),0==(n=(new Y).setFromPoints(e)).getSize(new Re).length()&&(n.min=n.max.clone(),n.expandByVector(new Re(1,1,1))),(e=new K).boundingBox=n,c.viewer.zoomTo(e,2,500)):i instanceof ff?(n=i.points,0<(e=(new Y).setFromPoints(n)).getSize(new Re).length()&&((n=new K).boundingBox=e,c.viewer.zoomTo(n,1,500))):i instanceof pg?0<(e=i.boundingBox.clone().applyMatrix4(i.matrixWorld)).getSize(new Re).length()&&((n=new K).boundingBox=e,c.viewer.zoomTo(n,1,500)):i instanceof zm?i.moveHere(c.viewer.scene.getActiveCamera()):i instanceof Uf?(e=i.camera.getWorldDirection(new Re),i.camera instanceof mh?(e.multiplyScalar(i.camera.right),t=(new Re).addVectors(i.camera.position,e),c.viewer.setCameraMode(am.ORTHOGRAPHIC)):i.camera instanceof ma&&(e.multiplyScalar(c.viewer.scene.view.radius),t=(new Re).addVectors(i.camera.position,e),c.viewer.setCameraMode(am.PERSPECTIVE)),c.viewer.scene.view.position.copy(i.camera.position),c.viewer.scene.view.lookAt(t)):"SpotLight"===i.type?(n=0<i.distance?i.distance/4:5e3,e=i.position,t=(new Re).addVectors(e,i.getWorldDirection(new Re).multiplyScalar(n)),c.viewer.scene.view.position.copy(i.position),c.viewer.scene.view.lookAt(t)):i instanceof K?0<(e=(new Y).setFromObject(i)).getSize(new Re).length()&&((n=new K).boundingBox=e,c.viewer.zoomTo(n,1,500)):i instanceof aw||i instanceof cy||0 instanceof Geopackage)}),y.on("uncheck_node.jstree",function(e,t){t=t.node.data;t&&(t.visible=!1)}),y.on("check_node.jstree",function(e,t){t=t.node.data;t&&(t.visible=!0)}),this.viewer.scene.addEventListener("pointcloud_added",t),this.viewer.scene.addEventListener("measurement_added",n),this.viewer.scene.addEventListener("profile_added",r),this.viewer.scene.addEventListener("volume_added",i),this.viewer.scene.addEventListener("camera_animation_added",e),this.viewer.scene.addEventListener("oriented_images_added",a),this.viewer.scene.addEventListener("360_images_added",o),this.viewer.scene.addEventListener("geopackage_added",s),this.viewer.scene.addEventListener("polygon_clip_volume_added",i),this.viewer.scene.annotations.addEventListener("annotation_added",function(e){var n=e.annotation,e="".concat(Potree.resourcePath,"/icons/annotation.svg"),t=c.annotationMapping.get(n.parent),t=w(t,n.title,e,n);c.annotationMapping.set(n,t),n.addEventListener("annotation_changed",function(e){var t=$("#jstree_scene").jstree().get_json("annotations").children.find(function(e){return e.data.uuid===n.uuid});$.jstree.reference(t.id).rename_node(t.id,n.title)})}),this.viewer.scene.addEventListener("measurement_removed",l),this.viewer.scene.addEventListener("volume_removed",function(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.volume.uuid});y.jstree("delete_node",e.id)}),this.viewer.scene.addEventListener("polygon_clip_volume_removed",function(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.volume.uuid});y.jstree("delete_node",e.id)}),this.viewer.scene.addEventListener("profile_removed",function(t){var e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.profile.uuid});y.jstree("delete_node",e.id)}),"".concat(Potree.resourcePath,"/icons/annotation.svg")),f=(this.annotationMapping=new Map,this.annotationMapping.set(this.viewer.scene.annotations,d),this.viewer.scene.annotations.traverseDescendants(function(e){var t=c.annotationMapping.get(e.parent),t=w(t,e.title,N,e);c.annotationMapping.set(e,t)}),this.viewer.scene),B=q(f.pointclouds);try{for(B.s();!(u=B.n()).done;){var G=u.value;t({pointcloud:G})}}catch(e){B.e(e)}finally{B.f()}var _,M=q(f.measurements);try{for(M.s();!(_=M.n()).done;){var U=_.value;n({measurement:U})}}catch(e){M.e(e)}finally{M.f()}for(var T=0,S=[].concat(J(f.volumes),J(f.polygonClipVolumes));T<S.length;T++){var z=S[T];i({volume:z})}var I,D=q(f.cameraAnimations);try{for(D.s();!(I=D.n()).done;)e({animation:I.value})}catch(e){D.e(e)}finally{D.f()}var H,P=q(f.orientedImages);try{for(P.s();!(H=P.n()).done;)a({images:H.value})}catch(e){P.e(e)}finally{P.f()}var Q,k=q(f.images360);try{for(k.s();!(Q=k.n()).done;)o({images:Q.value})}catch(e){k.e(e)}finally{k.f()}var V,L=q(f.geopackages);try{for(L.s();!(V=L.n()).done;)s({geopackage:V.value})}catch(e){L.e(e)}finally{L.f()}var j,R=q(f.profiles);try{for(R.s();!(j=R.n()).done;){var W=j.value;r({profile:W})}}catch(e){R.e(e)}finally{R.f()}w(E,"Camera",null,new fa),this.viewer.addEventListener("scene_changed",function(e){A.setScene(e.scene),e.oldScene.removeEventListener("pointcloud_added",t),e.oldScene.removeEventListener("measurement_added",n),e.oldScene.removeEventListener("profile_added",r),e.oldScene.removeEventListener("volume_added",i),e.oldScene.removeEventListener("polygon_clip_volume_added",i),e.oldScene.removeEventListener("measurement_removed",l),e.scene.addEventListener("pointcloud_added",t),e.scene.addEventListener("measurement_added",n),e.scene.addEventListener("profile_added",r),e.scene.addEventListener("volume_added",i),e.scene.addEventListener("polygon_clip_volume_added",i),e.scene.addEventListener("measurement_removed",l)})}},{key:"initClippingTool",value:function(){var n=this,e=(this.viewer.addEventListener("cliptask_changed",function(e){console.log("TODO")}),this.viewer.addEventListener("clipmethod_changed",function(e){console.log("TODO")}),$("#cliptask_options")),t=(e.selectgroup({title:"Clip Task"}),e.find("input").click(function(e){n.viewer.setClipTask(om[e.target.value])}),Object.keys(om).filter(function(e){return om[e]===n.viewer.clipTask})),e=(e.find("input[value=".concat(t,"]")).trigger("click"),$("#clipmethod_options")),t=(e.selectgroup({title:"Clip Method"}),e.find("input").click(function(e){n.viewer.setClipMethod(sm[e.target.value])}),Object.keys(sm).filter(function(e){return sm[e]===n.viewer.clipMethod})),e=(e.find("input[value=".concat(t,"]")).trigger("click"),$("#clipping_tools")),i=(e.append(this.createToolIcon(Potree.resourcePath+"/icons/clip_volume.svg","[title]tt.clip_volume",function(){var t=n.volumeTool.startInsertion({clip:!0}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/clip-polygon.svg","[title]tt.clip_polygon",function(){var t=n.viewer.clippingTool.startInsertion({type:"polygon"}),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid});$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)})),new rg(this.viewer));e.append(this.createToolIcon(Potree.resourcePath+"/icons/clip-screen.svg","[title]tt.screen_clip_box",function(){var t,e;n.viewer.scene.getActiveCamera()instanceof mh?(t=i.startInsertion(),e=$("#jstree_scene").jstree().get_json("measurements").children.find(function(e){return e.data.uuid===t.uuid}),$.jstree.reference(e.id).deselect_all(),$.jstree.reference(e.id).select_node(e.id)):n.viewer.postMessage("Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.",{duration:2e3})})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/remove.svg","[title]tt.remove_all_clipping_volumes",function(){n.viewer.scene.removeAllClipVolumes()}))}},{key:"initFilters",value:function(){this.initClassificationList(),this.initReturnFilters(),this.initGPSTimeFilters(),this.initPointSourceIDFilters()}},{key:"initReturnFilters",value:function(){function e(e){var t=(n=N(i.viewer.filterReturnNumberRange,2))[0],n=n[1];a[0].innerHTML="".concat(t," to ").concat(n),r.slider({values:[t,n]})}function t(e){var t=(n=N(i.viewer.filterNumberOfReturnsRange,2))[0],n=n[1];s[0].innerHTML="".concat(t," to ").concat(n),o.slider({values:[t,n]})}var i=this,n=$("#return_filter_panel"),r=n.find("#sldReturnNumber"),a=n.find("#lblReturnNumber"),o=(r.slider({range:!0,min:0,max:7,step:1,values:[0,7],slide:function(e,t){i.viewer.setFilterReturnNumberRange(t.values[0],t.values[1])}}),this.viewer.addEventListener("filter_return_number_range_changed",e),e(),n.find("#sldNumberOfReturns")),s=n.find("#lblNumberOfReturns");o.slider({range:!0,min:0,max:7,step:1,values:[0,7],slide:function(e,t){i.viewer.setFilterNumberOfReturnsRange(t.values[0],t.values[1])}});this.viewer.addEventListener("filter_number_of_returns_range_changed",t),t()}},{key:"initGPSTimeFilters",value:function(){var i=this,e=$("#gpstime_filter_panel"),r=new zy({levels:4,slide:function(e){var t;(t=i.viewer).setFilterGPSTimeRange.apply(t,J(e.values))}}),a=!1,n=(this.viewer.addEventListener("update",function(e){var t=i.viewer.getGpsTimeExtent(),n=t[0]!==1/0;!a&&n&&($("#gpstime_multilevel_range_container")[0].prepend(r.element),n=i.viewer.getGpsTimeExtent(),r.setRange(n),r.setValues(n),a=!0),r.setRange(t)}),e.find("#txtGpsTime")),e=e.find("#btnFindGpsTime"),o=null;n.on("input",function(e){var t=n.val();isNaN(t)?(o=null,n.css("background-color","#ff9999")):(t=parseFloat(t),o=t,n.css("background-color",""))}),e.click(function(){null!==o&&viewer.moveToGpsTimeVicinity(o)})}},{key:"initPointSourceIDFilters",value:function(){var n=this,i=$("#pointsourceid_filter_panel"),r=new zy({levels:4,range:[0,65535],precision:1,slide:function(e){e=e.values;n.viewer.setFilterPointSourceIDRange(e[0],e[1])}}),a=!1;this.viewer.addEventListener("update",function(e){var t=n.viewer.filterPointSourceIDRange;a||(i[0].prepend(r.element),a=!0,r.setValues(t))})}},{key:"initClassificationList",value:function(){function e(){for(var e in n(),c.viewer.classifications)t(e,c.viewer.classifications[e].name);i()}var c=this,h=$("#classificationList"),t=function(t,e){var n=c.viewer.classifications[t],i="colorPickerClassification_"+t,r=n.visible?"checked":"",r=$('\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap; display: flex">\n\t\t\t\t\t\t<input id="'.concat("chkClassification_"+t,'" type="checkbox" ').concat(r,'/>\n\t\t\t\t\t\t<span style="flex-grow: 1">').concat(e,'</span>\n\t\t\t\t\t\t<input id="').concat(i,'" style="zoom: 0.5" />\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\t\t\t')),e=r.find("input"),i=r.find("#".concat(i)),e=(e.click(function(e){c.viewer.setClassificationVisibility(t,e.target.checked)}),n.color.map(function(e){return 255*e}).join(", ")),e="rgb(".concat(e,")");i.spectrum({color:e,showInput:!0,preferredFormat:"rgb",cancelText:"",chooseText:"Apply",move:function(e){e=e.toRgb(),e=[e.r/255,e.g/255,e.b/255,1];n.color=e},change:function(e){e=e.toRgb(),e=[e.r/255,e.g/255,e.b/255,1];n.color=e}}),h.append(r)},n=function(){var e=$('\n\t\t\t\t<li>\n\t\t\t\t\t<label style="whitespace: nowrap">\n\t\t\t\t\t\t<input id="toggleClassificationFilters" type="checkbox" checked/>\n\t\t\t\t\t\t<span>show/hide all</span>\n\t\t\t\t\t</label>\n\t\t\t\t</li>\n\t\t\t');e.find("input").click(function(e){c.viewer.toggleAllClassificationsVisibility()}),h.append(e)},i=function(){var e=$('\n\t\t\t\t<li>\n\t\t\t\t\t<input type="button" value="invert" />\n\t\t\t\t</li>\n\t\t\t');e.find("input").click(function(){for(var e=c.viewer.classifications,t=0,n=Object.keys(e);t<n.length;t++){var i=n[t],r=e[i];c.viewer.setClassificationVisibility(i,!r.visible)}}),h.append(e)};e(),this.viewer.addEventListener("classifications_changed",function(){h.empty(),e()}),this.viewer.addEventListener("classification_visibility_changed",function(){for(var e=0,t=Object.keys(c.viewer.classifications);e<t.length;e++){var n=t[e],i=c.viewer.classifications[n];h.find("#chkClassification_".concat(n)).prop("checked",i.visible)}for(var r=0,a=0,o=0,s=Object.keys(c.viewer.classifications);o<s.length;o++){var l=s[o];c.viewer.classifications[l].visible&&r++,a++}var u=r===a;h.find("#toggleClassificationFilters").prop("checked",u)})}},{key:"initAccordion",value:function(){for(var r=this,a=($(".accordion > h3").each(function(){var e=$(this),t=$(this).next();t.hide(),e.click(function(){t.slideToggle()})}),[["EN","en"],["FR","fr"],["DE","de"],["JP","jp"],["ES","es"],["SE","se"],["ZH","zh"]]),o=$("#potree_languages"),e=0;e<a.length;e++)!function(e){var t=N(a[e],2),n=t[0],i=t[1],t=$("<a>".concat(n,"</a>"));t.click(function(){return r.viewer.setLanguage(i)}),0===e&&t.css("margin-left","30px"),o.append(t),e<a.length-1&&o.append($(document.createTextNode(" - ")))}(e)}},{key:"initAppearance",value:function(){var n=this,t=this.dom.find("#sldPointBudget"),e=(t.slider({value:this.viewer.getPointBudget(),min:1e5,max:1e7,step:1e3,slide:function(e,t){n.viewer.setPointBudget(t.value)}}),this.dom.find("#sldFOV").slider({value:this.viewer.getFOV(),min:20,max:100,step:1,slide:function(e,t){n.viewer.setFOV(t.value)}}),$("#sldEDLRadius").slider({value:this.viewer.getEDLRadius(),min:1,max:4,step:.01,slide:function(e,t){n.viewer.setEDLRadius(t.value)}}),$("#sldEDLStrength").slider({value:this.viewer.getEDLStrength(),min:0,max:5,step:.01,slide:function(e,t){n.viewer.setEDLStrength(t.value)}}),$("#sldEDLOpacity").slider({value:this.viewer.getEDLOpacity(),min:0,max:1,step:.01,slide:function(e,t){n.viewer.setEDLOpacity(t.value)}}),this.viewer.addEventListener("point_budget_changed",function(e){$("#lblPointBudget")[0].innerHTML=ie.addCommas(n.viewer.getPointBudget()),t.slider({value:n.viewer.getPointBudget()})}),this.viewer.addEventListener("fov_changed",function(e){$("#lblFOV")[0].innerHTML=parseInt(n.viewer.getFOV()),$("#sldFOV").slider({value:n.viewer.getFOV()})}),this.viewer.addEventListener("use_edl_changed",function(e){$("#chkEDLEnabled")[0].checked=n.viewer.getEDLEnabled()}),this.viewer.addEventListener("edl_radius_changed",function(e){$("#lblEDLRadius")[0].innerHTML=n.viewer.getEDLRadius().toFixed(1),$("#sldEDLRadius").slider({value:n.viewer.getEDLRadius()})}),this.viewer.addEventListener("edl_strength_changed",function(e){$("#lblEDLStrength")[0].innerHTML=n.viewer.getEDLStrength().toFixed(1),$("#sldEDLStrength").slider({value:n.viewer.getEDLStrength()})}),this.viewer.addEventListener("background_changed",function(e){$("input[name=background][value='"+n.viewer.getBackground()+"']").prop("checked",!0)}),$("#lblPointBudget")[0].innerHTML=ie.addCommas(this.viewer.getPointBudget()),$("#lblFOV")[0].innerHTML=parseInt(this.viewer.getFOV()),$("#lblEDLRadius")[0].innerHTML=this.viewer.getEDLRadius().toFixed(1),$("#lblEDLStrength")[0].innerHTML=this.viewer.getEDLStrength().toFixed(1),$("#chkEDLEnabled")[0].checked=this.viewer.getEDLEnabled(),$("#background_options")),e=(e.selectgroup(),e.find("input").click(function(e){n.viewer.setBackground(e.target.value)}),this.viewer.getBackground());try{$("input[name=background_options][value=".concat(e,"]")).trigger("click")}catch(e){}$("#chkEDLEnabled").click(function(){n.viewer.setEDLEnabled($("#chkEDLEnabled").prop("checked"))})}},{key:"initNavigation",value:function(){function t(e){return Math.pow((e-o.x)/o.y,.25)}var n=this,e=$("#navigation"),i=$("#sldMoveSpeed"),r=$("#lblMoveSpeed"),a=(e.append(this.createToolIcon(Potree.resourcePath+"/icons/earth_controls_1.png","[title]tt.earth_control",function(){n.viewer.setControls(n.viewer.earthControls)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/fps_controls.svg","[title]tt.flight_control",function(){n.viewer.setControls(n.viewer.fpControls),n.viewer.fpControls.lockElevation=!1})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/helicopter_controls.svg","[title]tt.heli_control",function(){n.viewer.setControls(n.viewer.fpControls),n.viewer.fpControls.lockElevation=!0})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/orbit_controls.svg","[title]tt.orbit_control",function(){n.viewer.setControls(n.viewer.orbitControls)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/focus.svg","[title]tt.focus_control",function(){n.viewer.fitToScreen()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/navigation_cube.svg","[title]tt.navigation_cube_control",function(){n.viewer.toggleNavigationCube()})),e.append(this.createToolIcon(Potree.resourcePath+"/images/compas.svg","[title]tt.compass",function(){var e=!n.viewer.compass.isVisible();n.viewer.compass.setVisible(e)})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/camera_animation.svg","[title]tt.camera_animation",function(){var e=Gy.defaultFromView(n.viewer);viewer.scene.addCameraAnimation(e)})),e.append("<br>"),e.append(this.createToolIcon(Potree.resourcePath+"/icons/left.svg","[title]tt.left_view_control",function(){n.viewer.setLeftView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/right.svg","[title]tt.right_view_control",function(){n.viewer.setRightView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/front.svg","[title]tt.front_view_control",function(){n.viewer.setFrontView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/back.svg","[title]tt.back_view_control",function(){n.viewer.setBackView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/top.svg","[title]tt.top_view_control",function(){n.viewer.setTopView()})),e.append(this.createToolIcon(Potree.resourcePath+"/icons/bottom.svg","[title]tt.bottom_view_control",function(){n.viewer.setBottomView()})),$('\n\t\t\t<selectgroup id="camera_projection_options">\n\t\t\t\t<option id="camera_projection_options_perspective" value="PERSPECTIVE">Perspective</option>\n\t\t\t\t<option id="camera_projection_options_orthigraphic" value="ORTHOGRAPHIC">Orthographic</option>\n\t\t\t</selectgroup>\n\t\t')),e=(e.append(a),a.selectgroup({title:"Camera Projection"}),a.find("input").click(function(e){n.viewer.setCameraMode(am[e.target.value])}),Object.keys(am).filter(function(e){return am[e]===n.viewer.scene.cameraMode})),o=(a.find("input[value=".concat(e,"]")).trigger("click"),new Le(1,1e4));i.slider({value:t(this.viewer.getMoveSpeed()),min:0,max:1,step:.01,slide:function(e,t){n.viewer.setMoveSpeed((t=t.value,Math.pow(t,4)*o.y+o.x))}}),this.viewer.addEventListener("move_speed_changed",function(e){r.html(n.viewer.getMoveSpeed().toFixed(1)),i.slider({value:t(n.viewer.getMoveSpeed())})}),r.html(this.viewer.getMoveSpeed().toFixed(1))}},{key:"initSettings",value:function(){var n=this,e=($("#sldMinNodeSize").slider({value:this.viewer.getMinNodeSize(),min:0,max:1e3,step:.01,slide:function(e,t){n.viewer.setMinNodeSize(t.value)}}),this.viewer.addEventListener("minnodesize_changed",function(e){$("#lblMinNodeSize").html(parseInt(n.viewer.getMinNodeSize())),$("#sldMinNodeSize").slider({value:n.viewer.getMinNodeSize()})}),$("#lblMinNodeSize").html(parseInt(this.viewer.getMinNodeSize())),$("#splat_quality_options")),t=(e.selectgroup({title:"Splat Quality"}),e.find("input").click(function(e){"standard"===e.target.value?n.viewer.useHQ=!1:"hq"===e.target.value&&(n.viewer.useHQ=!0)}),this.viewer.useHQ?"hq":"standard");e.find("input[value=".concat(t,"]")).trigger("click"),$("#show_bounding_box").click(function(){n.viewer.setShowBoundingBox($("#show_bounding_box").prop("checked"))}),$("#set_freeze").click(function(){n.viewer.setFreeze($("#set_freeze").prop("checked"))})}}]),t}(),Bw=function(){y(i,Yf);var n=C(i);function i(e){var t;return te(this,i),(t=n.call(this)).viewer=e,t.renderer=e.renderer,t.sg=new Hu(.1),t.sm=new sc,t.s=new Z(t.sg,t.sm),t}return A(i,[{key:"startInsertion",value:function(){function t(e){e.button===le.LEFT?s.finish():e.button===le.RIGHT&&s.cancel()}function n(e){viewer.scene.scene.remove(i.s),i.s.removeEventListener("drag",l),i.s.removeEventListener("drop",n)}var i=this,r=this.viewer.renderer.domElement,a=new zm({position:[589748.27,231444.54,753.675],title:"Annotation Title",description:"Annotation Description"}),o=(this.dispatchEvent({type:"start_inserting_annotation",annotation:a}),this.viewer.scene.annotations),s=(o.add(a),{cancel:null,finish:null}),l=(s.cancel=function(e){o.remove(a),r.removeEventListener("mouseup",t,!0)},s.finish=function(e){r.removeEventListener("mouseup",t,!0)},r.addEventListener("mouseup",t,!0),function(e){e=ie.getMousePointCloudIntersection(e.drag.end,e.viewer.scene.getActiveCamera(),e.viewer,e.viewer.scene.pointclouds,{pickClipped:!0});e&&(i.s.position.copy(e.location),a.position.copy(e.location))});return this.s.addEventListener("drag",l),this.s.addEventListener("drop",n),this.viewer.scene.scene.add(this.s),this.viewer.inputHandler.startDragging(this.s),a}},{key:"update",value:function(){}},{key:"render",value:function(){}}]),i}(),_w={priorityEvent:[{zoomInCloud:"zoom-in"},{hoverPano:"pointer"},{connectPano:"url({Potree.resourcePath}/images/connect.png),auto"},{disconnectPano:"url({Potree.resourcePath}/images/connect-dis.png),auto"},{hoverLine:"pointer"},{hoverTranHandle:"grab"},{movePointcloud:"move"},{polygon_isIntersectSelf:"not-allowed"},{polygon_AtWrongPlace:"not-allowed"},{markerMove:"grab"},{mapClipMove:"move"},{mapClipRotate:"url({Potree.resourcePath}/images/rotate-cursor.png),auto"},{rotatePointcloud:"url({Potree.resourcePath}/images/rotate-cursor.png),auto"},{siteModelFloorDrag:"row-resize"},{addSth:"cell"}],list:[],currentCursorIndex:null,init:function(e,t){var n=this;this.priorityEvent.forEach(function(e){for(var t in e)e[t]=ag.replaceAll(e[t],"{Potree.resourcePath}",Potree.resourcePath)}),this.domElements=t.map(function(e){return e.renderArea}),e.addEventListener("CursorChange",function(e){"add"==e.action?n.add(e.name):n.remove(e.name)})},add:function(t){var e=this.priorityEvent.find(function(e){return e[t]});e?this.list.includes(t)||(this.judge({addItem:e,name:t}),this.list.push(t)):console.error("CursorDeal 未定义优先级 name:"+t)},remove:function(e){e=this.list.indexOf(e);-1<e&&(this.list.splice(e,1),this.judge())},judge:function(){var e,i,r=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};t.addItem?((e=this.priorityEvent.indexOf(t.addItem))<this.currentCursorIndex||null==this.currentCursorIndex)&&(this.domElements.forEach(function(e){return e.style.cursor=t.addItem[t.name]}),this.currentCursorIndex=e):(i={index:1/0,cursor:null},this.list.forEach(function(t){var e=r.priorityEvent.find(function(e){return e[t]}),n=r.priorityEvent.indexOf(e);n<i.index&&(i.index=n,i.cursor=e[t])}),this.currentCursorIndex=i.index,this.domElements.forEach(function(e){return e.style.cursor=i.cursor||""}))}},Mw=function(){y(t,zn);var e=C(t);function t(){return te(this,t),e.call(this)}return A(t,[{key:"splitStart",value:function(i){for(var r=this,a=[],o=[viewer.mainViewport],e=(viewer.mapViewer&&o.push(viewer.mapViewer.viewports[0]),i.length),t=0;t<e;t++)!function(e){var t=i[e],e=void 0,n=o.find(function(e){return e.name==(t.name2||t.name)});n&&((e=n).left=t.left,e.bottom=t.bottom,e.width=t.width,e.height=t.height),e||(n=new Dg,t.limitBound&&(n.limitBound=t.limitBound),t.direction&&(n.direction=t.direction),e=new EA(n,r.getOrthoCamera(),t),t.viewContainsPoints&&(e.viewContainsPoints=t.viewContainsPoints)),"OrthographicCamera"==e.camera.type&&(e.targetPlane=new $i,e.shiftTarget=new Re),e.fitMargin=t.margin,a.push(e)}(t);return viewer.viewports=a,viewer.updateScreenSize({forceUpdateSize:!0}),a.forEach(function(e){"MainView"!=e.name&&r.viewportFitBound(e,viewer.bound.boundingBox,viewer.bound.center,0,e.fitMargin)}),a}},{key:"unSplit",value:function(){this.unfocusViewport(),viewer.viewports=[viewer.mainViewport],viewer.mainViewport.width=1,viewer.mainViewport.height=1,viewer.mainViewport.left=0,viewer.mainViewport.bottom=0,viewer.updateScreenSize({forceUpdateSize:!0})}},{key:"viewportFitBound",value:function(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,r=4<arguments.length?arguments[4]:void 0,a=e.view,t={bound:t},o=this.getViewBound(e),s=o.boundSize,o=o.boundCenter;e.targetPlane.setFromNormalAndCoplanarPoint(a.direction.clone(),o),e.targetPlane.projectPoint(n,e.shiftTarget),t.endPosition=this.getPosOutOfModel(e,s),t.margin=r||{x:30,y:30},a.moveOrthoCamera(e,t,i)}},{key:"getViewBound",value:function(e){var t,n=viewer.bound,i=n.boundSize,n=n.center;return e.viewContainsPoints&&(t=viewer.bound.boundingBox.clone(),e.viewContainsPoints.forEach(function(e){t.expandByPoint(e)}),i=t.getSize(new Re),n=t.getCenter(new Re)),{boundSize:i,boundCenter:n}}},{key:"getPosOutOfModel",value:function(e,t){t=(t=t||this.getViewBound(e).boundSize).length();return e.shiftTarget.clone().sub(e.view.direction.clone().multiplyScalar(t+10))}},{key:"updateCameraOutOfModel",value:function(){var r=this;viewer.viewports.forEach(function(e,t){var n,i;e!=viewer.mainViewport&&(n=(i=r.getViewBound(e)).boundSize,i=i.boundCenter,e.targetPlane.setFromNormalAndCoplanarPoint(e.view.direction.clone(),i),e.targetPlane.projectPoint(e.view.position,e.shiftTarget),i=r.getPosOutOfModel(e,n),e.view.position.copy(i))})}},{key:"rotateSideCamera",value:function(e,t){var n=this.getViewBound(e),i=n.boundSize,n=n.boundCenter,n=this.focusCenter||n,r=(e.targetPlane.setFromNormalAndCoplanarPoint(e.view.direction,n),e.targetPlane.projectPoint(e.view.position,e.shiftTarget),(new Re).subVectors(n,e.shiftTarget)),t=(new _e).makeRotationAxis(new Re(0,0,1),t);e.view.direction=e.view.direction.applyMatrix4(t),r.applyMatrix4(t),e.shiftTarget.subVectors(n,r),e.view.position=this.getPosOutOfModel(e,i)}},{key:"getOrthoCamera",value:function(){var e=new mh(-100,100,100,100,.01,1e4);return e.up.set(0,0,1),e}},{key:"focusOnViewport",value:function(n){var i=this;viewer.viewports.forEach(function(e,t){e.name==n?(i.focusInfo={name:n,left:e.left,bottom:e.bottom,height:e.height,width:e.width},e.left=0,e.bottom=0,e.height=1,e.width=1):e.active=!1}),viewer.updateScreenSize({forceUpdateSize:!0})}},{key:"unfocusViewport",value:function(){var n=this;this.focusInfo&&(viewer.viewports.forEach(function(e,t){n.focusInfo.name==e.name&&(e.left=n.focusInfo.left,e.bottom=n.focusInfo.bottom,e.height=n.focusInfo.height,e.width=n.focusInfo.width),e.active=!0}),viewer.updateScreenSize({forceUpdateSize:!0}),this.focusInfo=null)}}]),t}(),Tw=["","⅛","¼","⅜","½","⅝","¾","⅞"],Sw=function(){function r(e,t,n,i){te(this,r),this.name=e,this.symbol=t,this.base=n,this.factor=i}return A(r,[{key:"toBase",value:function(e){return e*this.factor}},{key:"fromBase",value:function(e){return e/this.factor}}]),r}(),Iw={MILLIMETER:["Millimeter","mm"],CENTIMETER:["Centimeter","cm"],METER:["Meter","m"],KILOMETER:["Kilometer","km"],INCH:["Inch","in"],FOOT:["Foot","ft"],MILE:["Mile","mi"],SQUAREMETER:["SquareMeter","m²"],SQUAREFOOT:["SquareFoot","ft²"],CUBICMETER:["CubicMeter","m³"],CUBICFOOT:["CubicFoot","ft³"],BYTE:["Byte","B"],KILOBYTE:["Kilobyte","kB"],MEGABYTE:["Megabyte","MB"],GIGABYTE:["Gigabyte","GB"],TERABYTE:["Terabyte","TB"],PETABYTE:["Petabyte","PB"],init:function(){var e,t,n=new Sw(Iw.METER[0],Iw.METER[1],void 0,1),i=new Sw(Iw.SQUAREMETER[0],Iw.SQUAREMETER[1],void 0,1),r=new Sw(Iw.CUBICMETER[0],Iw.CUBICMETER[1],void 0,1),a=new Sw(Iw.BYTE[0],Iw.BYTE[1],void 0,1),i=(Iw.DISTANCE=((t={}).metric=((e={})[Iw.MILLIMETER[0]]=new Sw(Iw.MILLIMETER[0],Iw.MILLIMETER[1],n,.001),e[Iw.CENTIMETER[0]]=new Sw(Iw.CENTIMETER[0],Iw.CENTIMETER[1],n,.01),e[Iw.METER[0]]=n,e[Iw.KILOMETER[0]]=new Sw(Iw.KILOMETER[0],Iw.KILOMETER[1],n,1e3),e),t.imperial=((e={})[Iw.INCH[0]]=new Sw(Iw.INCH[0],Iw.INCH[1],n,.0254),e[Iw.FOOT[0]]=new Sw(Iw.FOOT[0],Iw.FOOT[1],n,.3048),e[Iw.MILE[0]]=new Sw(Iw.MILE[0],Iw.MILE[1],n,1609.344),e),t),Iw.AREA=((n={}).metric=((e={})[Iw.SQUAREMETER[0]]=i,e),n.imperial=((t={})[Iw.SQUAREFOOT[0]]=new Sw(Iw.SQUAREFOOT[0],Iw.SQUAREFOOT[1],i,.092903),t),n),Iw.VOLUME=((e={}).metric=((i={})[Iw.CUBICMETER[0]]=r,i),e.imperial=((t={})[Iw.CUBICFOOT[0]]=new Sw(Iw.CUBICFOOT[0],Iw.CUBICFOOT[1],r,.0283168),t),e),(n={})[Iw.BYTE[0]]=a,n[Iw.KILOBYTE[0]]=new Sw(Iw.KILOBYTE[0],Iw.KILOBYTE[1],a,1e3),n[Iw.MEGABYTE[0]]=new Sw(Iw.MEGABYTE[0],Iw.MEGABYTE[1],a,1e6),n[Iw.GIGABYTE[0]]=new Sw(Iw.GIGABYTE[0],Iw.GIGABYTE[1],a,1e9),n[Iw.TERABYTE[0]]=new Sw(Iw.TERABYTE[0],Iw.TERABYTE[1],a,1e12),n[Iw.PETABYTE[0]]=new Sw(Iw.PETABYTE[0],Iw.PETABYTE[1],a,1e15),n);Iw.DATA=((r={}).metric=i,r.imperial=i,r)},getUnitsOfMeasurementByDomain:function(e){return this[e.toUpperCase()]},getUnitsOfMeasurementByDomainAndSystem:function(e,t){e=this.getUnitsOfMeasurementByDomain(e);if(e.hasOwnProperty(t.toLowerCase()))return e[t.toLowerCase()];console.error(n+" measurement system is not supported.")},getDefaultUnitByDomainAndSystem:function(e,t){switch(e.toUpperCase()){case"DISTANCE":switch(t.toLowerCase()){case"metric":return this.DISTANCE.metric[this.METER[0]];case"imperial":return this.DISTANCE.imperial[this.FOOT[0]];default:console.error(t+" measurement system is not supported.")}case"AREA":switch(t.toLowerCase()){case"metric":return this.AREA.metric[this.SQUAREMETER[0]];case"imperial":return this.AREA.imperial[this.SQUAREFOOT[0]];default:console.error(t+" measurement system is not supported.")}case"VOLUME":switch(t.toLowerCase()){case"metric":return this.VOLUME.metric[this.CUBICMETER[0]];case"imperial":return this.VOLUME.imperial[this.CUBICFOOT[0]];default:console.error(t+" measurement system is not supported.")}case"DATA":switch(t.toLowerCase()){case"metric":return this.DATA.metric[this.BYTE[0]];case"imperial":return this.DATA.imperial[this.BYTE[0]];default:console.error(t+" measurement system is not supported.")}default:console.error(e+" measurement domain is not supported.")}}},Dw=A(function e(){te(this,e),this.LOCAL_STORAGE_KEY="iv_unit_key",Iw.init(),this.unitSystems=["metric","imperial"],this.defaultSystem="metric"}),Pw=function(){function e(){te(this,e),this.UnitService=new Dw}return A(e,[{key:"scopedConvert",value:function(e,t){return this.convert(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:2,3<arguments.length?arguments[3]:void 0,4<arguments.length?arguments[4]:void 0)}},{key:"convert",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:2,i=3<arguments.length?arguments[3]:void 0,r=4<arguments.length?arguments[4]:void 0,a=5<arguments.length&&void 0!==arguments[5]&&arguments[5];return e?(t=this.getMostRelevantMeasurement(t,i||this.UnitService.currentSystem,e,r),this.getFormattedMeasurementString(t[0],t[1],n,a)):""}},{key:"convertBack",value:function(e,t){var n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:2,r=3<arguments.length?arguments[3]:void 0,a=4<arguments.length?arguments[4]:void 0;return e?(n=Iw.getDefaultUnitByDomainAndSystem(t,"metric"),t=this.getMostRelevantMeasurement2(t,r,e,a),this.getFormattedMeasurementString(t[0],n,i)):""}},{key:"getFormattedMeasurementString",value:function(e,t,n,i){i=i&&t.name===Iw.FOOT[0]?this.formatImperialDistance(12*e):i&&t.name===Iw.INCH[0]?this.formatImperialDistance(e):e.toLocaleString(void 0,{minimumFractionDigits:n,maximumFractionDigits:n})+" "+t.symbol;return i}},{key:"formatImperialDistance",value:function(e){var e=Math.round(8*e),t=Math.floor(e/8),n=Math.floor(t/12),t=t-12*n,e=Tw[e%8],t=0==t&&""!==e?"":t;return""!==t&&""!==e&&(e=" "+e),0!==n?n+"' "+t+e+'"':""+t+e+'"'}},{key:"getMostRelevantMeasurement",value:function(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=[],o=Iw.getUnitsOfMeasurementByDomainAndSystem(e,t);for(i in o)a.push(o[i]);e=a.filter(function(e){return e.factor>=r}).reduce(function(e,t){return t.fromBase(n)<e.fromBase(n)&&1<=t.fromBase(n)?t:e});return e?[e.fromBase(n),e]:void 0}},{key:"getMostRelevantMeasurement2",value:function(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=[],o=Iw.getUnitsOfMeasurementByDomainAndSystem(e,t);for(i in o)a.push(o[i]);e=a.filter(function(e){return e.factor>=r}).reduce(function(e,t){return t.toBase(n)<e.toBase(n)&&1<=t.toBase(n)?t:e});return e?[e.toBase(n),e]:void 0}}]),e}(),kw=new Nc,Lw=new Me(Gm.clip.color),Rw={width2d:40},Fw=1,Ow=function(){y(o,Gv);var r=C(o);function o(e,t){te(this,o);var e={points:Nw(e=e.clone().setZ(0),t,0),closed:!0,atPlane:!0,isRect:!0,dimension:"2d"},n=r.call(this,"mapClipBox",e);n.angle=0,n.createRotateBar(),n.edgeMarkers=[],n.initData(e);var i;n.areaPlane.addEventListener("mouseover",function(){viewer.dispatchEvent({type:"CursorChange",action:"add",name:"mapClipMove"})}),n.areaPlane.addEventListener("mouseleave",function(){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"mapClipMove"})});return n.areaPlane.addEventListener("drag",function(e){var t,e=e.intersect.orthoIntersect;i&&(t=(new Re).subVectors(e,i).setZ(0),n.center.add(t),n.updatePoints(),n.dispatchEvent({type:"repos"})),i=e.clone()}),n.areaPlane.addEventListener("drop",function(e){i=null}),viewer.setObjectLayers(G(n),"mapObjects"),n}return A(o,[{key:"getScale",value:function(){return new Re(this.points[0].distanceTo(this.points[1]),this.points[1].distanceTo(this.points[2]),1)}},{key:"addMarker",value:function(){var t=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n=new Jm({mat:this.getMarkerMaterial("default"),pickOrder:Fw,sizeInfo:Rw,dontFixOrient:!0,viewports:viewer.mapViewer.viewports,name:"mapClipBox_marker"}),i=(n.renderOrder=3,Fv.createLine([new Re,new Re],{color:Lw})),r=new Jm({mat:this.getMarkerMaterial("default"),pickOrder:Fw,sizeInfo:Rw,dontFixOrient:!0,viewports:viewer.mapViewer.viewports,name:"mapClipBox_edgePoint"}),a=(r.addEventListener("mouseover",function(e){t.setMarkerSelected(e.object,!0,"single"),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),r.addEventListener("mouseleave",function(e){t.setMarkerSelected(e.object,!1,"single"),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})}),{lastPos:null});r.addEventListener("drag",this.dragEdge.bind(this,a)),r.addEventListener("drop",this.dropEdge.bind(this,a)),this.edgeMarkers.push(r),this.add(r),n.dispatchEvent("addHoverEvent"),k(_(o.prototype),"addMarker",this).call(this,{point:e.point,marker:n,edge:i})}},{key:"dragEdge",value:function(e,t){var n,i="mapViewport"==t.dragViewport.name,r=t.intersect.orthoIntersect;r&&e.lastPos&&-1!==(t=this.edgeMarkers.indexOf(t.drag.object))&&(n=ee.getNormal2d({p1:this.points[t],p2:this.points[(t+1)%4]}),n=(new Re).subVectors(r,e.lastPos).setZ(0).projectOnVector(n).setZ(0),n=(new Re).addVectors(this.points[t],n),this.dragChange(n,t,i)),e.lastPos=r.clone()}},{key:"dropEdge",value:function(e,t){e.lastPos=null,this.setMarkerSelected(t.drag.object,!1,"single")}},{key:"createAreaPlane",value:function(){var e=new L({color:Lw,side:ve,opacity:.3,transparent:!0,depthTest:!1});return k(_(o.prototype),"createAreaPlane",this).call(this,e)}},{key:"getMarkerMaterial",value:function(e){return xw||(xw={default:new L({transparent:!0,color:Lw,opacity:.8,map:kw.load(Potree.resourcePath+"/textures/whiteCircle.png")}),select:new L({transparent:!0,color:Lw,opacity:1,map:kw.load(Potree.resourcePath+"/textures/whiteCircle.png")})},o.markerMats=xw),xw[e]}},{key:"setMarkerSelected",value:function(e,t,n){e.material="hover"==t?this.getMarkerMaterial("select"):this.getMarkerMaterial("default"),viewer.mapViewer.dispatchEvent("content_changed")}},{key:"createRotateBar",value:function(){function e(){a.material.opacity=t,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"mapClipRotate"}),viewer.mapViewer.dispatchEvent("content_changed")}var i,r=this,t=.7,n=new K,a=new Jm({mat:new L({side:ve,opacity:t,transparent:!0,depthTest:!1,map:kw.load(Potree.resourcePath+"/textures/rotation_circle.png")}),root:n,sizeInfo:Rw,dontFixOrient:!0,viewports:viewer.mapViewer.viewports,name:"mapClipRotateBar"}),o=(a.position.set(0,2.5,0),a.scale.set(2,2,2),a.addEventListener("mouseover",function(){a.material.opacity=1,viewer.dispatchEvent({type:"CursorChange",action:"add",name:"mapClipRotate"}),viewer.mapViewer.dispatchEvent("content_changed")}),a.addEventListener("mouseleave",e),this.addEventListener("dispose",e),a.addEventListener("drag",function(e){var t,n,e=e.intersect.orthoIntersect;i&&(n=(new Re).subVectors(i,r.center).setZ(0),t=(new Re).subVectors(e,r.center).setZ(0),n=ee.getAngle(n,t,"z"),r.angle+=n,r.rotateBar.rotation.z=r.angle,r.updatePoints(),r.dispatchEvent({type:"rotate",angle:r.angle})),i=e.clone()}),a.addEventListener("drop",function(){i=null,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"mapClipRotate"})}),Fv.createLine([new Re,new Re(0,1.5,0)],{color:Lw}));n.add(a),n.add(o),this.add(n),this.rotateBar=n,this.rotateBar.bar=a}},{key:"updatePoints",value:function(e){this.points=Nw(this.center,e||this.getScale(),this.angle),this.getPoint2dInfo(this.points),this.update({ifUpdateMarkers:!0})}},{key:"update",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},e=(k(_(o.prototype),"update",this).call(this,e),(new Re).addVectors(this.points[0],this.points[1]).multiplyScalar(.5));this.rotateBar.position.copy(e),this.rotateBar.bar.update();for(var t=0;t<4;t++){var n=this.points[t],i=this.points[(t+1)%4],n=(new Re).addVectors(n,i).multiplyScalar(.5);this.updateMarker(this.edgeMarkers[t],n)}}},{key:"dispose",value:function(){k(_(o.prototype),"dispose",this).call(this),this.dispatchEvent("dispose")}}]),o}();function Nw(t,e,n){var n=2<arguments.length&&void 0!==n?n:0,e=[new Re(-e.x/2,+e.y/2,0),new Re(+e.x/2,+e.y/2,0),new Re(+e.x/2,-e.y/2,0),new Re(-e.x/2,-e.y/2,0)],i=(new _e).makeRotationAxis(new Re(0,0,1),n);return e.forEach(function(e){e.applyMatrix4(i),e.add(t)}),e}function Gw(e){var t;return Vw||((t=Xw.load(Potree.resourcePath+"/textures/gridmap.png")).wrapS=t.wrapT=ot,Vw={dataset:new ic({color:812922,side:ve,opacity:.2,transparent:!0,depthTest:!1,wireframe:!0}),building:new ic({color:812922,metalness:.2,roughness:.8,side:ve,opacity:.1,transparent:!0,depthTest:!0}),buildingSelect:new ic({color:36582,metalness:0,roughness:1,side:ve,opacity:.1,transparent:!0,depthTest:!0}),floor:new ic({color:11708469,metalness:.1,roughness:1,side:ve,opacity:.05,transparent:!0,depthTest:!0}),floorSelect:new jm({map:t,color:16707151,side:ve,opacity:1,transparent:!0,useDepth:!0,clipDistance:1,occlusionDistance:1,maxClipFactor:.4,backColor:"#efe"}),room:new ic({color:"#ff44ee",metalness:0,roughness:1,side:ve,opacity:.08,transparent:!0,depthTest:!1}),roomSelect:new jm({map:t,color:"#ff44ee",side:ve,opacity:1,transparent:!0,useDepth:!0,clipDistance:1,occlusionDistance:.5,maxClipFactor:.6,backColor:"#ff88dd"})}),Vw[e]}function Uw(F,e,l){function t(){if(n.dragging)return n.pointerMove(),{stopContinue:!0}}var n=this,i=(void 0===e&&(console.warn('THREE.TransformControls: The second parameter "domElement" is now mandatory.'),e=document),K.call(this),this.visible=!1,this.domElement=e,new zw(l)),u=(this.add(i),this._gizmo=i,new Hw),r=(this.add(u),this),c=(this.options=l,D("camera",F),D("object",void 0),D("enabled",!0),D("axis",null),D("mode","translate"),D("translationSnap",null),D("rotationSnap",null),D("scaleSnap",null),D("space","world"),D("size",1),D("dragging",!1),D("showX",!0),D("showY",!0),D("showZ",!0),{type:"change"}),a={type:"mouseDown"},o={type:"mouseUp",mode:r.mode},O={type:"objectChange"},h=new gd,d=new Re,p=new Re,f=new X,m={X:new Re(1,0,0),Y:new Re(0,1,0),Z:new Re(0,0,1)},v=new Re,g=new Re,A=new Re,y=new Re,w=new Re,b=new Re,x=0,s=new Re,E=new X,N=new Re,G=new Re,U=new X,C=new X,z=new Re,B=new Re,H=new X,Q=new Re,_=new Re,M=new X,T=new X,V=new Re,S=new Re,j=new Re,I=new X,W=new Re;function D(t,e){var n=e;Object.defineProperty(r,t,{get:function(){return void 0!==n?n:e},set:function(e){n!==e&&(n=e,u[t]=e,i[t]=e,r.dispatchEvent({type:t+"-changed",value:e}),r.dispatchEvent(c))}}),r[t]=e,u[t]=e,i[t]=e}function P(e){r.enabled&&r.pointerHover()}function k(e){r.enabled&&(r.pointerHover(),r.pointerDown())}function L(e){r.enabled&&this.dragging&&r.pointerMove()}function R(e){r.enabled&&r.pointerUp()}D("worldPosition",_),D("worldPositionStart",B),D("worldQuaternion",M),D("worldQuaternionStart",H),D("cameraPosition",s),D("cameraQuaternion",E),D("pointStart",v),D("pointEnd",g),D("rotationAxis",y),D("rotationAngle",x),D("eye",S),e.addEventListener("mousedown",k,!1),e.addEventListener("touchstart",k,!1),e.addEventListener("mousemove",P,!1),e.addEventListener("touchmove",P,!1),e.addEventListener("touchmove",L,!1),document.addEventListener("mouseup",R,!1),e.addEventListener("touchend",R,!1),e.addEventListener("touchcancel",R,!1),e.addEventListener("touchleave",R,!1),this.addEventListener("dragging",t,10),viewer.addEventListener("global_drag",t,10),this.setRotateMethod=function(e){this.rotateMethod=e},this.dispose=function(){e.removeEventListener("mousedown",k),e.removeEventListener("touchstart",k),e.removeEventListener("mousemove",P),e.removeEventListener("mousemove",L),e.removeEventListener("touchmove",P),e.removeEventListener("touchmove",L),document.removeEventListener("mouseup",R),e.removeEventListener("touchend",R),e.removeEventListener("touchcancel",R),e.removeEventListener("touchleave",R),this.traverse(function(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()})},this.attach=function(e){return this.object=e,this.visible=!0,this},this.detach=function(){return this.object=void 0,this.visible=!1,this.axis=null,this},this.updateMatrixWorld=function(){var e;this.visible&&(void 0!==this.object&&(this.object.updateMatrixWorld(),this.object.parent.matrixWorld.decompose(G,U,z),this.object.matrixWorld.decompose(_,M,V),this.object.boundingBox&&((e=this.object.boundingBox.clone().applyMatrix4(this.object.matrixWorld)).getCenter(_),this.pivotOnBottom)&&_.setZ(e.min.z),C.copy(U).invert(),T.copy(M).invert()),this.camera.updateMatrixWorld(),this.camera.matrixWorld.decompose(s,E,N),"OrthographicCamera"==this.camera.type?S.copy(this.view.direction):S.copy(s).sub(_).normalize(),K.prototype.updateMatrixWorld.call(this))},this.pointerHover=function(){var e,t;viewer.inputHandler.pointer;void 0===this.object||this.dragging||(t=(e=viewer.inputHandler.getMouseDirection()).origin,e=e.direction,h.set(t,e),viewer.setCameraLayers(h,["sceneObjects","mapObjects","measure","transformationTool","model"],viewer.inputHandler.hoverViewport&&viewer.inputHandler.hoverViewport.extraEnableLayers),t=h.intersectObjects(i.picker[this.mode].children.filter(function(e){return e.visible}),!0)[0]||!1,this.axis=t?t.object.name:null)},this.pointerDown=function(){var e,t;viewer.inputHandler.pointer;void 0!==this.object&&!0!==this.dragging&&null!==this.axis&&(e=(t=viewer.inputHandler.getMouseDirection()).origin,t=t.direction,h.set(e,t),viewer.setCameraLayers(h,["sceneObjects","mapObjects","measure","transformationTool","model"],viewer.inputHandler.hoverViewport&&viewer.inputHandler.hoverViewport.extraEnableLayers),(e=h.intersectObjects([u],!0)[0]||!1)&&(t=this.space,"scale"===this.mode?t="local":"E"!==this.axis&&"XYZE"!==this.axis&&"XYZ"!==this.axis||(t="world"),"local"===t&&"rotate"===this.mode&&(t=this.rotationSnap,"X"===this.axis&&t&&(this.object.rotation.x=Math.round(this.object.rotation.x/t)*t),"Y"===this.axis&&t&&(this.object.rotation.y=Math.round(this.object.rotation.y/t)*t),"Z"===this.axis)&&t&&(this.object.rotation.z=Math.round(this.object.rotation.z/t)*t),this.object.updateMatrixWorld(),this.object.parent.updateMatrixWorld(),j.copy(this.object.position),I.copy(this.object.quaternion),W.copy(this.object.scale),this.object.matrixWorld.decompose(B,H,Q),this.object.boundingBox&&this.object.boundingBox.getCenter(B).applyMatrix4(this.object.matrixWorld),v.copy(e.point).sub(B)),this.dragging=!0,a.mode=this.mode,this.dispatchEvent(a))},this.pointerMove=function(){var e=viewer.inputHandler.pointer,t=this.axis,n=this.mode,i=this.object,r=this.space;if("scale"===n?r="local":"E"!==t&&"XYZE"!==t&&"XYZ"!==t||(r="world"),void 0!==i&&null!==t&&!1!==this.dragging&&(void 0===e.button||0===e.button)){var e=viewer.inputHandler.getMouseDirection(),a=e.origin,e=e.direction,a=(h.set(a,e),viewer.setCameraLayers(h,["sceneObjects","mapObjects","measure","transformationTool","model"],viewer.inputHandler.hoverViewport&&viewer.inputHandler.hoverViewport.extraEnableLayers),h.intersectObjects([u],!0)[0]||!1);if(!1!==a){if(g.copy(a.point).sub(B),"translate"===n)A.copy(g).sub(v),"local"===r&&"XYZ"!==t&&A.applyQuaternion(T),-1===t.indexOf("X")&&(A.x=0),-1===t.indexOf("Y")&&(A.y=0),-1===t.indexOf("Z")&&(A.z=0),("local"===r&&"XYZ"!==t?(i.scale.x<0&&(A.x*=-1),i.scale.y<0&&(A.y*=-1),i.scale.z<0&&(A.z*=-1),A.applyQuaternion(I)):A.applyQuaternion(C)).divide(z),i.position.copy(A).add(j),this.translationSnap&&("local"===r&&(i.position.applyQuaternion(f.copy(I).invert()),-1!==t.search("X")&&(i.position.x=Math.round(i.position.x/this.translationSnap)*this.translationSnap),-1!==t.search("Y")&&(i.position.y=Math.round(i.position.y/this.translationSnap)*this.translationSnap),-1!==t.search("Z")&&(i.position.z=Math.round(i.position.z/this.translationSnap)*this.translationSnap),i.position.applyQuaternion(I)),"world"===r)&&(i.parent&&i.position.add(d.setFromMatrixPosition(i.parent.matrixWorld)),-1!==t.search("X")&&(i.position.x=Math.round(i.position.x/this.translationSnap)*this.translationSnap),-1!==t.search("Y")&&(i.position.y=Math.round(i.position.y/this.translationSnap)*this.translationSnap),-1!==t.search("Z")&&(i.position.z=Math.round(i.position.z/this.translationSnap)*this.translationSnap),i.parent)&&i.position.sub(d.setFromMatrixPosition(i.parent.matrixWorld)),i.dispatchEvent({type:"position_changed"});else if("scale"===n)-1!==t.search("XYZ")?(o=g.length()/v.length(),g.dot(v)<0&&(o*=-1),l.NoScaleZ?p.set(o,o,1):p.set(o,o,o)):-1!==t.search("XY")?(o=g.length()/v.length(),g.dot(v)<0&&(o*=-1),p.set(o,o,1)):(d.copy(v),p.copy(g),d.applyQuaternion(T),p.applyQuaternion(T),p.divide(d),-1===t.search("X")&&(p.x=1),-1===t.search("Y")&&(p.y=1),-1===t.search("Z")&&(p.z=1)),i.scale.copy(W).multiply(p),this.scaleSnap&&(-1!==t.search("X")&&(i.scale.x=Math.round(i.scale.x/this.scaleSnap)*this.scaleSnap||this.scaleSnap),-1!==t.search("Y")&&(i.scale.y=Math.round(i.scale.y/this.scaleSnap)*this.scaleSnap||this.scaleSnap),-1!==t.search("Z"))&&(i.scale.z=Math.round(i.scale.z/this.scaleSnap)*this.scaleSnap||this.scaleSnap),i.dispatchEvent({type:"scale_changed"});else if("rotate"===n){if(2==this.rotateMethod)if("E"===t)y.copy(S),x=g.angleTo(v),w.copy(v).normalize(),b.copy(g).normalize(),x*=b.cross(w).dot(S)<0?1:-1;else{"XYZE"===t?(A.copy(g).sub(v),y.copy(A).cross(S).normalize()):y.copy(m[t]);var e=new Re,a=(this.object.boundingBox?e.copy(_):e.copy(B),"local"===r?y.clone().applyQuaternion(M):y),o=(new $i).setFromNormalAndCoplanarPoint(a,e),n=viewer.inputHandler.getMouseDirection(),s=n.origin,n=n.direction,s=(h.set(s,n),h.ray.intersectPlane(o,new Re));if(s){n=s.clone().sub(e);if(!this.rotateStart)return void(this.rotateStart={v1:n});o=this.rotateStart.v1;if(x=ee.getAngle(o,n,a),Number.isNaN(x))return;this.rotateStart.v1=n}}else{A.copy(g).sub(v);s=2/_.distanceTo(d.setFromMatrixPosition(this.camera.matrixWorld));"E"===t?(y.copy(S),x=g.angleTo(v),w.copy(v).normalize(),b.copy(g).normalize(),x*=b.cross(w).dot(S)<0?1:-1):"XYZE"===t?(y.copy(A).cross(S).normalize(),x=A.dot(d.copy(y).cross(this.eye))*s):"X"!==t&&"Y"!==t&&"Z"!==t||(y.copy(m[t]),d.copy(m[t]),"local"===r&&d.applyQuaternion(M),x=A.dot(d.cross(S).normalize())*s),this.rotationSnap&&(x=Math.round(x/this.rotationSnap)*this.rotationSnap),this.rotationAngle=x}("local"===r&&"E"!==t&&"XYZE"!==t?(i.scale[t.toLowerCase()]<0&&(x*=-1),i.quaternion.copy(I),i.quaternion.multiply(f.setFromAxisAngle(y,x))):(y.applyQuaternion(C),i.quaternion.copy(f.setFromAxisAngle(y,x)),i.quaternion.multiply(I))).normalize(),2==this.rotateMethod&&"E"!=t&&I.copy(i.quaternion),i.dispatchEvent({type:"rotation_changed"})}this.dispatchEvent(c),this.dispatchEvent(O)}}},this.pointerUp=function(e){this.dragging&&null!==this.axis&&(o.mode=this.mode,this.dispatchEvent(o),this.rotateStart=null,this.dispatchEvent({type:"transform_end"})),this.dragging=!1},this.onPointerDown=k,this.onPointerMove=L,this.onPointerUp=R,this.getMode=function(){return r.mode},this.setMode=function(e){r.mode=e},this.setTranslationSnap=function(e){r.translationSnap=e},this.setRotationSnap=function(e){r.rotationSnap=e},this.setScaleSnap=function(e){r.scaleSnap=e},this.setSize=function(e){r.size=e},this.setSpace=function(e){r.space=e},this.update=function(){console.warn("THREE.TransformControls: update function has no more functionality and therefore has been deprecated.")}}function zw(s){K.call(this),this.type="TransformControlsGizmo";var e=new L({depthTest:!(this.hideAxis={}),depthWrite:!1,transparent:!0,side:ve,fog:!1}),t=new vl({depthTest:!1,depthWrite:!1,transparent:!0,fog:!1}),n=e.clone(),i=(n.opacity=.15,e.clone());i.opacity=.1;(x=e.clone()).color.set(16711680);var r=e.clone(),a=(r.color.set(65280),e.clone()),o=(a.color.set(255),e.clone()),l=(o.opacity=.35,o.color.set(53501),o.clone());function u(e,t){for(var n=new j,i=[],r=0;r<=64*t;++r)i.push(0,Math.cos(r/32*Math.PI)*e,Math.sin(r/32*Math.PI)*e);return n.setAttribute("position",new Q(new Float32Array(i),3)),n}function c(e){var t,n=new K;for(t in e)for(var i=e[t].length;i--;){var r=e[t][i][0].clone(),a=e[t][i][1],o=e[t][i][2],s=e[t][i][3],l=e[t][i][4],l=(r.name=t,r.tag=l,a&&r.position.set(a[0],a[1],a[2]),o&&r.rotation.set(o[0],o[1],o[2]),s&&r.scale.set(s[0],s[1],s[2]),r.updateMatrix(),r.geometry.clone());l.applyMatrix4(r.matrix),r.geometry=l,r.renderOrder=1/0,r.position.set(0,0,0),r.rotation.set(0,0,0),r.scale.set(1,1,1),n.add(r)}return n}l.color.set(16776960),(g=o.clone()).color.set(65535),(A=o.clone()).color.set(16711935),e.clone().color.set(16776960);(e=t.clone()).color.set(16711680);var h=t.clone(),d=(h.color.set(65280),t.clone());d.color.set(255),(w=t.clone()).color.set(65535);(y=t.clone()).color.set(16711935);var p=t.clone();p.color.set(16776960),(t=t.clone()).color.set(7895160);(b=p.clone()).opacity=.25;var f=new Wl(0,.05,.2,12,1,!1),m=new sa(.125,.125,.125),v=new j,f=(v.setAttribute("position",new Q(new Float32Array([0,0,0,1,0,0]),3)),{X:[[new Z(f,x),[1,0,0],[0,0,-Math.PI/2],null,"fwd"],[new xl(v,e)]],Y:[[new Z(f,r),[0,1,0],null,null,"fwd"],[new xl(v,h),null,[0,0,Math.PI/2]]],Z:[[new Z(f,a),[0,0,1],[Math.PI/2,0,0],null,"fwd"],[new xl(v,d),null,[0,-Math.PI/2,0]]],XY:[[new Z(new Ba(.295,.295),l.clone()),[.15,.15,0]],[new xl(v,p),[.18,.3,0],null,[.125,1,1]],[new xl(v,p),[.3,.18,0],[0,0,Math.PI/2],[.125,1,1]]],YZ:[[new Z(new Ba(.295,.295),g.clone()),[0,.15,.15],[0,Math.PI/2,0]],[new xl(v,w),[0,.18,.3],[0,0,Math.PI/2],[.125,1,1]],[new xl(v,w),[0,.3,.18],[0,-Math.PI/2,0],[.125,1,1]]],XZ:[[new Z(new Ba(.295,.295),A.clone()),[.15,0,.15],[-Math.PI/2,0,0]],[new xl(v,y),[.18,0,.3],null,[.125,1,1]],[new xl(v,y),[.3,0,.18],[0,-Math.PI/2,0],[.125,1,1]]]}),g={X:[[new Z(new Wl(.2,0,1,4,1,!1),n),[.6,0,0],[0,0,-Math.PI/2]]],Y:[[new Z(new Wl(.2,0,1,4,1,!1),n),[0,.6,0]]],Z:[[new Z(new Wl(.2,0,1,4,1,!1),n),[0,0,.6],[Math.PI/2,0,0]]],XY:[[new Z(new Ba(.4,.4),n),[.2,.2,0]]],YZ:[[new Z(new Ba(.4,.4),n),[0,.2,.2],[0,Math.PI/2,0]]],XZ:[[new Z(new Ba(.4,.4),n),[.2,0,.2],[-Math.PI/2,0,0]]]},A={START:[[new Z(new Du(.01,2),i),null,null,null,"helper"]],END:[[new Z(new Du(.01,2),i),null,null,null,"helper"]],DELTA:[[new xl(((w=new j).setAttribute("position",new Q(new Float32Array([0,0,0,1,1,1]),3)),w),i),null,null,null,"helper"]],X:[[new xl(v,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new xl(v,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new xl(v,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},y=s.rotFullCircle?1:.5,w={X:[[new xl(u(1,y),e)],[new Z(new Du(.04,0),x),[0,0,.99],null,[1,3,1]]],Y:[[new xl(u(1,y),h),null,[0,0,-Math.PI/2]],[new Z(new Du(.04,0),r),[0,0,.99],null,[3,1,1]]],Z:[[new xl(u(1,y),d),null,[0,Math.PI/2,0]],[new Z(new Du(.04,0),a),[.99,0,0],null,[1,3,1]]],E:[[new xl(u(1.25,1),b),null,[0,Math.PI/2,0]],[new Z(new Wl(.03,0,.15,4,1,!1),b),[1.17,0,0],[0,0,-Math.PI/2],[1,1,.001]],[new Z(new Wl(.03,0,.15,4,1,!1),b),[-1.17,0,0],[0,0,Math.PI/2],[1,1,.001]],[new Z(new Wl(.03,0,.15,4,1,!1),b),[0,-1.17,0],[Math.PI,0,0],[1,1,.001]],[new Z(new Wl(.03,0,.15,4,1,!1),b),[0,1.17,0],[0,0,0],[1,1,.001]]],XYZE:[[new xl(u(1,1),t),null,[0,Math.PI/2,0]]]},y={AXIS:[[new xl(v,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]]},b={X:[[new Z(new Ju(1,.1,4,24),n),[0,0,0],[0,-Math.PI/2,-Math.PI/2]]],Y:[[new Z(new Ju(1,.1,4,24),n),[0,0,0],[Math.PI/2,0,0]]],Z:[[new Z(new Ju(1,.1,4,24),n),[0,0,0],[0,0,-Math.PI/2]]],E:[[new Z(new Ju(1.25,.1,2,24),n)]],XYZE:[[new Z(new zu(.7,10,8),n)]]},t={X:[[new Z(m,x),[.8,0,0],[0,0,-Math.PI/2]],[new xl(v,e),null,null,[.8,1,1]]],Y:[[new Z(m,r),[0,.8,0]],[new xl(v,h),null,[0,0,Math.PI/2],[.8,1,1]]],Z:[[new Z(m,a),[0,0,.8],[Math.PI/2,0,0]],[new xl(v,d),null,[0,-Math.PI/2,0],[.8,1,1]]],XY:[[new Z(m,l),[.85,.85,0],null,[2,2,.2]],[new xl(v,p),[.855,.98,0],null,[.125,1,1]],[new xl(v,p),[.98,.855,0],[0,0,Math.PI/2],[.125,1,1]]],XYZY:[[new Z(new sa(.125,.125,.125),o.clone()),[0,1.1,0]]]},x={X:[[new Z(new Wl(.2,0,.8,4,1,!1),n),[.5,0,0],[0,0,-Math.PI/2]]],Y:[[new Z(new Wl(.2,0,.8,4,1,!1),n),[0,.5,0]]],Z:[[new Z(new Wl(.2,0,.8,4,1,!1),n),[0,0,.5],[Math.PI/2,0,0]]],XY:[[new Z(m,n),[.85,.85,0],null,[3,3,.2]]],XYZY:[[new Z(new sa(.2,.2,.2),n),[0,1.1,0]]]},e={X:[[new xl(v,i.clone()),[-1e3,0,0],null,[1e6,1,1],"helper"]],Y:[[new xl(v,i.clone()),[0,-1e3,0],[0,0,Math.PI/2],[1e6,1,1],"helper"]],Z:[[new xl(v,i.clone()),[0,0,-1e3],[0,-Math.PI/2,0],[1e6,1,1],"helper"]]},E=new Re(0,0,0),C=new ki,B=new Re(0,1,0),_=new Re(0,0,0),M=new _e,T=new X,S=new X,I=new X,D=new Re(1,0,0),P=new Re(0,1,0),k=new Re(0,0,1);this.gizmo={},this.picker={},this.helper={},this.add(this.gizmo.translate=c(f)),this.add(this.gizmo.rotate=c(w)),this.add(this.gizmo.scale=c(t)),this.add(this.picker.translate=c(g)),this.add(this.picker.rotate=c(b)),this.add(this.picker.scale=c(x)),this.add(this.helper.translate=c(A)),this.add(this.helper.rotate=c(y)),this.add(this.helper.scale=c(e)),this.picker.translate.visible=!1,this.picker.rotate.visible=!1,this.picker.scale.visible=!1,this.updateMatrixWorld=function(){if(this.parent.visible){var e=this.space,t="local"===(e="scale"===this.mode?"local":e)?this.worldQuaternion:I,n=(this.gizmo.translate.visible="translate"===this.mode,this.gizmo.rotate.visible="rotate"===this.mode,this.gizmo.scale.visible="scale"===this.mode,this.helper.translate.visible="translate"===this.mode,this.helper.rotate.visible="rotate"===this.mode,this.helper.scale.visible="scale"===this.mode,[]);n=(n=(n=n.concat(this.picker[this.mode].children)).concat(this.gizmo[this.mode].children)).concat(this.helper[this.mode].children);for(var i=0;i<n.length;i++){var r,a,o=n[i];this.hideAxis[this.mode]&&this.hideAxis[this.mode].some(function(e){return o.name.includes(e.toUpperCase())})?viewer.updateVisible(o,"hidden",!1):(r=!0,o.rotation.set(0,0,0),o.position.copy(this.worldPosition),a="OrthographicCamera"==this.camera.type?800/this.camera.zoom:this.worldPosition.distanceTo(this.cameraPosition),o.scale.set(1,1,1).multiplyScalar(a*this.size/7),"helper"===o.tag?(r=!1,"AXIS"===o.name?(o.position.copy(this.worldPositionStart),r=!!this.axis,"X"===this.axis&&(T.setFromEuler(C.set(0,0,0)),o.quaternion.copy(t).multiply(T),.9<Math.abs(B.copy(D).applyQuaternion(t).dot(this.eye)))&&(r=!1),"Y"===this.axis&&(T.setFromEuler(C.set(0,0,Math.PI/2)),o.quaternion.copy(t).multiply(T),.9<Math.abs(B.copy(P).applyQuaternion(t).dot(this.eye)))&&(r=!1),"Z"===this.axis&&(T.setFromEuler(C.set(0,Math.PI/2,0)),o.quaternion.copy(t).multiply(T),.9<Math.abs(B.copy(k).applyQuaternion(t).dot(this.eye)))&&(r=!1),"XYZE"===this.axis&&(T.setFromEuler(C.set(0,Math.PI/2,0)),B.copy(this.rotationAxis),o.quaternion.setFromRotationMatrix(M.lookAt(_,B,P)),o.quaternion.multiply(T),r=this.dragging),"E"===this.axis&&(r=!1)):"START"===o.name?(o.position.copy(this.worldPositionStart),r=this.dragging):"END"===o.name?(o.position.copy(this.worldPosition),r=this.dragging):"DELTA"===o.name?(o.position.copy(this.worldPositionStart),o.quaternion.copy(this.worldQuaternionStart),E.set(1e-10,1e-10,1e-10).add(this.worldPositionStart).sub(this.worldPosition).multiplyScalar(-1),E.applyQuaternion(this.worldQuaternionStart.clone().invert()),o.scale.copy(E),r=this.dragging):(o.quaternion.copy(t),this.dragging?o.position.copy(this.worldPositionStart):o.position.copy(this.worldPosition),this.axis&&(r=-1!==this.axis.search(o.name))),viewer.updateVisible(o,"hidden",!!r)):(o.quaternion.copy(t),"translate"===this.mode||"scale"===this.mode?(s.dontHideWhenFaceCamera||("X"!==o.name&&"XYZX"!==o.name||.99<Math.abs(B.copy(D).applyQuaternion(t).dot(this.eye))&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"Y"!==o.name&&"XYZY"!==o.name||.99<Math.abs(B.copy(P).applyQuaternion(t).dot(this.eye))&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"Z"!==o.name&&"XYZZ"!==o.name||.99<Math.abs(B.copy(k).applyQuaternion(t).dot(this.eye))&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"XY"===o.name&&Math.abs(B.copy(k).applyQuaternion(t).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"YZ"===o.name&&Math.abs(B.copy(D).applyQuaternion(t).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),r=!1),"XZ"===o.name&&Math.abs(B.copy(P).applyQuaternion(t).dot(this.eye))<.2&&(o.scale.set(1e-10,1e-10,1e-10),r=!1)),-1!==o.name.search("X")&&B.copy(D).applyQuaternion(t).dot(this.eye)<0&&(o.scale.x*=-1),-1!==o.name.search("Y")&&B.copy(P).applyQuaternion(t).dot(this.eye)<0&&(o.scale.y*=-1),-1!==o.name.search("Z")&&B.copy(k).applyQuaternion(t).dot(this.eye)<0&&(o.scale.z*=-1)):"rotate"===this.mode&&(S.copy(t),B.copy(this.eye).applyQuaternion(T.copy(t).invert()),-1!==o.name.search("E")&&o.quaternion.setFromRotationMatrix(M.lookAt(this.eye,_,P)),"X"===o.name&&(T.setFromAxisAngle(D,Math.atan2(-B.y,B.z)),T.multiplyQuaternions(S,T),o.quaternion.copy(T)),"Y"===o.name&&(T.setFromAxisAngle(P,Math.atan2(B.x,B.z)),T.multiplyQuaternions(S,T),o.quaternion.copy(T)),"Z"===o.name)&&(T.setFromAxisAngle(k,Math.atan2(B.y,B.x)),T.multiplyQuaternions(S,T),o.quaternion.copy(T)),r=(r=(r=(r=r&&(-1===o.name.indexOf("X")||this.showX))&&(-1===o.name.indexOf("Y")||this.showY))&&(-1===o.name.indexOf("Z")||this.showZ))&&(-1===o.name.indexOf("E")||this.showX&&this.showY&&this.showZ),viewer.updateVisible(o,"hidden",!!r),o.material._opacity=o.material._opacity||o.material.opacity,o.material._color=o.material._color||o.material.color.clone(),o.material.color.copy(o.material._color),o.material.opacity=o.material._opacity,this.enabled?this.axis&&(o.name===this.axis||this.axis.split("").some(function(e){return o.name===e})?o.material.opacity=1:o.material.opacity*=.25,o.material.color.lerp(new Me(1,1,1),.5)):(o.material.opacity*=.5,o.material.color.lerp(new Me(1,1,1),.5))))}K.prototype.updateMatrixWorld.call(this)}}}function Hw(e){Z.call(this,new Ba(1e5,1e5,2,2),new L({color:"#ff0000",visible:!1,wireframe:!1,side:ve,transparent:!0,opacity:.2})),this.type="TransformControlsPlane";var t=new Re(1,0,0),n=new Re(0,1,0),i=new Re(0,0,1),r=new Re,a=new Re,o=new Re,s=new _e,l=new X;this.updateMatrixWorld=function(){if(this.visible){var e=this.space;switch(this.position.copy(this.worldPosition),"scale"===this.mode&&(e="local"),t.set(1,0,0).applyQuaternion("local"===e?this.worldQuaternion:l),n.set(0,1,0).applyQuaternion("local"===e?this.worldQuaternion:l),i.set(0,0,1).applyQuaternion("local"===e?this.worldQuaternion:l),o.copy(n),this.mode){case"translate":case"scale":switch(this.axis){case"X":o.copy(this.eye).cross(t),a.copy(t).cross(o);break;case"Y":o.copy(this.eye).cross(n),a.copy(n).cross(o);break;case"Z":o.copy(this.eye).cross(i),a.copy(i).cross(o);break;case"XY":a.copy(i);break;case"YZ":a.copy(t);break;case"XZ":o.copy(i),a.copy(n);break;default:a.set(0,0,0)}break;default:a.set(0,0,0)}0===a.length()?this.quaternion.copy(this.cameraQuaternion):(s.lookAt(r.set(0,0,0),a,o),this.quaternion.setFromRotationMatrix(s)),K.prototype.updateMatrixWorld.call(this)}}}var Qw,Vw,jw={bus:new zn,selectedDatasets:[],changeCallback:function(t){var n=this;viewer.controls.setTarget(this.box.position),Potree.settings.isOfficial&&ag.intervalTool.isWaiting("clipSelectedDatasets",function(){var e=n.getIntersectPointcloud();if(t||ag.getDifferenceSet(e,n.selectedDatasets).length)return n.selectedDatasets=e,n.bus.dispatchEvent({type:"updateSelectedDatasets",selectedDatasets:e.map(function(e){return e.dataset_id})}),!(t=!1)},300)},enter:function(){var n=this;this.previousView={position:viewer.images360.position,target:viewer.scene.view.getPivot(),displayMode:Potree.settings.displayMode,ifShowMarker:Potree.settings.ifShowMarker};function i(){n.box.rotation.x=0,n.box.rotation.y=0}var r,e=this.getPointcloud().bound,t=e.getSize(new Re),e=this.getTarget(e.getCenter(new Re)),t=new Re(16,16,t.z),a=viewer.scene.view.direction.clone().setZ(0).multiplyScalar(-16),o=(new Re).addVectors(e,a);Potree.settings.displayMode="showPointCloud",viewer.setView({position:o,target:e,duration:300,callback:function(){}}),viewer.setLimitFar(!1),this.box=new fg({clip:!0}),this.box.clipTask=om.SHOW_INSIDE_Big,this.box.showBox=!1,this.box.name="ClipBox",this.box.position.copy(e),this.box.scale.copy(t),this.box.addEventListener("position_changed",function(e){n.mapBox.center.setX(n.box.position.x),n.mapBox.center.setY(n.box.position.y),n.mapBox.updatePoints(),n.changeCallback()}),this.box.addEventListener("scale_changed",function(e){var t=n.box.scale;n.mapBox.updatePoints(t),n.changeCallback()}),this.box.addEventListener("orientation_changed",function(e){n.mapBox.angle=n.box.rotation.z,n.mapBox.rotateBar.rotation.z=n.mapBox.angle,n.mapBox.updatePoints(),n.changeCallback()}),viewer.scene.addVolume(this.box),this.mapBox=new Ow(e,t),viewer.mapViewer.scene.add(this.mapBox),this.mapBox.addEventListener("repos",function(e){n.box.position.setX(n.mapBox.center.x),n.box.position.setY(n.mapBox.center.y),i(),n.changeCallback()}),this.mapBox.addEventListener("dragChange",function(e){var t=n.mapBox.getScale();n.box.scale.setX(t.x),n.box.scale.setY(t.y),n.box.position.setX(n.mapBox.center.x),n.box.position.setY(n.mapBox.center.y),i(),n.changeCallback()}),this.mapBox.addEventListener("rotate",function(e){n.box.rotation.z=n.mapBox.angle,i(),n.changeCallback()}),Potree.settings.unableNavigate=!0,Potree.settings.ifShowMarker=!1,viewer.updateVisible(viewer.measuringTool.scene,"clipModel",!1),viewer.inputHandler.toggleSelection(this.box),viewer.inputHandler.fixSelection=!0,viewer.transformationTool.frame.material.color.set(Potree.config.clip.color),viewer.setPointStandardMat(!0);this.events={flyToPos:function(e){e.position;var t=n.box.position;o=e.position;viewer.scene.view.setView({position:o,duration:1e3,target:t})},mapVisiChange:function(e){r=e.visible;setTimeout(function(){var e,t,n=jw.box.boundingBox.clone().applyMatrix4(jw.box.matrixWorld);r?(0!=jw.switchMapCount&&Potree.Utils.isInsideFrustum(n,viewer.mapViewer.camera)||(e=n.getSize(new Re),t=viewer.mainViewport.resolution.clone().multiplyScalar(.3),viewer.mapViewer.moveTo(jw.box.position,e,100,t)),jw.switchMapCount++):Potree.Utils.isInsideFrustum(n,viewer.scene.getActiveCamera())||viewer.focusOnObject({boundingBox:n},"boundingBox",100)},100)}},this.switchMapCount=0,this.bus.addEventListener("flyToPos",this.events.flyToPos),viewer.mapViewer.addEventListener("forceVisible",this.events.mapVisiChange),this.editing=!0,setTimeout(function(){n.changeCallback(!0)},1)},leave:function(){viewer.inputHandler.fixSelection=!1,viewer.scene.removeVolume(this.box),this.mapBox.dispose(),Potree.settings.unableNavigate=!1,Potree.settings.ifShowMarker=this.previousView.ifShowMarker,viewer.updateVisible(viewer.measuringTool.scene,"clipModel",!0),viewer.setView(this.previousView),viewer.setLimitFar(!0),viewer.setPointStandardMat(!1),viewer.controls.setTarget(null),this.bus.removeEventListener("flyToPos",this.events.flyToPos),viewer.mapViewer.removeEventListener("forceVisible",this.events.mapVisiChange),this.events=null,this.editing=!1},getPointcloud:function(){var e=viewer.scene.pointclouds.filter(function(e){return 0<e.panos.length});return 0==e.length&&(e=viewer.scene.pointclouds),ag.sortByScore(e,[],[function(e){var t=e.bound.getCenter(new Re);return e.bound.getSize(new Re).length()/2/viewer.images360.position.distanceTo(t)}])[0].item},getTarget:function(e){var t=new Re,n=viewer.images360.position,n=ag.find(viewer.images360.panos,[],[cy.sortFunctions.floorDisSquaredToPoint(n)]);return n?(t.copy(n.position),t.setZ(e.z)):t.copy(e),t},download:function(){var n=this;return 0==this.getIntersectPointcloud().length?null:{transformation_matrix:viewer.scene.pointclouds.filter(function(e){return viewer.getObjVisiByReason(e,"datasetSelection")}).map(function(t){return{id:t.dataset_id,matrix:n.getTransformationMatrix(t).elements,VisiMatrixes:t.material.clipBoxes_in.map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),UnVisiMatrixes:t.material.clipBoxes_out.map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),modelMatrix:(new _e).copy(t.transformMatrix).transpose().elements}}),aabb:"b-0.5 -0.5 -0.5 0.5 0.5 0.5"}},downloadNoCrop:function(){var e={transformation_matrix:viewer.scene.pointclouds.filter(function(e){return viewer.getObjVisiByReason(e,"datasetSelection")}).map(function(e){return{id:e.dataset_id,matrix:(new _e).elements,modelMatrix:(new _e).copy(e.transformMatrix).transpose().elements}}),aabb:"b-12742000 -12742000 -12742000 12742000 12742000 12742000"};return console.log(e),e},getTransformationMatrix:function(e,t){t=t||this.box.matrixWorld.clone().invert();return(new _e).multiplyMatrices(t,e.transformMatrix).transpose()},getIntersectPointcloud:function(){var t=this;return viewer.scene.pointclouds.filter(function(e){if(e.intersectBox(t.box.matrixWorld))return!0})}},Ww=[{left:.5,bottom:.5,width:.5,height:.5,name:"MainView",active:!0},{left:0,bottom:.5,width:.5,height:.5,name:"top",name2:"mapViewport",axis:["x","y"],direction:new Re(0,0,-1),active:!0},{left:.5,bottom:0,width:.5,height:.5,name:"right",axis:["y","z"],direction:new Re(1,0,0),active:!0},{left:0,bottom:0,width:.5,height:.5,name:"back",axis:["x","z"],direction:new Re(0,-1,0),active:!0}],Jw=new Mw,qw=(Jw.split=function(){viewer.scene.getActiveCamera();function t(){var t=this;viewer.scene.pointclouds.forEach(function(e){"MainView"==t.name?(e.material.activeAttributeName=n.colorType,e.material.useFilterByNormal=!1,e.changePointOpacity(n.opacity.get(e)),Potree.settings.pointDensity="fourViewportsMain"):(e.material.activeAttributeName="color",e.material.useFilterByNormal=!0,Potree.settings.pointDensity="fourViewports",e.changePointOpacity("mapViewport"==t.name?.6:.06))})}var e=viewer.bound,e=(e.boundSize,e.center,viewer.setLimitFar(!1),viewer.mapViewer.attachToMainViewer(!0,"split4Screens","dontSet"),this.splitStart(Ww)),n=(viewer.mapViewer.viewports[0].noPointcloud=!1,this.statesBefore={pointDensity:Potree.settings.pointDensity,displayMode:Potree.settings.displayMode,position:viewer.images360.position,target:viewer.scene.view.getPivot()},viewer.setPointStandardMat(!0,null,!0),{opacity:new Map});new Map,viewer.scene.pointclouds.forEach(function(e){n.opacity.set(e,e.temp.pointOpacity),n.colorType=e.material.activeAttributeName});e.forEach(function(e){e.beforeRender=t}),this.enableMap(!1),this.enableFloorplan(!1),viewer.mapViewer.setViewLimit("expand"),Potree.settings.displayMode="showPointCloud"},Jw.recover=function(){this.unSplit(),viewer.setView({position:this.statesBefore.position,target:this.statesBefore.target,duration:300,callback:function(){}}),viewer.mainViewport.beforeRender=null,viewer.setLimitFar(!0);var e=viewer.mapViewer.viewports[0];viewer.mapViewer.attachToMainViewer(!1),e.noPointcloud=!0,this.enableMap(Potree.settings.mapEnable),this.enableFloorplan(Potree.settings.floorplanEnable),this.floorplanListener&&(viewer.mapViewer.mapLayer.removeEventListener("floorplanLoaded",this.floorplanListener),this.floorplanListener=null),Potree.settings.pointDensity=this.statesBefore.pointDensity,Potree.settings.isOfficial||(Potree.settings.displayMode=this.statesBefore.displayMode),viewer.scene.pointclouds.forEach(function(e){e.material.useFilterByNormal=!1}),viewer.setPointStandardMat(!1),viewer.mapViewer.setViewLimit("standard")},Jw.updateMapViewerBG=function(){var e=viewer.mapViewer.viewports[0];this.floorplanEnabled||this.mapEnabled?(e.background="overlayColor",e.backgroundColor=new Me(0,0,0),e.backgroundOpacity=.5):(e.background=null,e.backgroundColor=null,e.backgroundOpacity=null)},Jw.setFloorplanDisplay=function(e){e.floorplan.setEnable(1<arguments.length&&void 0!==arguments[1]&&arguments[1])},Jw.enableMap=function(e){viewer.mapViewer.mapLayer.maps.find(function(e){return"map"==e.name}).setEnable(!!e),this.mapEnabled=e,this.updateMapViewerBG()},Jw.enableFloorplan=function(t){var n=this,e=viewer.mapViewer.mapLayer.maps.filter(function(e){return e.name.includes("floorplan")});this.floorplanListener&&viewer.mapViewer.mapLayer.removeEventListener("floorplanLoaded",this.floorplanListener),this.floorplanListener=function(e){n.setFloorplanDisplay(e,t)},viewer.mapViewer.mapLayer.addEventListener("floorplanLoaded",this.floorplanListener),t?e.forEach(function(e){return n.setFloorplanDisplay({floorplan:e},!0)}):e.forEach(function(e){return n.setFloorplanDisplay({floorplan:e},!1)}),t&&0==e.length&&Potree.loadMapEntity("all",!0),this.floorplanEnabled=t,this.updateMapViewerBG()},Jw.focusOnPointCloud=function(e){e.bound.getSize(new Re);var t=e.bound.getCenter(new Re),n=e.panosBound&&e.panosBound.center;this.focusOnObject(e.bound,t,n),viewer.flyToDataset({pointcloud:e,dontMoveMap:!0,duration:0})},Jw.focusOnObject=function(t,n,e){var i=this;viewer.viewports.forEach(function(e){"MainView"!=e.name&&i.viewportFitBound(e,t,n)})},{SplitScreen:Jw,handleState:null,bus:new zn,history:new og({applyData:function(e){e.forEach(function(e){qw.applyTemp(e)})},getData:function(e){return qw.getTemp(e)}}),applyTemp:function(t){var e=viewer.scene.pointclouds.find(function(e){return e.dataset_id+e.name==t.sid});e.orientationUser=t.orientationUser,e.translateUser=t.translateUser,this.setMatrix(e)},getTemp:function(e){return(e=e||viewer.scene.pointclouds).map(function(e){return{sid:e.dataset_id+e.name,orientationUser:e.orientationUser,translateUser:e.translateUser.clone()}})},init:function(){function e(e){var t;!e.drag&&o.editing&&(t=qw.handleState,e.hoverViewport.alignment&&t&&e.hoverViewport.alignment[t]?"translate"==t?e.intersect&&e.intersect.location?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"movePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}):"rotate"==t&&(e.intersect&&e.intersect.location?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"rotatePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})):(viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})))}var a,o=this;viewer.fpControls.addEventListener("transformPointcloud",function(t){if(t.pointclouds[0].dataset_id==Potree.settings.originDatasetId)return o.bus.dispatchEvent("forbitMoveOriginDataset");var n,i,e,r;o.history.beforeChange(t.pointclouds),a=a||{pointclouds:t.pointclouds},"translate"==o.handleState?t.pointclouds.forEach(function(e){return qw.translate(e,t.moveVec)}):"rotate"==o.handleState&&("pano"==Potree.settings.editType?(n=t.pointclouds[0].translateUser,t.intersect.equals(n)||(a.vecStart?(e=(new Re).subVectors(t.intersect,n).setZ(0),e=ee.getAngle(a.vecStart,e,"z"),i=a.orientationUser+e-a.pointclouds[0].orientationUser,a.pointclouds.forEach(function(e){qw.rotateAround(n,e,null,i)})):(a.orientationUser=t.pointclouds[0].orientationUser,a.vecStart=(new Re).subVectors(t.intersectStart,n).setZ(0)))):(e=t.pointclouds[0].translateUser,t.intersect.equals(e)||(a.vecStart?(r=(new Re).subVectors(t.intersect,e).setZ(0),r=ee.getAngle(a.vecStart,r,"z"),r=a.orientationUser+r-a.pointclouds[0].orientationUser,qw.rotate(a.pointclouds[0],null,r)):(a.orientationUser=t.pointclouds[0].orientationUser,a.vecStart=(new Re).subVectors(t.intersectStart,e).setZ(0)))))}),viewer.fpControls.addEventListener("end",function(e){a&&o.history.afterChange(a.pointclouds),a=null}),viewer.inputHandler.addEventListener("keydown",function(e){90==e.keyCode&&e.event.ctrlKey?o.history.undo():89==e.keyCode&&e.event.ctrlKey&&o.history.redo()});viewer.addEventListener("global_mousemove",e),viewer.addEventListener("global_drop",e),viewer.addEventListener("updateModelBound",function(e){o.editing&&o.SplitScreen.updateCameraOutOfModel()})},setMatrix:function(e){var t=e.position,n=e.translateUser,i=e.orientationUser,t=(new _e).setPosition(t),i=(new _e).makeRotationAxis(new Re(0,0,1),i),n=(new _e).setPosition(n),n=(new _e).multiplyMatrices(n,i);e.transformMatrix=n.clone(),e.transformInvMatrix.copy(n).invert(),e.rotateMatrix=i,e.rotateInvMatrix.copy(i).invert(),e.panos.forEach(function(e){return e.transformByPointcloud()}),n=(new _e).multiplyMatrices(n,t),e.matrix=n,e.updateMatrixWorld(!0),this.editing&&qw.changeCallBack&&qw.changeCallBack(),e.spriteNodeRoot&&e.spriteNodeRoot.matrixWorld.copy(e.matrixWorld),viewer.updateModelBound(),e.getPanosBound()},rotateAround:function(e,t,n,i){var i=null!=i?i:Be.degToRad(n),e=(new Re).subVectors(t.translateUser,e),r=(new _e).makeRotationAxis(new Re(0,0,1),i),r=e.clone().applyMatrix4(r),r=(new Re).subVectors(r,e);this.rotate(t,n,i),this.translate(t,r)},rotate:function(e,t,n){n=null!=n?n:Be.degToRad(t);e.orientationUser+=n,qw.setMatrix(e)},translate:function(e,t){e.translateUser.add(t),qw.setMatrix(e)},enter:function(){this.originData=this.getTemp(),this.SplitScreen.split({alignment:!0}),viewer.images360.panos.forEach(function(e){viewer.updateVisible(e.mapMarker,"split4Screens",!1)}),viewer.viewports.find(function(e){return"mapViewport"==e.name}).alignment={rotate:!0,translate:!0},viewer.viewports.find(function(e){return"right"==e.name}).alignment={translate:!0,translateVec:new Re(0,0,1)},viewer.viewports.find(function(e){return"back"==e.name}).alignment={translate:!0,translateVec:new Re(0,0,1)},this.editing=!0,viewer.updateFpVisiDatasets()},leave:function(){var t=this;this.switchHandle(null),this.originData.forEach(function(e){t.applyTemp(e)}),this.SplitScreen.recover(),viewer.images360.panos.forEach(function(e){viewer.updateVisible(e.mapMarker,"split4Screens",!0)}),this.editing=!1,this.history.clear(),viewer.updateFpVisiDatasets(),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})},switchHandle:function(e){this.handleState=e,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"}),this.bus.dispatchEvent({type:"switchHandle",state:e})},save:function(){function e(){t.originData=t.getTemp(),viewer.scene.measurements.forEach(function(e){return e.transformByPointcloud()}),viewer.images360.updateCube(viewer.bound)}var t=this,n=viewer.scene.pointclouds.map(function(e){var t=viewer.transform.lonlatToLocal.inverse(e.translateUser.clone());return{id:e.dataset_id,orientation:e.orientationUser,location:[t.x,t.y,t.z]}});return Potree.settings.isOfficial||e(),{data:n,callback:e}}}),Xw=new Nc,Yw={width2d:35},Kw=new Me("#FFF"),Zw=function(){y(a,Gv);var t=C(a);function a(e){var n;return te(this,a),e.dimension="3d",(n=t.call(this,"siteModel_"+e.buildType,e)).midMarkers=[],n.buildChildren=[],n.holes=[],n.parentHoles=[],n.mats={},n.panos=n.panos||[],n.center,"floor"==n.buildType&&(n.points=e.points=n.buildParent.points,n.buildParent.holes.forEach(function(e){var t=new a({buildType:"hole",buildParent:G(n),originHole:e,ifDraw:n.ifDraw||Potree.settings.drawEntityData});n.parentHoles.push(t),n.add(t),t.points=e.points})),"room"!=n.buildType&&"hole"!=n.buildType||(n.restrictArea=n.buildParent),n.ifDraw&&("hole"!=n.buildType&&(n.box=n.createBox(),n.add(n.box)),n.lineMesh=Fv.createLine([],{color:Kw}),n.lineMesh.name="buildingLines",n.lineMesh.visible=!1,n.add(n.lineMesh),viewer.setObjectLayers(n.lineMesh,"bothMapAndScene"),n.addEventListener("dragChange",function(e){n.updateTwoMidMarker(e.index)})),n.initData(e),n}return A(a,[{key:"initData",value:function(e){e.ifDraw?k(_(a.prototype),"initData",this).call(this,e):e.points&&(this.points=e.points)}},{key:"intersectPointcloudVolume",value:function(e){var t,n,i,r,a,o,s=this.getBound(),l=e.bound;return s.intersectsBox(l)?(t=(s=this.getRealZ()).zMin,s=s.zMax,r=Math.min(t,l.min.z),i=Math.max(s,l.max.z),s=s-t+(l.max.z-l.min.z)-(i-r),t=e.getUnrotBoundPoint(),n=0,l=this.getArea(),i=Math.abs(ee.getArea(t)),ee.getPolygonsMixedRings([this.points,t]).forEach(function(e){n+=e.area}),r=0,e=this.holes.concat(this.parentHoles),(a=o=0)<e.length&&(o=this.getHolesArea(),e=[].concat([t]),ee.getPolygonsMixedRings(e).forEach(function(e){a+=e.area}),r=o+i-a),(l+i-n-r)*s):0}},{key:"addHole",value:function(){var n=this,i=new a({buildType:"hole",zMin:this.zMin,zMax:this.zMax,points:0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],buildParent:this,ifDraw:this.ifDraw||Potree.settings.drawEntityData});return this.holes.push(i),"building"==this.buildType&&this.buildChildren.forEach(function(e){var t=new a({buildType:"hole",zMin:n.zMin,zMax:n.zMax,buildParent:e,originHole:i,ifDraw:n.ifDraw||Potree.settings.drawEntityData});e.parentHoles.push(t),e.add(t),t.points=i.points}),this.add(i),this.update(),i}},{key:"removeHole",value:function(e){var i=this,t=(e.dispose(),"building"==this.buildType&&this.buildChildren.forEach(function(e){var t=e.parentHoles.find(function(e){return e.originHole==i}),n=e.parentHoles.indexOf(t);-1<n&&e.parentHoles.splice(n,1),t.dispose()}),this.holes.indexOf(e));-1<t&&this.holes.splice(t,1),this.remove(e),this.update()}},{key:"createBox",value:function(){var e=new Hl,e=(this.mats.boxDefault=Gw(this.buildType),this.mats.boxSelected=Gw(this.buildType+"Select"),new Z(e,this.mats.boxDefault));return e.name="buildingBox","floor"==this.buildType?viewer.setObjectLayers(e,"siteModelMapUnvisi"):viewer.setObjectLayers(e,"bothMapAndScene"),e}},{key:"addMarker",value:function(){var n,i=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};if("floor"!=this.buildType)return n=new Jm({mat:this.getMarkerMaterial("default"),renderOrder:3,sizeInfo:Yw,dontFixOrient:!0,name:"building_marker"}),viewer.setObjectLayers(n,"siteModeOnlyMapVisi"),e.marker=n,k(_(a.prototype),"addMarker",this).call(this,e),this.selected||viewer.updateVisible(n,"select",!1),n.addEventListener("addHoverEvent",function e(t){n.addEventListener("click",function(e){i.dispatchEvent({type:"clickMarker",marker:n})}),n.addEventListener("clickSelect",function(e){i.setMarkerSelected(n,e.state?"select":"unselect")}),n.removeEventListener("addHoverEvent",e)}),this.isNew||n.dispatchEvent("addHoverEvent"),n}},{key:"removeMarker",value:function(e){var t=this;k(_(a.prototype),"removeMarker",this).call(this,e),this.isNew||(this.midMarkers.forEach(function(e){return t.remove(e)}),this.midMarkers=[],this.addMidMarkers()),this.update(),2==this.points.length&&this.box&&(this.box.geometry=new Hl)}},{key:"addMidMarker",value:function(e,t){var i,r=this;if("floor"!=this.buildType)return i=new Jm({mat:this.getMarkerMaterial("midPrepare"),sizeInfo:Yw,dontFixOrient:!0,name:"building_midMarker"}),this.midMarkers=[].concat(J(this.midMarkers.slice(0,e)),[i],J(this.midMarkers.slice(e,this.midMarkers.length))),i.renderOrder=3,viewer.setObjectLayers(i,"siteModeOnlyMapVisi"),i.addEventListener("drag",function(e){var t=r.midMarkers.indexOf(i),n=r.addMarker({index:t+1,point:i.position.clone()});r.addMidMarker(t+1,new Re),r.updateTwoMidMarker(t+1),r.setMarkerSelected(i,"unhover"),viewer.inputHandler.startDragging(n,{})}),i.addEventListener("mouseover",function(e){r.setMarkerSelected(e.object,"hover","single"),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"markerMove"})}),i.addEventListener("mouseleave",function(e){r.setMarkerSelected(e.object,"unhover","single"),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"markerMove"})}),this.add(i),this.updateMarker(i,t),this.selected||viewer.updateVisible(i,"select",!1),i}},{key:"addMidMarkers",value:function(){var i=this,r=this.points.length;this.points.forEach(function(e,t){var n=i.points[(t+1)%r],e=(new Re).addVectors(e,n).multiplyScalar(.5);i.addMidMarker(t,e)})}},{key:"updateTwoMidMarker",value:function(e){var t,n,i,r;this.midMarkers.length&&(r=this.points.length,t=this.points[(e-1+r)%r],n=this.points[(e+1)%r],i=this.points[e],t=(new Re).addVectors(t,i).multiplyScalar(.5),n=(new Re).addVectors(n,i).multiplyScalar(.5),i=this.midMarkers[(e-1+r)%r],r=this.midMarkers[e],this.updateMarker(i,t),this.updateMarker(r,n))}},{key:"dispose",value:function(){k(_(a.prototype),"dispose",this).call(this),this.box&&this.box.geometry.dispose(),this.lineMesh&&this.lineMesh.geometry.dispose(),this.holes.forEach(function(e){return e.dispose()}),this.parentHoles.forEach(function(e){return e.dispose()}),this.dispatchEvent("dispose")}},{key:"updateBox",value:function(){var e,t;this.box&&(this.box.geometry.dispose(),e="room"==this.buildType?.11:"floor"==this.buildType?.082:.2,3<=this.points.length)&&(t=this.holes.concat(this.parentHoles).filter(function(e){return 2<e.points.length}).map(function(e){return e.points}),this.box.geometry=Ov.getExtrudeGeo(this.points,t,{depth:this.zMax-this.zMin-e,UVGenerator:new $w}),"building"==this.buildType?this.box.position.z=this.zMin-e/2:this.box.position.z=this.zMin+e/2)}},{key:"update",value:function(){var n=this,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},i=(k(_(a.prototype),"update",this).call(this,"floor"!=this.buildType&&e.ifUpdateMarkers),this.points.length),r=(this.originHole&&(this.points=this.originHole.points),"hole"==this.buildType&&(this.zMin=this.buildParent.zMin,this.zMax=this.buildParent.zMax),e.dontUpdateBox||("hole"==this.buildType?("building"==this.buildParent.buildType&&this.buildParent.buildChildren.forEach(function(e){e=e.parentHoles.find(function(e){return e.originHole==n});e&&e.update()}),this.buildParent):this).updateBox(),[]);this.points.forEach(function(e,t){r.push(e.clone().setZ(n.zMin),e.clone().setZ(n.zMax));t=n.points[(t+1)%i];t&&(r.push(e.clone().setZ(n.zMax),t.clone().setZ(n.zMax)),r.push(e.clone().setZ(n.zMin),t.clone().setZ(n.zMin)))}),Fv.moveLine(this.lineMesh,r),e.dontUpdateChildren||("building"==this.buildType&&this.buildChildren.forEach(function(e){e.points=n.points,e.update()}),this.holes.concat(this.parentHoles).forEach(function(e){e.update({dontUpdateBox:!0})}))}},{key:"getHolesArea",value:function(){var e,t=this.holes.concat(this.parentHoles),n=0;return 2<=t.length?(e=t.map(function(e){return e.points}),(e=ee.getPolygonsMixedRings(e,!0)).forEach(function(e){n+=e.area}),e=e.map(function(e){return e.points})):(e=t.map(function(e){return e.points})).forEach(function(e){return n+=Math.abs(ee.getArea(e))}),n}},{key:"getArea",value:function(e){return Math.abs(ee.getArea(this.points))-(e?this.getHolesArea():0)}},{key:"getVolume",value:function(e){var t=this.getRealZ(),n=t.zMin,t=t.zMax-n;return isNaN(t)&&(t=0),this.getArea(e)*t}},{key:"getRealZ",value:function(){if("building"==this.buildType)var e=this.buildChildren[this.buildChildren.length-1],t=this.buildChildren[0],t=t?t.zMin:0,e=e?e.zMax:0;else{if("hole"==this.buildType)return this.buildParent.getRealZ();t=this.zMin,e=this.zMax}return{zMin:t,zMax:e}}},{key:"getBound",value:function(){var t=new Y,e=this.getRealZ(),n=e.zMin,i=e.zMax;return("floor"==this.buildType?this.buildParent:this).points.forEach(function(e){t.expandByPoint(e.clone().setZ(n)),t.expandByPoint(e.clone().setZ(i))}),t}},{key:"getMarkerMaterial",value:function(e){return(Qw=Qw||{default:new L({transparent:!0,color:Kw,opacity:.8,map:Xw.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1}),midPrepare:new L({transparent:!0,color:Kw,opacity:.4,map:Xw.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1}),hover:new L({transparent:!0,color:Kw,opacity:1,map:Xw.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1}),select:new L({transparent:!0,color:new Me("#00C8AF"),opacity:1,map:Xw.load(Potree.resourcePath+"/textures/whiteCircle.png"),depthTest:!1})})[e]}},{key:"setMarkerSelected",value:function(e,t,n){"select"==t?(e.selected=!0,e.material=this.getMarkerMaterial("select")):"unselect"==t?(e.selected=!1,e.material=this.getMarkerMaterial("default")):e.selected||("hover"==t?e.material=this.getMarkerMaterial("hover"):"unhover"==t&&(e.name.includes("mid")?e.material=this.getMarkerMaterial("midPrepare"):e.material=this.getMarkerMaterial("default")))}},{key:"select",value:function(){this.selected||(this.box&&(this.box.material=this.mats.boxSelected),"building"==this.buildType||"floor"==this.buildType?(this.buildChildren.forEach(function(e){e.lineMesh.visible=!0}),"floor"==this.buildType&&(viewer.setObjectLayers(this.box,"bothMapAndScene"),viewer.setObjectLayers(this.buildParent.box,"siteModelMapUnvisi"))):"room"==this.buildType&&(viewer.setObjectLayers(this.buildParent.box,"bothMapAndScene"),viewer.setObjectLayers(this.buildParent.buildParent.box,"siteModelMapUnvisi")),this.lineMesh.visible=!0,this.markers&&this.markers.forEach(function(e){return viewer.updateVisible(e,"select",!0)}),this.midMarkers&&this.midMarkers.forEach(function(e){return e.visible=!0}),this.holes.concat(this.parentHoles).forEach(function(e){return e.select()}),this.selected=!0,this.dispatchEvent({type:"select"}))}},{key:"unselect",value:function(){this.selected&&(this.box&&(this.box.material=this.mats.boxDefault),"building"==this.buildType||"floor"==this.buildType?(this.buildChildren.forEach(function(e){e.lineMesh.visible=!1}),"floor"==this.buildType&&(viewer.setObjectLayers(this.box,"siteModelMapUnvisi"),viewer.setObjectLayers(this.buildParent.box,"bothMapAndScene"))):"room"==this.buildType&&(viewer.setObjectLayers(this.buildParent.box,"siteModelMapUnvisi"),viewer.setObjectLayers(this.buildParent.buildParent.box,"bothMapAndScene")),this.lineMesh.visible=!1,this.markers&&this.markers.forEach(function(e){return viewer.updateVisible(e,"select",!1)}),this.midMarkers&&this.midMarkers.forEach(function(e){return e.visible=!1}),this.holes.concat(this.parentHoles).forEach(function(e){return e.unselect()}),this.selected=!1,this.dispatchEvent({type:"unselect"}))}},{key:"ifContainsPoint",value:function(e){var t=this,n=this.getRealZ(),i=n.zMin,n=n.zMax;if(!(e.z<i||e.z>n))return i=this.holes.concat(this.parentHoles).filter(function(e){return e!=t&&2<e.points.length}).map(function(e){return e.points}),!!ee.isPointInArea(this.points,i,e)}}]),a}(),$w=function(){function e(){te(this,e),this.a=new Re,this.b=new Re,this.c=new Re,this.d=new Re}return A(e,[{key:"generateTopUV",value:function(e,t,n,i,r){return[new Le(t[3*n],t[3*n+1]),new Le(t[3*i],t[3*i+1]),new Le(t[3*r],t[3*r+1])]}},{key:"generateSideWallUV",value:function(e,t,n,i,r,a){this.a.set(t[3*n],t[3*n+1],t[3*n+2]),this.b.set(t[3*i],t[3*i+1],t[3*i+2]),this.c.set(t[3*r],t[3*r+1],t[3*r+2]),this.d.set(t[3*a],t[3*a+1],t[3*a+2]),n=this.a.x!==this.b.x,i=n?this.b:this.d,r=this.a.distanceTo(i),t=i.distanceTo(this.c);return[new Le(this.a.x,0),n?new Le(this.a.x+r,0):new Le(this.a.x,t),new Le(this.a.x+r,t),n?new Le(this.a.x,t):new Le(this.a.x+r,0)]}}]),e}(),e1={zMin:-Gm.map.cameraHeight,zMax:Gm.map.cameraHeight},t1={bus:new zn,entities:[],buildings:[],meshGroup:new K,inEntity:null,lastPos:new Re(1/0,1/0,1/0),init:function(){var n=this;viewer.scene.scene.add(this.meshGroup),this.meshGroup.name="siteModel",this.SplitScreen=Jw,"pano"!=Potree.settings.editType&&(this.createHeightPull(),Potree.settings.isTest&&viewer.addEventListener("allLoaded",function(){viewer.scene.pointclouds.forEach(function(e){var t=e.getUnrotBoundPoint(),t=new Zw({name:"数据集tightBound_"+e.dataset_id,points:t,buildType:"dataset",zMax:e.bound.max.z,zMin:e.bound.min.z,ifDraw:!0});n.meshGroup.add(t)})}),Potree.settings.isOfficial&&viewer.addEventListener("camera_changed",function(e){e.changeInfo&&e.changeInfo.positionChanged&&n.updateEntityAt()}),viewer.inputHandler.addEventListener("keydown",function(e){var t;e.keyCode!=Dm.BACKSPACE&&e.keyCode!=Dm.DELETE||n.selectedMarker&&(t=(e=n.selectedMarker.parent).markers.indexOf(n.selectedMarker),e.removeMarker(t),e.points.length<2)&&n.startInsertion("resume",e)}))},updateEntityAt:function(n){function e(){var e,t=viewer.mainViewport.view.position,t=(i.lastPos.copy(t),"showPanos"==Potree.settings.displayMode?viewer.images360.currentPano:t),t=i.pointInWhichEntity(t,"room");return(n||i.inEntity!=t)&&(i.inEntity,i.inEntity=t,i.bus.dispatchEvent({type:"buildingChange",entity:t}),e=i.currentFloor,t=t?"floor"==t.buildType?t:"room"==t.buildType?t.buildParent:null:null,n||t!=e)&&(i.currentFloor=t,i.bus.dispatchEvent({type:"FloorChange",currentFloor:t})),!(n=!1)}var i=this;n?e():ag.intervalTool.isWaiting("sitemodelCameraInterval",e,500)},enter:function(){Potree.Log("sitemodel enter"),this.clear(),this.editing=!0,viewer.updateFpVisiDatasets();var e=viewer.mapViewer.viewports[0];this.SplitScreen.split({siteModel:!0}),viewer.viewports.forEach(function(e){"mapViewport"!=e.name&&e.layersAdd("siteModelMapUnvisi"),"right"!=e.name&&"back"!=e.name||e.layersAdd("siteModeSideVisi")}),viewer.images360.panos.forEach(function(e){viewer.setObjectLayers(e.marker,"siteModelMapUnvisi")}),e.layersAdd("siteModeOnlyMapVisi")},leave:function(){Potree.Log("sitemodel leave");var e=viewer.mapViewer.viewports[0];this.SplitScreen.recover(),viewer.viewports.forEach(function(e){"mapViewport"!=e.name&&e.layersRemove("siteModelMapUnvisi"),"right"!=e.name&&"back"!=e.name||e.layersRemove("siteModeSideVisi")}),viewer.images360.panos.forEach(function(e){viewer.setObjectLayers(e.marker,"sceneObjects")}),e.layersRemove("siteModeOnlyMapVisi"),this.clear(),this.editing=!1,this.updateEntityAt(!0),viewer.updateFpVisiDatasets()},addFloor:function(e,t,n,i){var r,a;0==e.buildChildren.length?r=(a=e.zMin)+Potree.config.siteModel.floorHeightDefault:"bottom"==t?a=(r=e.buildChildren[0].zMin)-Potree.config.siteModel.floorHeightDefault:r=(a=e.buildChildren[e.buildChildren.length-1].zMax)+Potree.config.siteModel.floorHeightDefault;t=new Zw({buildType:"floor",zMin:a,zMax:r,buildParent:e,sid:n,name:i,ifDraw:!0});return t.update(),this.addEntity(t,e),this.selected==e&&(e.unselect(),e.select()),t},startInsertion:function(t,e,n,i,r,a){var o,s,l,u,c,h=this,d=viewer.mapViewer.viewports[0],p=("resume"==t&&(l=!0,t=(u=e).buildType,u.reDraw(0),u.isNew=!0),l||("hole"==t||"room"==t?(o=e.zMin,s=e.zMax):"building"==t&&(e=null,o=viewer.bound.boundingBox.min.z,s=viewer.bound.boundingBox.min.z),"hole"==t?((u=e.addHole()).isNew=!0,this.selectEntity(e),u.select(),console.log("挖洞 ",u.uuid)):((u=new Zw({buildType:t,zMin:o,zMax:s,buildParent:e,sid:n,name:i,ifDraw:!0})).isNew=!0,this.selectEntity(u)),this.addEntity(u,e)),function(){viewer.removeEventListener("cancel_insertions",m),u.removeEventListener("unselect",m),clearTimeout(c),u.editStateChange(!1),r&&r(u)}),f=function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return e.remove?(p(),h.removeEntity(u)):e.remain||e.finish||e.remove||!(u.markers.length<=3)?(p(),e.remain||!e.remove&&3<u.markers.length?(u.removeMarker(u.points.length-1),u.markers.forEach(function(e){e.dispatchEvent("addHoverEvent")}),"room"==t&&h.fitPullBox(),u.isNew=!1,u.addMidMarkers()):h.removeEntity(u),u):(u.reDraw(1),viewer.updateVisible(u.markers[0],"unMove",!1),u.addEventListener("dragChange",function e(){viewer.updateVisible(u.markers[0],"unMove",!0),u.removeEventListener("dragChange",e)}),void u.continueDrag(u.markers[0],e))},m=function e(t){u.removeEventListener("unselect",e),viewer.inputHandler.drag?(viewer.inputHandler.drag.object.dispatchEvent({type:"drop",drag:viewer.inputHandler.drag,viewer:viewer,pressDistance:0,button:le.RIGHT}),viewer.inputHandler.drag=null):f({remain:!0}),viewer.inputHandler.drag=null},v=(viewer.dispatchEvent("cancel_insertions"),viewer.addEventListener("cancel_insertions",m),u.addEventListener("unselect",m),u.addMarker({point:new Re(0,0,0)}));return viewer.updateVisible(v,"unMove",!1),u.addEventListener("dragChange",function e(){viewer.updateVisible(v,"unMove",!0),u.removeEventListener("dragChange",e)}),v.isDragging=!0,viewer.inputHandler.startDragging(v,{dragViewport:d,endDragFun:function(e){var t;e.button==le.LEFT?(t=u.addMarker({point:u.points[u.points.length-1].clone()}),u.continueDrag(t,e)):e.button===le.RIGHT&&(e.pressDistance<Potree.config.clickMaxDragDis?f(e):u.continueDrag(null,e))},notPressMouse:!0}),u},getPreDealData:function(e,t,n,i,r,a){var o=this,s=viewer.bound.boundingBox;return"building"==r&&i?(console.log("空间模型未编辑过, 初始化了一个"),e=[new Re(s.min.x,s.min.y,0),new Re(s.max.x,s.min.y,0),new Re(s.max.x,s.max.y,0),new Re(s.min.x,s.max.y,0)],t=s.min.z,n=s.max.z):(e=e.map(function(e){return o.transform(e,"fromDataset")}),"floor"==r&&i&&(t=s.min.z,n=s.max.z)),{points:e,zMax:n,zMin:t}},resetFromData:function(t){var e,n=this,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[],r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[],a=3<arguments.length?arguments[3]:void 0,o=4<arguments.length?arguments[4]:void 0;return i=n.getPreDealData(i,a,o,n.autoBuild,t.buildType,t.buildParent),a=i.points,o=i.zMax,e=i.zMin,"floor"!=t.buildType&&(t.points=a),"room"==t.buildType?(t.zMin=e,t.zMax=o):"floor"==t.buildType&&(i=t.zMin+(o-e),t1.changeZ(t,"zMax",i)),t.holes.forEach(function(e){t.removeHole(e)}),r.forEach(function(e){e=e.map(function(e){return n.transform(e,"fromDataset")});t.addHole(e).addMidMarkers()}),t.update(),t},createFromData:function(e,t,n,i){var r,a,o,s=this,l=4<arguments.length&&void 0!==arguments[4]?arguments[4]:[],u=5<arguments.length&&void 0!==arguments[5]?arguments[5]:[],c=6<arguments.length?arguments[6]:void 0,h=7<arguments.length?arguments[7]:void 0,d=8<arguments.length?arguments[8]:void 0,p=9<arguments.length?arguments[9]:void 0,f=10<arguments.length?arguments[10]:void 0;if("building"==e||"floor"==e||"room"==e)return l=(a=s.getPreDealData(l,c,h,d,e,t)).points,h=a.zMax,c=a.zMin,r=[],p&&p.forEach(function(e){e=viewer.images360.getPano(e,"sid");e&&r.push(e)}),f=null!=f?viewer.images360.getPano(f,"sid"):null,s.editing||"floor"!=e||f||(r=t.panos,f=t.flagPano),a={buildType:e,points:l,name:i,sid:n,zMin:c,zMax:h,buildParent:t,ifDraw:s.editing||Potree.settings.drawEntityData,panos:r,flagPano:f,autoBuild:d},o=new Zw(a),t1.addEntity(o,t),!s.editing||"building"!=e&&"room"!=e||o.addMidMarkers(),u.forEach(function(e){e=e.map(function(e){return s.transform(e,"fromDataset")}),e=o.addHole(e);s.editing&&e.addMidMarkers()}),o},transform:function(e,t){return"pano"==Potree.settings.editType?(new Re).copy(e).setZ(0):"toDataset"==t?(t=Potree.Utils.datasetPosTransform({toDataset:!0,position:e.clone(),datasetId:Potree.settings.originDatasetId}),(new Le).copy(t)):(t=(new Re).copy(e).setZ(0),Potree.Utils.datasetPosTransform({fromDataset:!0,position:t,datasetId:Potree.settings.originDatasetId}))},addEntity:function(t,e){function n(e){i.selectedMarker&&t.markers.includes(i.selectedMarker)&&(i.selectedMarker.dispatchEvent({type:"clickSelect",state:!1}),i.selectedMarker=null)}var i=this;"hole"!=t.buildType&&(this.meshGroup.add(t),this.entities.push(t),("building"==t.buildType?this.buildings:e.buildChildren).push(t)),"room"==t.buildType?t.addEventListener("marker_dropped",function(){i.fitPullBox()}):"floor"==t.buildType&&(this.updateBuildingZ(e),e.dispatchEvent({type:"addFloor"})),t.addEventListener("clickMarker",function(e){i.selectedMarker==e.marker?(i.selectedMarker.dispatchEvent({type:"clickSelect",state:!1}),i.selectedMarker=null):(i.selectedMarker&&i.selectedMarker.dispatchEvent({type:"clickSelect",state:!1}),i.selectedMarker=e.marker,i.selectedMarker.dispatchEvent({type:"clickSelect",state:!0}))}),t.addEventListener("removeMarker",function(e){i.selectedMarker==e.marker&&(i.selectedMarker=null)});t.addEventListener("dispose",n),t.addEventListener("unselect",n)},removeEntity:function(e){var t,n=this;this.entities.includes(e)&&(console.log("删除实体:",e.buildType,e.sid),this.selected==e&&(this.height_pull_box.visible=!1,this.selectEntity(null)),"building"==e.buildType?-1<(t=this.buildings.indexOf(e))&&this.buildings.splice(t,1):-1<(t=e.buildParent.buildChildren.indexOf(e))&&(e.buildParent.buildChildren.splice(t,1),"floor"==e.buildType)&&0==t&&this.updateBuildingZ(e.buildParent),-1<(t=this.entities.indexOf(e))&&this.entities.splice(t,1),e.dispose(),e.buildChildren.slice().forEach(function(e){return n.removeEntity(e)}))},updateBuildingZ:function(e){e.buildChildren=e.buildChildren.sort(function(e,t){return e.zMin-t.zMin}),e.zMin=e.zMax=e.buildChildren[0].zMin,this.editing&&e.update({dontUpdateChildren:!0}),e.dispatchEvent("updateBuildingZ")},selectEntity:function(e){!1===(!(1<arguments.length&&void 0!==arguments[1])||arguments[1])?(e.unselect(),this.selected==e&&(this.selected=null)):this.selected==e||e&&"hole"==e.buildType||(this.selected&&this.selected.unselect(),this.height_pull_box.visible=!1,e&&e.select(),!(this.selected=e)||"floor"!=e.buildType&&"room"!=e.buildType||(this.height_pull_box.visible=!0,this.fitPullBox()),e&&!e.isNew&&("building"==e.buildType||"room"==e.buildType)&&e.points.length<2&&this.startInsertion("resume",e))},fitPullBox:function(){var e,t;!this.selected||"floor"!=this.selected.buildType&&"room"!=this.selected.buildType||((t=new Y).expandByObject(this.selected.box),e=t.getCenter(new Re),t=t.getSize(new Re),this.height_pull_box.scale.copy(t),this.height_pull_box.position.copy(e))},changeZ:function(e,t,n){var i,r,a,o;"floor"==e.buildType?(a=e.buildParent.buildChildren.indexOf(e),"zMax"==t?(o=e.buildParent.buildChildren[a+1],e.zMax=Math.min(e1.zMax,n),r=e.zMin+.5,e.zMax<r?e.zMax=r:o&&(i=o.zMax-.5,e.zMax>i)&&(e.zMax=i),o&&(o.zMin=e.zMax,o.update(),o.dispatchEvent({type:"changeHeight"}))):(o=e.buildParent.buildChildren[a-1],e.zMin=Math.max(e1.zMin,n),i=e.zMax-.5,e.zMin>i?e.zMin=i:o&&(r=o.zMin+.5,e.zMin<r)&&(e.zMin=r),o&&(o.zMax=e.zMin,o.update(),o.dispatchEvent({type:"changeHeight"})),0==a&&this.updateBuildingZ(e.buildParent))):"room"==e.buildType&&(o=e.buildParent.zMax-e.buildParent.zMin,"zMax"==t?(r=e.zMin+.5,i=e.zMin+o,e.zMax=Be.clamp(n,r,i)):(r=e.zMax-o,i=e.zMax-.5,e.zMin=Be.clamp(n,r,i))),e.update(),e.dispatchEvent({type:"changeHeight"}),this.fitPullBox()},createHeightPull:function(){function e(e){viewer.dispatchEvent({type:"CursorChange",action:"add",name:"siteModelFloorDrag"})}function t(e){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"siteModelFloorDrag"})}function n(e){var t,n=e.intersect.orthoIntersect;null!=a?(t=n.z-a,"floor"!=o.selected.buildType&&"room"!=o.selected.buildType||(e.target==u?(null==r&&(r=o.selected.zMax),o.changeZ(o.selected,"zMax",r+t)):(null==r&&(r=o.selected.zMin),o.changeZ(o.selected,"zMin",r+t)))):a=n.z}function i(e){r=a=null}var r,a,o=this,s=new sa(1,1,.25),l=new L({color:"#F00",opacity:0,transparent:!0,depthTest:!1,side:2}),u=new Z(s,l),s=new Z(s,l);u.name="height_pull_box_up",s.name="height_pull_box_down",this.height_pull_box=new K,this.height_pull_box.name="height_pull_box",this.height_pull_box.add(u),this.height_pull_box.add(s),this.height_pull_box.visible=!1,this.meshGroup.add(this.height_pull_box),u.position.set(0,0,.5),s.position.set(0,0,-.5),viewer.setObjectLayers(this.height_pull_box,"siteModeSideVisi");u.addEventListener("mousemove",e),s.addEventListener("mousemove",e),u.addEventListener("mouseleave",t),s.addEventListener("mouseleave",t),u.addEventListener("drag",n),s.addEventListener("drag",n),u.addEventListener("drop",i),s.addEventListener("drop",i)},pointInWhichEntity:function(o,e,t){function s(e,t){var n=o instanceof Re?e.ifContainsPoint(o):e.panos.includes(o);if(n){if((!l||u[l.buildType]<u[e.buildType])&&(l=e),e.buildType==t)return e;for(var i=0,r=e.buildChildren.length;i<r;i++){var a=s(e.buildChildren[i]);if(a)return a}}}var l,u={building:0,floor:1,room:2},n=ag.sortByScore(this.buildings,[function(e){return s(e,"building")}],[function(e){var e=e.getBound(),t=e.getCenter(new Re),t=(o instanceof Re?o:o.position).distanceTo(t);return e.getSize(new Re).length()/2/t}]),n=n&&n[0]&&1<n[0].score&&n[0].item;return"building"!=e&&n?s(n,e)||l:n},findPanos:function(){this.entities.forEach(function(t){t.panos=[],t.flagPano=null,viewer.images360.panos.forEach(function(e){t.ifContainsPoint(e.position)&&t.panos.push(e)})}),this.entities.forEach(function(e){var t,n=e.panos;0!=n.length&&(t=e.getBound().getCenter(new Re),t=[cy.scoreFunctions.distanceSquared({position:t})],(n=ag.sortByScore(n,[],t))&&n.length?e.flagPano=n[0].item:console.error("no flagPano??"))})},findEntityForDataset:function(){var r=this;viewer.scene.pointclouds.forEach(function(e){for(var t=e.getVolume(),n=r.buildings;;){var i=function(r,e,a){var o=[];return e.forEach(function(e){var t=e.intersectPointcloudVolume(r),n=e.panos.filter(function(e){return r.panos.includes(e)}).length,i=t/a;0<r.panos.length&&(i+=n/r.panos.length),o.push({entity:e,volume:t,panoCount:n,score:i})}),o.sort(function(e,t){return t.score-e.score}),o}(e,n,t);if(0==i.length||i[0].volume/t<1e-4&&i[0].volume<3){if(i[0]&&"room"==i[0].entity.buildType){e.belongToEntity=i[0].entity;break}e.belongToEntity=null;break}if(0==(n=i[0].entity.buildChildren).length){e.belongToEntity=i[0].entity;break}}})},clear:function(){this.selectEntity(null);for(var e=this.entities.length,t=0;t<e;t++)this.entities[t].dispose();this.entities=[],this.buildings=[],this.inEntity=null},gotoEntity:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1e3,i=this.entities.find(function(e){return e.sid==t});if(!i)return console.error("没找到entity ");if("showPanos"==Potree.settings.displayMode){if(e&&i.panos.length){if(i.panos.includes(viewer.images360.currentPano))return"posNoChange";var r=viewer.scene.getActiveCamera().position,r=[cy.scoreFunctions.distanceSquared({position:r})],r=ag.sortByScore(i.panos,[],r)[0].item}else{if(!i.flagPano)return console.log("没有flagPano");r=i.flagPano}if(r==viewer.images360.currentPano)return"posNoChange";viewer.images360.flyToPano(r)}else{if(e&&i.ifContainsPoint(viewer.images360.position))return"posNoChange";r=i.getBound(),e=r.getCenter(new Re),i=r.getSize(new Re);if(viewer.modules.Clip&&viewer.modules.Clip.editing)viewer.modules.Clip.bus.dispatchEvent({type:"flyToPos",position:e});else{if(ee.closeTo(e,viewer.images360.position))return"posNoChange";viewer.scene.view.setView({position:e,duration:n})}viewer.mapViewer.moveTo(e,i,n)}return!0},focusEntity:function(t){var e=this.entities.find(function(e){return e.sid==t}).getBound(),n=e.getCenter(new Re);this.SplitScreen.focusOnObject(e,n),this.gotoEntity(t,!1,0)},removeIlligalArchi:function(){var t=this,n=[];this.entities.forEach(function(e){e.points.length<3&&n.push(e)}),n.forEach(function(e){return t.removeEntity(e)})}},n1=function(){y(l,Z);var s=C(l);function l(e,t,n,i){var r=4<arguments.length&&void 0!==arguments[4]?arguments[4]:.2,a=5<arguments.length&&void 0!==arguments[5]?arguments[5]:1,o=(te(this,l),n=n||new Me("white"),e=e||10,t=t||100,i=i||8e3,new Ba(2,2,1,1)),e=new pa({side:ve,uniforms:{uSize1:{value:e},uSize2:{value:t},opacity1:{value:r},opacity2:{value:a},uColor:{value:n},uDistance:{value:i}},transparent:!0,vertexShader:"\n \n varying vec3 worldPosition;\n \n uniform float uDistance;\n \n void main() {\n \n vec3 pos = position.xyz * uDistance;\n pos.xy += cameraPosition.xy;\n \n worldPosition = pos;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4(pos, 1.0);\n \n }\n ",fragmentShader:"\n \n varying vec3 worldPosition;\n \n uniform float uSize1;\n uniform float uSize2;\n uniform float opacity1;\n uniform float opacity2;\n uniform vec3 uColor;\n uniform float uDistance;\n \n \n \n float getGrid(float size) {\n \n vec2 r = worldPosition.xy / size;\n \n \n vec2 grid = abs(fract(r - 0.5) - 0.5) / fwidth(r);\n float line = min(grid.x, grid.y);\n \n \n return 1.0 - min(line, 1.0);\n }\n //为何侧面看不到线,因为mesh的正侧面都看不到?\n\n void main() {\n \n \n float d = 1.0 - min(distance(cameraPosition.xy, worldPosition.xy) / uDistance, 1.0);\n \n float g1 = getGrid(uSize1);\n float g2 = getGrid(uSize2);\n \n \n gl_FragColor = vec4(uColor.rgb, mix(g2, g1, g1) * pow(d, 3.0));\n //gl_FragColor.a = mix(0.5 * gl_FragColor.a, gl_FragColor.a, g2);\n gl_FragColor.a = mix(opacity1 * gl_FragColor.a, opacity2 * gl_FragColor.a, g2);\n \n \n if ( gl_FragColor.a <= 0.0 ) discard;\n \n \n }\n \n ",extensions:{derivatives:!0}}),t=s.call(this,o,e);return t.frustumCulled=!1,t}return A(l)}();Uw.prototype=Object.assign(Object.create(K.prototype),{constructor:Uw,isTransformControls:!0}),zw.prototype=Object.assign(Object.create(K.prototype),{constructor:zw,isTransformControlsGizmo:!0}),Hw.prototype=Object.assign(Object.create(Z.prototype),{constructor:Hw,isTransformControlsPlane:!0});(new Nc).crossOrigin="anonymous";function i1(e){return(l1=l1||{"fire+smoke":Fv.createFatLineMat($.extend(V1,{color:Q1["fire+smoke"],lineWidth:2})),smoke:Fv.createFatLineMat($.extend(V1,{color:Q1.smoke,lineWidth:2})),explode:Fv.createFatLineMat($.extend(V1,{color:Q1.explode,lineWidth:2}))})[e]}function r1(e){var t;return u1||(t=new Nc,u1={"fire+smoke":new jm($.extend(V1,{map:t.load(Potree.resourcePath+"/textures/icon-fire.png"),color:Q1["fire+smoke"]})),smoke:new jm($.extend(V1,{map:t.load(Potree.resourcePath+"/textures/icon-smoke.png"),color:Q1.smoke})),explode:new jm($.extend(V1,{map:t.load(Potree.resourcePath+"/textures/icon-explode.png"),color:Q1.explode}))}),u1[e]}var a1,o1,s1,l1,u1,c1,h1,d1,p1,f1,m1,v1,g1,A1,y1,w1,b1,x1=[{left:0,bottom:0,width:.5,height:1,name:"top",axis:["x","y"],direction:new Re(0,0,-1),active:!0,limitBound:new Y(new Re(-1/0,-1/0,1),new Re(1/0,1/0,5e3)),margin:{x:50,y:150}},{left:.5,bottom:0,width:.5,height:1,name:"right",axis:["y","z"],direction:new Re(1,0,0),active:!0,viewContainsPoints:[new Re(0,0,0)],margin:{x:300,y:250}}],E1={bus:new zn,SplitScreen:new Mw,init:function(){function e(e){viewer.outlinePass.edgeStrength=0}function t(e){viewer.outlinePass.edgeStrength=o}var n=this,i=this.ground=new n1(1,1e4,new Me("#fff"),1e4,.2,.3),r=(viewer.scene.scene.add(i),Fv.createLine([new Re(-1e4,0,0),new Re(1e4,0,0)],{color:"#666"})),a=Fv.createLine([new Re(0,-1e4,0),new Re(0,1e4,0)],{mat:r.material}),o=(i.renderOrder=Potree.config.renderOrders.model+1,i.add(r),i.add(a),i.material.polygonOffset=!0,i.material.polygonOffsetFactor=100,i.material.polygonOffsetUnits=10,i.material.depthWrite=!1,r.material.polygonOffset=!0,r.material.polygonOffsetFactor=130,r.material.polygonOffsetUnits=10,r.material.depthWrite=!1,viewer.outlinePass.edgeStrength);this.transformControls=new Uw(viewer.mainViewport.camera,viewer.renderArea,{dontHideWhenFaceCamera:!0}),this.transformControls.setSize(1.5),viewer.scene.scene.add(this.transformControls),this.transformControls._gizmo.hideAxis={rotate:["e"]},this.transformControls.setRotateMethod(2),this.transformControls2=new Uw(viewer.mainViewport.camera,viewer.renderArea,{dontHideWhenFaceCamera:!0}),this.transformControls.setSize(1.5),viewer.scene.scene.add(this.transformControls2),viewer.setObjectLayers(this.transformControls2,"layer2");this.transformControls.addEventListener("mouseDown",e),this.transformControls2.addEventListener("mouseDown",e),this.transformControls.addEventListener("mouseUp",t),this.transformControls2.addEventListener("mouseUp",t),this.secondCompass=new xg(null),viewer.setControls(viewer.orbitControls),viewer.orbitControls.constantlyForward=!0,viewer.addEventListener("global_single_click",function(e){n.noNeedSelection||viewer.scene.cameraAnimations.some(function(e){return e.onUpdate})||e.drag&&e.drag.notPressMouse||viewer.mainViewport.view.isFlying()||n.split||e.clickElement||(e.intersect&&(e=e.intersect.object||e.intersect.pointcloud,n.getAllObjects().includes(e))?n.selectModel(e):n.selectModel(null))}),viewer.inputHandler.addEventListener("keydown",function(e){"h"==e.event.key.toLowerCase()&&(n.fadeOutlineAuto=!n.fadeOutlineAuto,n.showModelOutline(n.selected,!!n.selected))}),viewer.ssaaRenderPass.enabled=!1,viewer.outlinePass.enabled=!0,viewer.mainViewport.camera.near=.05,viewer.addEventListener("updateModelBound",function(e){n.split&&n.SplitScreen.updateCameraOutOfModel()});function s(e){if(n.split&&n.selected&&n.transformState&&("top"==e.dragViewport.name||"translate"==n.transformState)&&("global_mousedown"==e.type&&(e.intersect.pointclouds.includes(n.selected)||e.intersect.allElements.some(function(e){return e.object==n.selected}))&&(l={},viewer.outlinePass.edgeStrength=0),"global_drag"==e.type)&&l){if("translate"==n.transformState){var t=Potree.Utils.getOrthoCameraMoveVec(e.drag.pointerDelta,e.dragViewport.camera);n.selected.position.add(t),n.selected.dispatchEvent("position_changed")}else if("rotate"==n.transformState){t=(new Re).subVectors(e.intersect.orthoIntersect||e.intersect.location,n.selected.boundCenter).setZ(0);if(null==l.lastVec)return void(l.lastVec=t);e=ee.getAngle(l.lastVec,t,"z"),t=(l.lastVec=t,(new X).setFromAxisAngle(new Re(0,0,1),e));n.selected.quaternion.premultiply(t),n.selected.dispatchEvent("rotation_changed")}return{stopContinue:!0}}}var l;viewer.addEventListener("global_mousedown",s),viewer.addEventListener("global_drag",s,10),viewer.addEventListener("global_mousemove",function(e){!n.split||!n.transformState||e.drag||"top"!=e.hoverViewport.name&&"translate"!=n.transformState||(e.intersect.pointclouds.includes(n.selected)||e.intersect.allElements.some(function(e){return e.object==n.selected})?"translate"==n.transformState?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"movePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"add",name:"rotatePointcloud"}):n.clearTranCursor())}),viewer.addEventListener("global_drop",function(e){l=null,n.clearTranCursor(),viewer.outlinePass.edgeStrength=o})},clearTranCursor:function(){viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"})},enterSplit:function(){this.split=!0,this.selected?this.SplitScreen.focusCenter=this.selected.boundCenter:this.SplitScreen.focusCenter=null,this.SplitScreen.splitStart(x1),this.beforeSplit={pointDensity:Potree.settings.pointDensity},Potree.settings.pointDensity="fourViewports",viewer.setControls(viewer.fpControls);var e=viewer.viewports.find(function(e){return"right"==e.name}),t=viewer.viewports.find(function(e){return"top"==e.name});t.alignment=!0,e.rotateSide=!0,e.skyboxFixPos=!0,e.skyboxMinZoom=10,e.skyboxRenderFun=function(){viewer.skybox.scene.children[0].rotation.copy(e.camera.rotation)},t.skyboxRenderFun=function(){viewer.skybox.scene.children[0].rotation.set(0,0,0)},viewer.viewports[1].layersAdd("layer2"),viewer.viewports[0].layersAdd("layer1"),viewer.setObjectLayers(this.transformControls,"layer1"),this.transformControls.view=viewer.viewports[0].view,this.transformControls.camera=viewer.viewports[0].camera,this.transformControls._gizmo.hideAxis={translate:["z"],rotate:["x","y","z"]},this.transformControls2.view=viewer.viewports[1].view,this.transformControls2.camera=viewer.viewports[1].camera,this.transformControls2._gizmo.hideAxis={translate:["x","y"],rotate:["x","y","z"]},this.secondCompass.changeViewport(viewer.viewports[0]),this.secondCompass.setDomPos(),this.secondCompass.setDisplay(!0),viewer.compass.changeViewport(viewer.viewports[1]),viewer.compass.setDomPos()},leaveSplit:function(){this.split=!1,this.SplitScreen.unSplit(),viewer.setControls(viewer.orbitControls),Potree.settings.pointDensity=this.beforeSplit.pointDensity,this.transformControls.camera=viewer.viewports[0].camera,this.transformControls.view=viewer.viewports[0].view,this.transformControls._gizmo.hideAxis={rotate:["e"]},viewer.setObjectLayers(this.transformControls,"sceneObjects"),viewer.compass.changeViewport(viewer.viewports[0]),viewer.compass.setDomPos(),this.secondCompass.setDisplay(!1)},rotateSideCamera:function(e){this.SplitScreen.rotateSideCamera(viewer.viewports.find(function(e){return"right"==e.name}),e)},setTransformState:function(e){this.transformState=e,this.clearTranCursor()},getAllObjects:function(){return viewer.objs.children.concat(viewer.scene.pointclouds)},getModel:function(t){return this.getAllObjects().find(function(e){return e.dataset_id==t})},removeModel:function(e){this.selected==e&&this.selectModel(null);function t(e){e.geometry&&e.geometry.dispose(),e.material&&e.material.dispose()}e.isPointcloud?(t(e),viewer.scene.removePointCloud(e)):(e.traverse(function(e){t(e)}),viewer.objs.remove(e))},selectModel:function(e){var t=!(1<arguments.length&&void 0!==arguments[1])||arguments[1],n=2<arguments.length?arguments[2]:void 0,i=3<arguments.length?arguments[3]:void 0;if(e||(e=this.selected,t=!1),t){if(this.selected){if(this.selected==e)return;var r=!!this.transformControls.object;this.selectModel(this.selected,!1,n,i),r&&this.transformControls.attach(e)}this.selected=e,E1.focusOn(e,500,!!n),this.showModelOutline(e)}else{if(this.selected!=e)return;this.showModelOutline(e,!1),this.selected=null,this.transformControls.detach()}!i&&e&&e.dispatchEvent({type:"changeSelect",selected:t})},showModelOutline:function(e,t){this.fadeOutlineAuto?!1===t?(viewer.outlinePass.selectedObjects=[],clearTimeout(this.timer)):(viewer.outlinePass.selectedObjects=[e],this.timer&&clearTimeout(this.timer),this.timer=setTimeout(function(){viewer.outlinePass.selectedObjects=[]},1e3)):viewer.outlinePass.selectedObjects=!1===t?[]:[e]},focusOn:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:400,n=!(2<arguments.length&&void 0!==arguments[2])||arguments[2],i=3<arguments.length?arguments[3]:void 0,r=(e instanceof Array||(e=[e]),new Y);e.forEach(function(e){r.union(e.boundingBox.clone().applyMatrix4(e.matrixWorld))}),n?viewer.focusOnObject({boundingBox:r},"boundingBox",t,{dontLookUp:i,dontChangeCamDir:!0}):(e=viewer.inputHandler.intersect?viewer.inputHandler.intersect.location:r.getCenter(new Re))&&(viewer.mainViewport.view.radius=viewer.mainViewport.camera.position.distanceTo(e))},moveBoundCenterTo:function(e,t){t=(new Re).subVectors(t,e.boundCenter);e.position.add(t)},getBoundCenter:function(e){e.boundCenter||(e.boundCenter=new Re),e.boundingBox.getCenter(e.boundCenter).applyMatrix4(e.matrixWorld)},setModelBtmHeight:function(e,t){null==t?t=e.btmHeight:e.btmHeight=t,e.updateMatrixWorld();var n=e.boundingBox.clone().applyMatrix4(e.matrixWorld),i=n.getSize(new Re),n=n.getCenter(new Re),t=t+i.z/2;e.position.z+=t-n.z},computeBtmHeight:function(e){e.updateMatrixWorld();var t=e.boundingBox.clone().applyMatrix4(e.matrixWorld),n=t.getSize(new Re),t=t.getCenter(new Re);e.btmHeight=t.z-n.z/2},maintainBoundXY:function(e){e.updateMatrixWorld();var t=e.boundCenter.clone(),n=(this.getBoundCenter(e),e.boundCenter.clone()),n=(new Le).subVectors(t,n);e.position.x+=n.x,e.position.y+=n.y,e.boundCenter.copy(t)},maintainBoundCenter:function(e){e.updateMatrixWorld();var t=e.boundCenter.clone(),n=(this.getBoundCenter(e),e.boundCenter.clone()),n=(new Re).subVectors(t,n);e.position.add(n),e.boundCenter.copy(t)},modelTransformCallback:function(r){r.updateMatrixWorld(),r.matrixWorld.equals(r.lastMatrixWorld)||(viewer.scene.measurements.forEach(function(n){var i;n.points_datasets.forEach(function(e,t){e==r.dataset_id&&(i=!0,n.points[t]=Potree.Utils.datasetPosTransform({fromDataset:!0,datasetId:e,position:n.dataset_points[t].clone()}),n.updateMarker(n.markers[t],n.points[t]))}),i&&(n.getPoint2dInfo(n.points),n.update(),n.setSelected(!1))}),r.lastMatrixWorld=r.matrixWorld.clone())},changeOpacity:function(t,n){var e=null!=t.dataset_id;t.isPointcloud?t.changePointOpacity(n):t.traverse(function(e){e.material&&((e.material.opacity=n)<1?(e.material.transparent=!0,t.isPointcloud?e.changePointOpacity(n):e.material.opacity=n,e.renderOrder=Potree.config.renderOrders.model+1,e.material.depthWrite=!1):(e.material.transparent=!1,e.renderOrder=Potree.config.renderOrders.model,e.material.depthWrite=!0))}),e&&(t.opacity=n)}},C1=new Nc,B1=new Ba(1,1),_1={nearBound:2,scale:.5,restricMeshScale:!0},M1=function(){y(n,zn);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).route=[],e.curve=[],e.scenePoints=[],e.sceneMeshGroup=new K,e.mapMeshGroup=new K,e.generateDeferred,viewer.addEventListener("loadPointCloudDone",e.init.bind(G(e))),e.lastResult,e.datasetIds=[],e}return A(n,[{key:"init",value:function(){var n,e,i=this;this.inited||(viewer.mapViewer.addEventListener("camera_changed",function(e){var t;i.routeStart&&i.routeEnd&&(t=e.viewport.camera,ag.intervalTool.isWaiting("routeCameraInterval",function(){if(t.zoom!=n)return i.updateMapArrows(!0),n=t.zoom,!0},sf.isMobile()?500:200))}),viewer.addEventListener("camera_changed",function(e){i.routeStart&&i.routeEnd&&e.changeInfo.positionChanged&&ag.intervalTool.isWaiting("routeCameraInterval",function(){return i.updateArrowDisplay(),!0},1e3)}),(e={shadowMat:new L({transparent:!0,depthTest:!1,map:C1.load(Potree.resourcePath+"/textures/pano_instruction_bottomMarker.png")}),sphereMat:new L({transparent:!0,depthTest:!1,map:C1.load(Potree.resourcePath+"/textures/whiteCircle.png")}),hatMats:{start:new L({transparent:!0,depthTest:!1,map:C1.load(Potree.resourcePath+"/textures/pano_instruction_start_route.png")}),end:new L({transparent:!0,depthTest:!1,map:C1.load(Potree.resourcePath+"/textures/pano_instruction_target_reached.png")})}}).shadowMat.map.anisotropy=4,this.poleStart=this.createPole(e,"start"),this.poleEnd=this.createPole(e,"end"),this.sceneMeshGroup.add(this.poleStart),this.sceneMeshGroup.add(this.poleEnd),(e=C1.load(Potree.resourcePath+"/textures/routePoint_panorama.png")).anisotropy=4,this.arrow=new Z(B1,new L({transparent:!0,depthTest:!1,map:e})),this.arrow.scale.set(.5,.5,.5),viewer.setObjectLayers(this.arrow,"sceneObjects"),this.arrows=new K,this.sceneMeshGroup.add(this.arrows),viewer.setObjectLayers(this.sceneMeshGroup,"sceneObjects"),viewer.scene.scene.add(this.sceneMeshGroup),this.sceneMeshGroup.visible=!1,e=C1.load(Potree.resourcePath+"/textures/routePoint_map_fsna.png"),this.mapArrowMats={default:new L({transparent:!0,depthTest:!1,map:e}),fade:new L({transparent:!0,depthTest:!1,map:e,opacity:.4})},this.mapArrow=new Z(B1,this.mapArrowMats.default),this.mapArrow.scale.set(.5,.5,.5),this.mapArrows=new K,this.mapArrows.name="mapArrows",this.mapMeshGroup.add(this.mapArrows),this.mapMeshGroup.name="mapRouteLayer",this.mapMeshGroup.visible=!1,viewer.mapViewer.dispatchEvent({type:"add",object:this.mapMeshGroup,name:"route"}),this.mapArrow.layers.mask=this.mapArrows.layers.mask,viewer.modules.SiteModel.bus.addEventListener("FloorChange",function(){i.routeStart&&i.routeEnd&&i.updateOpacityAtMap()}),this.inited=!0)}},{key:"updateOpacityAtMap",value:function(){var n=this,i=viewer.modules.SiteModel.currentFloor;this.mapArrows.children.forEach(function(e,t){t=n.mapPoints[t].clone(),t.z+=.3,t=i&&i.ifContainsPoint(t);e.material=t?n.mapArrowMats.default:n.mapArrowMats.fade}),viewer.mapViewer.dispatchEvent("content_changed")}},{key:"createPole",value:function(e,t){var n=_1.scale,i=new K,r=(i.name="pole_"+t,new Z(B1,e.shadowMat));r.scale.set(n,n,n);i.add(r);for(var a=0;a<6;a++){var o=new Jm({mat:e.sphereMat});o.position.set(0,0,1.5/7*(a+1)),o.scale.set(.04,.04,.04),o.visible=!1,i.add(o)}n=new Jm({mat:e.hatMats[t],sizeInfo:_1});return o.visible=!1,n.position.set(0,0,1.5),n.scale.copy(r.scale),i.add(n),i}},{key:"addTestArrow",value:function(){}},{key:"addArrow",value:function(e){var t=this.arrow.clone();t.position.copy(e),this.arrows.add(t)}},{key:"addMapArrow",value:function(e){var t=this.mapArrow.clone();t.position.copy(e).setZ(0),this.mapArrows.add(t)}},{key:"setArrowDir",value:function(e,t){var n=e[t],e=e[t+1],t=e?e.position:this.endPolePos,e=(new Re).subVectors(n.position,t).setZ(0),t=Math.atan2(e.y,e.x)+Math.PI/2;n.rotation.z=t}},{key:"setRouteStart",value:function(e,t,n){this.routeStart&&e&&this.routeStart.equals(e)||(this.routeStart=e&&(new Re).copy(e),t&&this.routeStart&&(this.routeStart.setZ(this.getZAtMap()),this.bus)&&this.bus.emit("reposStartMarker",this.routeStart),console.log("setRouteStart",this.routeStart&&this.routeStart.toArray()),this.datasetIds[0]=n,this.generateRoute())}},{key:"setStartPole",value:function(e){this.startPolePos=e,this.bus&&this.bus.emit("reposStartMarker",e)}},{key:"setRouteEnd",value:function(e,t,n){this.routeEnd&&e&&this.routeEnd.equals(e)||(this.routeEnd=e&&(new Re).copy(e),t&&this.routeEnd&&(this.routeEnd.setZ(this.getZAtMap()),this.bus)&&this.bus.emit("reposEndMarker",this.routeEnd),console.log("setRouteEnd",this.routeEnd&&this.routeEnd.toArray()),this.datasetIds[1]=n,this.generateRoute())}},{key:"getZAtMap",value:function(){var e=ag.sortByScore(viewer.images360.panos,[],[function(e){return-Math.abs(e.position.z-viewer.images360.position.z)}]),e=e&&e[0]&&e[0].item;return e?e.floorPosition.z:viewer.bound.boundingBox.min.z+1}},{key:"setEndPole",value:function(e){this.endPolePos=e,this.bus&&this.bus.emit("reposEndMarker",e)}},{key:"getSourceProjectionIndex",value:function(e){e=e.findIndex(function(e){return e.instruction&&"source_projection_to_navgraph"===e.instruction.type});return e<0?0:e}},{key:"getDestinationProjectionIndex",value:function(e){var t=e.findIndex(function(e){return e.instruction&&"destination_projection_to_navgraph"===e.instruction.type});return t<0?e.length-1:t}},{key:"generateRoute",value:function(){var a=this;if(this.routeStart&&this.routeEnd){var i=function(){a.routeLength=a.route.reduce(function(e,t,n,i){return 0==n?0:e+t.distanceTo(i[n-1])},0);var e=Math.max(2,Math.round(+a.routeLength)),t=new Jc(a.route),t=(t.curveType="chordal",(a.curve=t).getSpacedPoints(e)),e=(t.splice(0,1),t.pop(),a.scenePoints=t,a.updateMapArrows(),a.displayRoute(),new Le(1,1)),n=new bd,t=(a.route.forEach(function(e){n.expandByPoint(e)}),n.getSize(new Le)),i=new Le(115,40),r=viewer.mapViewer.viewports[0].resolution2,r=r.x*r.y,r=(32e4<r&&i.multiplyScalar(r/32e4),t.clone().divide(viewer.mapViewer.viewports[0].resolution2).multiply(i)),i=(t.add(r),n.getCenter(new Le));t.x=Math.max(t.x,e.x),t.y=Math.max(t.y,e.y);viewer.mapViewer.moveTo(i,t,1e3),a.bus.emit("gotResult",{dis:a.routeLength})};if(Potree.fileServer){var t=function(e){var t,n;e.data?(e=e.data,a.clearRoute(),(t=e.length)<2?(console.log("路径点数为"+t+",直接取起点和终点连线"),a.route=[a.routeStart,a.routeEnd]):(t=a.getSourceProjectionIndex(e),n=a.getDestinationProjectionIndex(e),e.slice(t,n+1).forEach(function(e,t){e=viewer.transform.lonlatToLocal.forward(e.location.slice(0)),e=(new Re).fromArray(e);a.route.push(e)}),console.log(a.route)),a.setStartPole(a.route[0]),a.setEndPole(a.route[a.route.length-1]),i()):(console.log("没有数据"),t=e&&4002==e.code?e:a.routeStart.distanceTo(a.routeEnd)<1?{code:500,msg:"距离太短,无法规划路线"}:{code:500,msg:"超出数据集范围,无法规划路线"},a.clearRoute(),a.setStartPole(a.routeStart),a.setEndPole(a.routeEnd),a.displayRoute(),a.bus&&a.bus.emit("gotResult",t))};if(this.lastResult&&(this.lastResult.data||4002!=this.lastResult.data.code)){var e=ag.CloneObject(this.lastResult.data);if(this.lastResult.routeStart.equals(this.routeStart)&&this.lastResult.routeEnd.equals(this.routeEnd)?r=!0:this.lastResult.routeStart.equals(this.routeEnd)&&this.lastResult.routeEnd.equals(this.routeStart)&&(r=!0,e.data)&&(e.data=this.lastResult.data.data.slice(0).reverse()),r)return console.log("直接用上次的结果"),setTimeout(function(){t(e)},1)}var n,r=this.routeStart.clone(),o=this.routeEnd.clone(),s=viewer.transform.lonlatToLocal.inverse(r),l=viewer.transform.lonlatToLocal.inverse(o),u={source_longitude:s.x,source_latitude:s.y,source_z:r.z,destination_longitude:l.x,destination_latitude:l.y,destination_z:o.z},c="/laser/route/".concat(Potree.settings.number,"/getRoute/").concat(Potree.settings.originDatasetId,"?");for(n in u)c+=n+"="+u[n]+"&";Potree.fileServer.get(c).then(function(e){console.log(e.data),a.routeStart&&a.routeEnd&&(a.lastResult={routeStart:a.routeStart.clone(),routeEnd:a.routeEnd.clone(),data:e},t(e))})}else this.clearRoute(),this.route=[this.routeStart,this.routeEnd],i()}}},{key:"updateMapArrows",value:function(e){var t,n;0!=this.route.length&&(t=viewer.mapViewer.camera.zoom,(n=Math.max(2,Math.round(this.routeLength*t/25)))!=this.mapPoints.length+1)&&((n=this.curve.getSpacedPoints(n)).splice(0,1),n.pop(),this.mapPoints=n,this.mapArrow.scale.set(.6*(n=25/t),.6*n,.6*n),e&&(this.clearRoute({resetMap:!0}),this.displayRoute({resetMap:!0})),this.updateOpacityAtMap())}},{key:"updateArrowDisplay",value:function(){var n;0!=this.scenePoints.length&&(n=viewer.scene.getActiveCamera().position,this.arrows.children.forEach(function(e,t){e.position.distanceTo(n)<10?e.visible=!0:e.visible=!1}))}},{key:"displayRoute",value:function(){var n=this;(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).resetMap||(this.poleStart.position.copy(this.startPolePos||this.routeStart),this.poleEnd.position.copy(this.endPolePos||this.routeEnd),this.scenePoints.forEach(function(e){return n.addArrow(e)}),this.arrows.children.forEach(function(e,t){return n.setArrowDir(n.arrows.children,t)})),this.sceneMeshGroup.traverse(function(e){return e.visible=!0}),this.mapMeshGroup.visible=!0,this.mapPoints.forEach(function(e){return n.addMapArrow(e)}),this.mapArrows.children.forEach(function(e,t){return n.setArrowDir(n.mapArrows.children,t)}),viewer.mapViewer.dispatchEvent({type:"content_changed"}),this.updateArrowDisplay()}},{key:"clearRoute",value:function(){var t=this;(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).resetMap||(this.routeLength=0,this.route=[],this.scenePoints=[],this.mapPoints=[],this.arrows.children.slice(0).forEach(function(e){t.arrows.remove(e)})),this.mapArrows.children.slice(0).forEach(function(e){t.mapArrows.remove(e)}),this.sceneMeshGroup.traverse(function(e){return e.visible=!1}),this.mapMeshGroup.visible=!1,viewer.mapViewer.dispatchEvent({type:"content_changed"})}},{key:"clear",value:function(){console.log("导航clear"),this.routeStart=null,this.routeEnd=null,this.clearRoute()}}]),n}(),T1=[{name:"top",axis:["x","y"],direction:new Re(0,0,-1),openCount:0}],S1=function(){y(n,zn);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).views={},e.cameras={},e.orthoCamera=new mh(-100,100,100,100,.01,1e4),e.orthoCamera.up.set(0,0,1),e}return A(n,[{key:"init",value:function(){var n=this;this.inited||(this.initViews(),this.inited=!0,this.prepareRecord=!0,this.activeViewName="mainView",this.events={transfromCallback:function(e){n.adjustCamHeight()},selectCallback:function(e){n.adjustCamHeight();var t="mainView"!=n.activeViewName||0<e.selection.length;Potree.settings.unableNavigate&&!t?setTimeout(function(){Potree.settings.unableNavigate="mainView"!=n.activeViewName||0<e.selection.length},300):Potree.settings.unableNavigate=t},onkeydown:function(e){8!=e.keyCode&&46!=e.keyCode||viewer.inputHandler.selection[0]&&viewer.scene.removeVolume(viewer.inputHandler.selection[0])}})}},{key:"initViews",value:function(){this.splitScreenTool=new Mw;for(var e=0;e<1;e++){var t=T1[e],n=new Dg;this.views[t.name]=n,this.cameras[t.name]=this.orthoCamera,n.direction=t.direction}this.views.mainView=viewer.mainViewport.view,this.cameras.mainView=viewer.mainViewport.camera}},{key:"switchView",value:function(t){var e,n,i,r,a,o,s;this.activeViewName!=t&&(e=this.views[t],n=this.cameras[t],i=T1.find(function(e){return e.name==t}),(a=viewer.bound).boundSize,r=a.center,a=a.boundingBox,this.lastViewName=this.activeViewName,this.activeViewName=t,o=this.views[this.lastViewName],s=this.cameras[this.lastViewName],viewer.mainViewport.view=e,viewer.mainViewport.camera=n,s&&(o.zoom=s.zoom),"mainView"==t?Potree.settings.unableNavigate=!1:(Potree.settings.unableNavigate=!0,0==i.openCount&&(this.orthoMoveFit(r,{bound:a},0),this.camHeightOutOfModel=e.position.z),i.openCount++,this.adjustCamHeight(),e.zoom&&(n.zoom=e.zoom)),viewer.updateScreenSize({forceUpdateSize:!0}),viewer.inputHandler.selection.length)&&this.focusOnObject(viewer.inputHandler.selection[0])}},{key:"focusOnObject",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;"mainView"==this.activeViewName?viewer.focusOnObject({boundingBox:e.boundingBox.clone().applyMatrix4(e.matrixWorld)},"boundingBox",t):this.orthoMoveFit(e.position,{bound:e.boundingBox.clone().applyMatrix4(e.matrixWorld)},t),this.adjustCamHeight()}},{key:"orthoMoveFit",value:function(e,t,n){var i={x:.4*viewer.mainViewport.resolution.x,y:.4*viewer.mainViewport.resolution.y};this.splitScreenTool.viewportFitBound(viewer.mainViewport,t.bound,e,n,i)}},{key:"adjustCamHeight",value:function(){var e,t;"top"==this.activeViewName&&(e=this.views.top,t=viewer.inputHandler.selection.length?(t=viewer.inputHandler.selection[0]).boundingBox.clone().applyMatrix4(t.matrixWorld).max.z:this.camHeightOutOfModel,e.position.z=t)}},{key:"enter",value:function(){this.init(),viewer.transformationTool.setModeEnable(["translation"]),viewer.transformationTool.frame.material.visible=!1,this.targetPlane=viewer.mainViewport.targetPlane=new $i,this.shiftTarget=viewer.mainViewport.shiftTarget=new Re,this.getAllBoxes().forEach(function(e){viewer.updateVisible(e,"hidden",!0)}),viewer.transformationTool.history.clear(),viewer.transformationTool.addEventListener("transformed",this.events.transfromCallback),viewer.inputHandler.addEventListener("selection_changed",this.events.selectCallback),viewer.inputHandler.addEventListener("keydown",this.events.onkeydown),this.setPointLevelAuto();var e=viewer.scene.pointclouds.find(function(e){return e.dataset_id==Potree.settings.originDatasetId});viewer.scene.pointclouds.forEach(function(e){e.dataset_id!=Potree.settings.originDatasetId?(viewer.updateVisible(e,"enterClipping",!1),e.panos.forEach(function(e){return e.setEnable(!1)})):viewer.updateVisible(e,"enterClipping",!0,1,"add")}),viewer.flyToDataset({pointcloud:e,duration:0})}},{key:"leave",value:function(){viewer.transformationTool.setModeEnable(["scale","translation","rotation"]),viewer.transformationTool.frame.material.visible=!0,this.switchView("mainView"),this.getAllBoxes().forEach(function(e){viewer.updateVisible(e,"hidden",!1)}),viewer.transformationTool.removeEventListener("transformed",this.events.transfromCallback),viewer.inputHandler.removeEventListener("selection_changed",this.events.selectCallback),viewer.transformObject(null),viewer.transformationTool.history.clear(),viewer.scene.pointclouds.forEach(function(e){e.dataset_id!=Potree.settings.originDatasetId?(viewer.updateVisible(e,"enterClipping",!0),e.panos.forEach(function(e){return e.setEnable(!0)})):viewer.updateVisible(e,"enterClipping",!1,0,"cancel")})}},{key:"setTranMode",value:function(e){this.tranMode=e,viewer.transformationTool.setModeEnable([e])}},{key:"setPointLevelAuto",value:function(){viewer.setPointBudget(5e6),Potree.settings.sizeFitToLevel=!0,viewer.setPointLevels()}},{key:"getAllBoxes",value:function(){return viewer.scene.volumes.filter(function(e){return e.clip&&e instanceof Potree.BoxVolume})}},{key:"getCalcData",value:function(){var n=viewer.modules.Clip;return{transformation_matrix:viewer.scene.pointclouds.filter(function(e){return e.dataset_id==Potree.settings.originDatasetId}).map(function(t){return{id:t.dataset_id,matrix:(new _e).elements,VisiMatrixes:t.material.clipBoxes_in.filter(function(e){return!e.box.isNew}).map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),UnVisiMatrixes:t.material.clipBoxes_out.filter(function(e){return!e.box.isNew}).map(function(e){return n.getTransformationMatrix(t,e.inverse).elements}),modelMatrix:(new _e).copy(t.transformMatrix).transpose().elements}}),aabb:"b-12742000 -12742000 -12742000 12742000 12742000 12742000"}}},{key:"saveClipData",value:function(){var e=!viewer.clipUnabled,t=(viewer.setClipState(!0),this.getAllBoxes().filter(function(e){return!e.isNew}).map(function(e){return{clipTask:e.clipTask,position:Potree.Utils.datasetPosTransform({position:e.position,toDataset:!0,datasetId:Potree.settings.originDatasetId}).toArray(),rotation:Potree.Utils.datasetRotTransform({rotation:e.rotation,toDataset:!0,datasetId:Potree.settings.originDatasetId,getRotation:!0}).toArray().slice(0,3),scale:e.scale.toArray()}}));return console.log(t),console.log(JSON.stringify(t)),viewer.setClipState(e),t}},{key:"loadFromData",value:function(){(0<arguments.length&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){var t=new Potree.BoxVolume({clip:!0,clipTask:e.clipTask});t.scale.fromArray(e.scale),t.position.fromArray(e.position),t.rotation.fromArray(e.rotation),t.position.copy(Potree.Utils.datasetPosTransform({position:t.position,fromDataset:!0,datasetId:Potree.settings.originDatasetId})),t.rotation.copy(Potree.Utils.datasetRotTransform({rotation:t.rotation,fromDataset:!0,datasetId:Potree.settings.originDatasetId,getRotation:!0})),viewer.scene.addVolume(t),viewer.volumeTool.scene.add(t)})}}]),n}(),I1=(new sa(1,1,1,1),new L({wireframe:!0,color:"#ffffff"}),function(){y(o,Pl);var a=C(o);function o(e){var t,n;for(n in te(this,o),t=a.call(this),e)t[n]=e[n];t.strength=t.strength||1,t.radius=e.radius||1,t.height=e.height||5,t.computeParams(),t.geometry=t.createGeometry(t.radius,t.height,t.particleCount),null==t.color&&(t.color=16724480),t.createMaterial(),t.velocity=new Re,t.acceleration=new Re,t.angle=0,t.angleVelocity=0,t.angleAcceleration=0,t.size=16,t.opacity=1,t.age=0,t.alive=0,t.sizeTween=null,t.colorTween=null,t.opacityTween=null,t.setSize({viewport:viewer.mainViewport}),t.setFov(viewer.fov);function i(e){"MainView"==e.viewport.name&&t.setSize(e)}function r(e){t.setFov(e.fov)}return viewer.addEventListener("resize",i),viewer.addEventListener("fov_changed",r),t.addEventListener("dispose",function(){viewer.removeEventListener("resize",i),viewer.removeEventListener("fov_changed",r)}),t}return A(o,[{key:"computeParams",value:function(){var e=(this.curve?this.curve.wholeLength:0)+2*this.radius;this.size=.3+2.7*Be.smoothstep(this.radius,.3,10),this.particleCount=Math.ceil(e*Math.sqrt(this.strength*this.height)*this.radius/(this.size*this.size)*25)}},{key:"getPointsForBound",value:function(){return this.boundPoints}},{key:"getBound",value:function(e){var n=this,i=(this.boundPoints=[],new Y),t=.13*this.size+.3,e=(e.forEach(function(e){var t=e.clone();t.z+=n.height,i.expandByPoint(e),i.expandByPoint(t),n.boundPoints.push(e,t)}),this.radius+t);i.expandByVector(new Re(e,e,t)),this.boundingBox=i}},{key:"createGeometry",value:function(e,t,n){for(var i,r,a=new j,o=(1<this.positions.length?(i=Math.ceil(this.curve.wholeLength/.2)+1,i=(r=this.curve.getSpacedPoints(i)).length,this.getBound(r)):this.getBound(this.positions),new Float32Array(3*n)),s=new Float32Array(n),l=new Float32Array(n),u=new Float32Array(n),c=0;c<n;c++){var h,d,p=(new Re).copy(1<this.positions.length?r[Math.floor(c/n*i)]:this.positions[0]);u[c]=p.z,0===c?(o[3*c+0]=p.x,o[3*c+1]=p.y,o[3*c+2]=p.z):(h=Math.sqrt(Math.random())*e,d=2*Math.random()*Math.PI,o[3*c+0]=p.x+Math.cos(d)*h,o[3*c+1]=p.y+Math.sin(d)*h,o[3*c+2]=p.z+(e-h)/e*t/2+t/2,l[c]=.25*(4*Math.random()|0),s[c]=Math.random())}return a.setAttribute("centerHeight",new Q(u,1)),a.setAttribute("position",new Q(o,3)),a.setAttribute("randam",new Q(s,1)),a.setAttribute("sprite",new Q(l,1)),a}},{key:"updateGeometry",value:function(){this.computeParams(),this.geometry.dispose(),this.geometry=this.createGeometry(this.radius,this.height,this.particleCount),this.material.uniforms.size.value=this.size}},{key:"createMaterial",value:function(){var e=new pa({uniforms:{color:{type:"c",value:new Me(this.color)},size:{type:"f",value:this.size},u_sampler:{type:"t",value:a1=a1||(new Nc).load(Potree.resourcePath+"/textures/fire.png")},time:{type:"f",value:0},heightOfNearPlane:{type:"f",value:0},height:{type:"f",value:this.height}},vertexShader:"\n attribute float randam;\n attribute float sprite;\n attribute float centerHeight; //add\n \n //uniform float fireHeight; //add \n uniform float time;\n uniform float size;\n uniform float heightOfNearPlane;\n \n \n \n \n //varying float heightRatio;\n varying float vSprite;\n varying float vOpacity; \n float PI = 3.14;\n\n float quadraticIn( float t ) \n { \n float tt = t * t;\n return tt * tt; \n //变化曲线 越来越快\n } \n \n void main() {\n float progress = fract( time + ( 2.0 * randam - 1.0 ) );\n float progressNeg = 1.0 - progress;\n float ease = quadraticIn( progress );\n float influence = sin( PI * ease );\n //vec3 newPosition = position * vec3( 1.0, 1.0 , ease);\n vec3 newPosition = position;\n newPosition.z = (newPosition.z - centerHeight) * ease + centerHeight;\n \n gl_Position = projectionMatrix * modelViewMatrix * vec4( newPosition, 1.0 );\n gl_PointSize = ( heightOfNearPlane * size ) / gl_Position.w;\n vOpacity = min( influence * 4.0, 1.0 ) * progressNeg;\n vSprite = sprite;\n \n //heightRatio = (newPosition.z - centerHeight) / fireHeight ;\n \n }\n",fragmentShader:"\n uniform vec3 color;\n uniform sampler2D u_sampler;\n\n varying float vSprite;\n varying float vOpacity;\n //varying float heightRatio;\n\n void main() \n {\n \n \n vec2 texCoord = vec2(gl_PointCoord.x * 0.25 + vSprite, gl_PointCoord.y);\n \n gl_FragColor = vec4( texture2D( u_sampler, texCoord ).xyz * color * vOpacity, 1.0 );\n \n \n }\n",blending:ye,depthTest:!0,depthWrite:!1,transparent:!0});this.material=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setSize",value:function(e){e=e.viewport;this.screenHeight=e.resolution.y,this.setPerspective(this.fov,this.screenHeight)}},{key:"setFov",value:function(e){this.fov=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setPerspective",value:function(e,t){t=Math.abs(t/(2*Math.tan(Be.degToRad(.5*e))));this.material.uniforms.heightOfNearPlane.value=t}},{key:"update",value:function(e){viewer.getObjVisiByReason(this,"force")&&(Potree.Utils.isInsideFrustum(this.boundingBox,viewer.scene.getActiveCamera())?(viewer.updateVisible(this,"isInsideFrustum",!0),this.material.uniforms.time.value=(this.material.uniforms.time.value+(e*=1))%1):viewer.updateVisible(this,"isInsideFrustum",!1))}},{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose(),this.dispatchEvent("dispose")}}]),o}()),D1=function(){function n(e,t){te(this,n),this.times=e||[],this.values=t||[]}return A(n,[{key:"lerp",value:function(e){if(0!=this.times.length){for(var t,n=0,i=this.times.length;n<i&&e>this.times[n];)n++;return 0==n?this.values[0]:n==i?this.values[i-1]:(t=(e-this.times[n-1])/(this.times[n]-this.times[n-1]),this.values[0]instanceof Re?this.values[n-1].clone().lerp(this.values[n],t):this.values[n-1]+t*(this.values[n]-this.values[n-1]))}}},{key:"clone",value:function(){return ag.CloneClassObject(this)}}]),n}(),P1=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};te(this,t),this.position=new Re,this.velocity=new Re,this.angle=0,this.angleVelocity=0,this.angleAcceleration=0,this.size=16,this.color=new Me,this.opacity=1,this.age=0,this.alive=0,this.lastChangeVage=0,this.sizeTween=e.sizeTween||new D1([0,1],[32,128]),this.opacityTween=e.opacityTween||new D1([.8,2],[.5,0]),this.colorTween=e.colorTween||new D1([.4,1],[new Re(0,0,.2),new Re(0,0,.5)])}return A(t,[{key:"update",value:function(e){this.position.add(this.velocity.clone().multiplyScalar(e)),this.velocity.multiplyScalar(1+this.acceleration*e),this.angle+=.01745329251*this.angleVelocity*e,this.angleVelocity+=.01745329251*this.angleAcceleration*e,this.age+=e,0<this.sizeTween.times.length&&(this.size=this.sizeTween.lerp(this.age/this.deathAge)),0<this.colorTween.times.length&&(e=this.colorTween.lerp(this.age/this.deathAge),this.color=(new Me).setHSL(e.x,e.y,e.z)),0<this.opacityTween.times.length&&(this.opacity=this.opacityTween.lerp(this.age/this.deathAge))}}]),t}(),k1="\n attribute vec3 customColor;\n attribute float customOpacity;\n attribute float customSize;\n attribute float customAngle;\n attribute float customVisible; \n uniform float heightOfNearPlane;\n \n \n varying vec4 vColor;\n varying float vAngle;\n void main()\n {\n if ( customVisible > 0.5 ) \t\t\t\t\n vColor = vec4( customColor, customOpacity ); \n else\t\t\t\t\t\t\t\n vColor = vec4(0.0, 0.0, 0.0, 0.0);\t\t\n \n vAngle = customAngle;\n\n vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n //gl_PointSize = customSize * ( 300.0 / length( mvPosition.xyz ) ); \n gl_Position = projectionMatrix * mvPosition;\n gl_PointSize = ( heightOfNearPlane * customSize ) / gl_Position.w;\n \n \n }\n",L1=(Object.freeze({CUBE:1,SPHERE:2}),new sa(1,1,1,1),new L({wireframe:!0,color:"#ffffff"}),{positions:[],positionStyle:"sphere",positionBase:new Re(0,0,0),positionSpread:new Re(1,1,0),radius:1,velocityStyle:"cube",velocityBase:new Re(0,0,.5),velocitySpread:new Re(1,1,.3),accelerationBase:.3,accelerationSpread:.6,speedBase:.1,speedSpread:.5,angleBase:0,angleSpread:360,angleVelocityBase:1,angleVelocitySpread:30,angleAccelerationBase:1,angleAccelerationSpread:5,sizeBase:0,sizeSpread:0,sizeTween:[[0,.3,1],[.3,1.4,6]],colorBase:new Re(0,1,.5),colorSpread:new Re(0,0,0),colorTween:new D1([.2,1],[new Re(0,0,.4),new Re(0,0,.1)]),opacityBase:.1,opacitySpread:.2,opacityTween:[[0,.1,.9,1],[.1,.4,.03,0]],strength:1,particleDeathAge:3,height:3}),R1=(new Z(new zu(.03,5,5),new L({color:"white",depthTest:!1})),function(){y(s,Pl);var o=C(s);function s(){var t,e,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};for(e in te(this,s),(t=o.call(this)).blendStyle=Ae,t.emitterAge=0,n=$.extend({},L1,n)){var i=n[e];i instanceof Array&&i[0]instanceof Array?t[e]=re(D1,J(i)):i instanceof Re||i instanceof Me?t[e]=i.clone():t[e]=i}t.defaultSizeTween=t.sizeTween.clone(),t.defaultOpacityTween=t.opacityTween.clone(),t.geometry=new j,t.computeParams(),t.createMaterial(),t.createGeometry(),t.dynamic=!0,t.sortParticles=!0,t.frustumCulled=!1,n.position&&t.position.copy(n.position),t.setSize({viewport:viewer.mainViewport}),t.setFov(viewer.fov);function r(e){"MainView"==e.viewport.name&&t.setSize(e)}function a(e){t.setFov(e.fov)}return viewer.addEventListener("resize",r),viewer.addEventListener("fov_changed",a),t.addEventListener("dispose",function(){viewer.removeEventListener("resize",r),viewer.removeEventListener("fov_changed",a)}),t}return A(s,[{key:"computeParams",value:function(){var e=(this.curve?this.curve.wholeLength:0)+2*this.radius,t=("cube"==this.positionStyle&&this.positionSpread.set(this.radius,this.radius,0),this.velocityBase.set(0,0,(this.height-.5*this.accelerationBase*this.particleDeathAge*this.particleDeathAge)/this.particleDeathAge),this.velocityBase.z=Math.max(0,this.velocityBase.z),this.particleCount=Math.ceil(e*Math.sqrt(this.strength*this.height*this.radius)),this.particleCount=Math.max(5,this.particleCount),+Be.smoothstep(this.strength,.01,1)+1),n=(this.sizeTween.values=this.defaultSizeTween.values.map(function(e){return e*t}),1+.5*Be.smoothstep(this.strength,.01,1));this.opacityTween.values=this.defaultOpacityTween.values.map(function(e){return e*n})}},{key:"reStart",value:function(){this.emitterAge=0,this.createGeometry()}},{key:"updateGeometry",value:function(){this.computeParams(),this.reStart()}},{key:"createParticle",value:function(e){var t,n,i=new P1({sizeTween:this.sizeTween,opacityTween:this.opacityTween,colorTween:this.colorTween}),r=(i.deathAge=this.particleDeathAge,i.center=e,"cube"==this.positionStyle&&(i.position=this.randomVector3(this.positionBase,this.positionSpread)),"sphere"==this.positionStyle&&(r=2*Math.random()-1,n=2*Math.PI*Math.random(),t=Math.sqrt(1-r*r),r=new Re(t*Math.cos(n),r,.2*Math.abs(t*Math.sin(n))),i.position=(new Re).addVectors(this.positionBase,r.multiplyScalar(this.radius))),i.position.add(e),"cube"==this.velocityStyle&&(i.velocity=this.randomVector3(this.velocityBase,this.velocitySpread)),"sphere"==this.velocityStyle&&(t=new Re(0,0,1),n=this.randomValue(this.speedBase,this.speedSpread),i.velocity=t.normalize().multiplyScalar(n)),i.acceleration=this.randomValue(this.accelerationBase,this.accelerationSpread),i.angle=this.randomValue(this.angleBase,this.angleSpread),i.angleVelocity=this.randomValue(this.angleVelocityBase,this.angleVelocitySpread),i.angleAcceleration=this.randomValue(this.angleAccelerationBase,this.angleAccelerationSpread),i.size=this.randomValue(this.sizeBase,this.sizeSpread),this.randomVector3(this.colorBase,this.colorSpread));return i.color=(new Me).setHSL(r.x,r.y,r.z),i.opacity=this.randomValue(this.opacityBase,this.opacitySpread),i.age=0,i.alive=0,i}},{key:"getPointsForBound",value:function(){return this.boundPoints}},{key:"getBound",value:function(e){var n=this,i=(this.boundPoints=[],new Y),t=.11*this.sizeTween.values.slice().sort(function(e,t){return t-e})[0],r=.5+t,e=(e.forEach(function(e){var t=e.clone();t.z+=n.height,i.expandByPoint(e),i.expandByPoint(t),n.boundPoints.push(e,t)}),this.radius+r);i.expandByVector(new Re(e,e,0)),i.min.z-=t,i.max.z+=r,this.boundingBox=i}},{key:"createGeometry",value:function(){this.particleArray=[];var e,i,r,t,n=[],a=[],o=[],s=[],l=[],u=[];1<this.positions.length?(e=Math.ceil(this.curve.wholeLength/.6)+1,e=(i=this.curve.getSpacedPoints(e)).length,r=i.slice(),t=function(e){var t=Math.random(),t=Math.floor(r.length*t),n=r[t];return 1==r.length?r=i.slice():r.splice(t,1),n},this.getBound(i)):this.getBound(this.positions);for(var c=0;c<this.particleCount;c++){var h=(new Re).copy(1<this.positions.length?t(c):this.positions[0]);this.particleArray[c]=this.createParticle(h),n[3*c]=this.particleArray[c].position.x,n[3*c+1]=this.particleArray[c].position.y,n[3*c+2]=this.particleArray[c].position.z,a[3*c]=this.particleArray[c].color.r,a[3*c+1]=this.particleArray[c].color.g,a[3*c+2]=this.particleArray[c].color.b,o[c]=this.particleArray[c].alive,s[c]=this.particleArray[c].opacity,l[c]=this.particleArray[c].size,u[c]=this.particleArray[c].angle}this.geometry.setAttribute("position",new Q(new Float32Array(n),3)),this.geometry.setAttribute("customColor",new Q(new Float32Array(a),3)),this.geometry.setAttribute("customVisible",new Q(new Float32Array(o),1)),this.geometry.setAttribute("customOpacity",new Q(new Float32Array(s),1)),this.geometry.setAttribute("customSize",new Q(new Float32Array(l),1)),this.geometry.setAttribute("customAngle",new Q(new Float32Array(u),1))}},{key:"createMaterial",value:function(){var e;this.material=new pa((z(e={uniforms:{u_sampler:{type:"t",value:o1=o1||(new Nc).load(Potree.resourcePath+"/textures/smokeparticle.png")},heightOfNearPlane:{type:"f",value:0}},vertexShader:k1},"vertexShader",k1),z(e,"fragmentShader","\n uniform sampler2D u_sampler;\n varying vec4 vColor;\t\n varying float vAngle; \n void main()\n {\n gl_FragColor = vColor;\n \n float c = cos(vAngle);\n float s = sin(vAngle);\n vec2 rotatedUV = vec2(c * (gl_PointCoord.x - 0.5) + s * (gl_PointCoord.y - 0.5) + 0.5, c * (gl_PointCoord.y - 0.5) - s * (gl_PointCoord.x - 0.5) + 0.5); \n vec4 rotatedTexture = texture2D( u_sampler, rotatedUV );\n gl_FragColor = gl_FragColor * rotatedTexture; \n }\n"),z(e,"transparent",!0),z(e,"alphaTest",.5),z(e,"blending",this.blendStyle),z(e,"depthTest",this.blendStyle!=Ae),e)),this.setPerspective(this.fov,this.screenHeight)}},{key:"update",value:function(e){if(viewer.getObjVisiByReason(this,"force"))if(Potree.Utils.isInsideFrustum(this.boundingBox,viewer.scene.getActiveCamera())){viewer.updateVisible(this,"isInsideFrustum",!0),1<e&&console.log("update dt>1",e);for(var t,n=[],i=[],r=[],a=[],o=[],s=[],l=[],u=[],c=0;c<this.particleCount;c++)this.particleArray[c].alive&&("cube"==this.velocityStyle&&(t=Math.random(),this.particleArray[c].age-this.particleArray[c].lastChangeVage>this.particleDeathAge*t)&&(this.particleArray[c].velocity=this.randomVector3(this.velocityBase,this.velocitySpread),this.particleArray[c].lastChangeVage=this.particleArray[c].age),this.particleArray[c].update(e),this.particleArray[c].age>this.particleDeathAge&&(this.particleArray[c].alive=0,n.push(c),i.push((this.particleArray[c].age-this.particleDeathAge)%this.particleDeathAge)),r[3*c]=this.particleArray[c].position.x,r[3*c+1]=this.particleArray[c].position.y,r[3*c+2]=this.particleArray[c].position.z,a[3*c]=this.particleArray[c].color.r,a[3*c+1]=this.particleArray[c].color.g,a[3*c+2]=this.particleArray[c].color.b,o[c]=this.particleArray[c].alive,s[c]=this.particleArray[c].opacity,l[c]=this.particleArray[c].size,u[c]=this.particleArray[c].angle);if(this.geometry.setAttribute("position",new Q(new Float32Array(r),3)),this.geometry.setAttribute("customColor",new Q(new Float32Array(a),3)),this.geometry.setAttribute("customVisible",new Q(new Float32Array(o),1)),this.geometry.setAttribute("customOpacity",new Q(new Float32Array(s),1)),this.geometry.setAttribute("customSize",new Q(new Float32Array(l),1)),this.geometry.setAttribute("customAngle",new Q(new Float32Array(u),1)),this.geometry.attributes.customColor.needsUpdate=!0,this.geometry.attributes.customVisible.needsUpdate=!0,this.geometry.attributes.customOpacity.needsUpdate=!0,this.geometry.attributes.customSize.needsUpdate=!0,this.geometry.attributes.customAngle.needsUpdate=!0,this.emitterAge<this.particleDeathAge){var h=this.particleCount/this.particleDeathAge,d=Math.round(h*(this.emitterAge+0)),p=Math.round(h*(this.emitterAge+e));p>this.particleCount&&(p=this.particleCount);for(c=d;c<p;c++)this.particleArray[c].alive=1}for(var f=0;f<n.length;f++){c=n[f];this.particleArray[c]=this.createParticle(this.particleArray[c].center),this.particleArray[c].alive=1,this.particleArray[c].age=i[f],r[3*c]=this.particleArray[c].position.x,r[3*c+1]=this.particleArray[c].position.y,r[3*c+2]=this.particleArray[c].position.z}this.geometry.setAttribute("position",new Q(new Float32Array(r),3)),this.geometry.attributes.position.needsUpdate=!0,this.emitterAge+=e}else viewer.updateVisible(this,"isInsideFrustum",!1)}},{key:"randomValue",value:function(e,t){var n=Math.random();return e*n+t*(1-n)}},{key:"randomVector3",value:function(e,t){var n=new Re(Math.random()-.5,Math.random()-.5,Math.random()-.5);return(new Re).addVectors(e,(new Re).multiplyVectors(t,n))}},{key:"setSize",value:function(e){e=e.viewport;this.screenHeight=e.resolution.y,this.setPerspective(this.fov,this.screenHeight)}},{key:"setFov",value:function(e){this.fov=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setPerspective",value:function(e,t){t=Math.abs(t/(2*Math.tan(Be.degToRad(.5*e))));this.material.uniforms.heightOfNearPlane.value=t}},{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose(),this.dispatchEvent("dispose")}}]),s}()),F1=Math.PI/180,O1=function(){function e(){te(this,e),this.position=new Re,this.velocity=new Re,this.angle=0,this.angleVelocity=0,this.angleAcceleration=0,this.size=16,this.color=new Me,this.opacity=1,this.rebornCount=0,this.age=0,this.alive=0,this.deadAge=0,this.sizeTween=null,this.colorTween=null,this.opacityTween=null}return A(e,[{key:"update",value:function(e){this.position.add(this.velocity.clone().multiplyScalar(e)),this.velocity.multiplyScalar(1+this.acceleration*e),this.angle+=this.angleVelocity*F1*e,this.angleVelocity+=this.angleAcceleration*F1*e,this.age+=e,0<this.sizeTween.times.length&&(this.size=this.sizeTween.lerp(this.age/this.deathAge)),0<this.colorTween.times.length&&(e=this.colorTween.lerp(this.age/this.deathAge),this.color=(new Me).setHSL(e.x,e.y,e.z)),0<this.opacityTween.times.length&&(this.opacity=this.opacityTween.lerp(this.age/this.deathAge))}}]),e}(),N1=new(function(){function e(){te(this,e)}return A(e,[{key:"randomValue",value:function(e,t){var n=Math.random();return e*n+t*(1-n)}},{key:"randomVector3",value:function(e,t){var n=new Re(Math.random()-.5,Math.random()-.5,Math.random()-.5);return(new Re).addVectors(e,(new Re).multiplyVectors(t,n))}}]),e}()),G1=1,U1=2,z1=(new zu(1,10,4),new L({wireframe:!0,color:"#ffffff"}),{position:new Re(0,0,1),positionShape:U1,positionRange:new Re(1,1,1),radius:1.3,velocityShape:U1,velocity:new Re(0,0,2),velocityRange:new Re(0,0,3),speed:.4,speedRange:1,size:.4,sizeRange:2,sizeTween:[[0,.04,.2,1],[.1,1,6,8]],color:new Re(1,1,1),colorRange:new Re(0,0,0),colorTween:new D1,opacity:1,opacityRange:0,opacityTween:new D1([0,.06,.3,.8,1],[0,1,.3,.05,0]),blendMode:ye,acceleration:.5,accelerationRange:0,angle:0,angleRange:0,angleVelocity:0,angleVelocityRange:0,angleAcceleration:0,angleAccelerationRange:0,strength:1,particleDeathAge:.7,recycleTimes:3,particleSpaceTime:3}),H1=function(){y(a,Pl);var r=C(a);function a(e){function t(e){"MainView"==e.viewport.name&&i.setSize(e)}function n(e){i.setFov(e.fov)}var i;te(this,a),(i=r.call(this)).age=0,i.alive=!0,i.loop=!0,i.blendMode=Ae,i.setParameters(e),i.createParticles(),i.frustumCulled=!1,i.setSize({viewport:viewer.mainViewport}),i.setFov(viewer.fov);return viewer.addEventListener("resize",t),viewer.addEventListener("fov_changed",n),i.addEventListener("dispose",function(){viewer.removeEventListener("resize",t),viewer.removeEventListener("fov_changed",n)}),i}return A(a,[{key:"computeParams",value:function(){this.curve&&this.position.copy(this.curve.points[0]);var t=.8+9.2*Be.smoothstep(this.radius*this.strength,.2,20),e=(this.sizeTween.values=this.defaultSizeTween.values.map(function(e){return e*t}),this.particleCount=Math.ceil(this.strength*this.radius*5),this.speed=z1.speed*this.radius,this.speedRange=z1.speedRange*this.radius,console.log(this.particleCount),this.boundPoints=[],this.boundPoints.push(this.position.clone()),this.sizeTween.values.slice().sort(function(e,t){return t-e})[0]),e=this.radius+(.35*e+.5),n=new gi(this.position,e);this.boundingSphere=n,this.boundingBox=(new Y).setFromCenterAndSize(this.position,new Re(2*e,2*e,2*e))}},{key:"getPointsForBound",value:function(){return this.boundPoints}},{key:"reStart",value:function(){this.age=0,this.createParticles()}},{key:"setParameters",value:function(e){for(var t in e=$.extend({},z1,e)){var n=e[t];"position"==t?this.position.copy(n):n instanceof Array&&n[0]instanceof Array?this[t]=re(D1,J(n)):n instanceof Re||n instanceof Me?this[t]=n.clone():this[t]=n}this.defaultSizeTween=this.sizeTween.clone(),this.particles=[],this.age=0,this.alive=!0,this.geometry=new j,this.computeParams(),this.material=new pa({uniforms:{u_sampler:{value:this.texture||(s1=s1||(new Nc).load(Potree.resourcePath+"/textures/explode.png"))},heightOfNearPlane:{type:"f",value:0}},vertexShader:"\n attribute vec3 color;\n attribute float size;\n attribute float angle;\n attribute float opacity;\n attribute float visible;\n varying vec4 vColor;\n varying float vAngle;\n uniform float heightOfNearPlane;\n \n void main() {\n if(visible > 0.5) {\n vColor = vec4(color, opacity);\n } else {\n vColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n vAngle = angle;\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * mvPosition;\n \n gl_PointSize = ( heightOfNearPlane * size ) / gl_Position.w;\n }\n",fragmentShader:"\n uniform sampler2D u_sampler;\n varying vec4 vColor;\n varying float vAngle;\n void main() {\n gl_FragColor = vColor;\n float u = cos(vAngle);\n float v = sin(vAngle);\n vec2 uv = vec2(\n u * (gl_PointCoord.x - 0.5) + v * (gl_PointCoord.y - 0.5) + 0.5, \n u * (gl_PointCoord.y - 0.5) - v * (gl_PointCoord.x - 0.5) + 0.5\n );\n vec4 texture = texture2D(u_sampler, uv);\n gl_FragColor = gl_FragColor * texture;\n }\n",transparent:!0,alphaTest:.5,depthTest:this.blendMode==Ae,blending:this.blendMode})}},{key:"createParticles",value:function(){this.particles=[];for(var e=this.particleCount,t=new Float32Array(3*e),n=new Float32Array(3*e),i=new Float32Array(e),r=new Float32Array(e),a=new Float32Array(e),o=new Float32Array(e),s=0;s<e;s++){var l=this.createParticle();this.particles[s]=l}this.geometry.setAttribute("position",new Q(t,3)),this.geometry.setAttribute("color",new Q(n,3)),this.geometry.setAttribute("angle",new Q(r,1)),this.geometry.setAttribute("size",new Q(i,1)),this.geometry.setAttribute("visible",new Q(o,1)),this.geometry.setAttribute("opacity",new Q(a,1))}},{key:"createParticle",value:function(){var e,t,n=new O1,i=(n.sizeTween=this.sizeTween,n.colorTween=this.colorTween,n.opacityTween=this.opacityTween,n.deathAge=this.particleDeathAge,this.positionShape==G1&&(n.position=N1.randomVector3(new Re,this.positionRange)),this.positionShape==U1&&(i=2*Math.random()-1,t=2*Math.PI*Math.random(),e=Math.sqrt(1-i*i),i=new Re(e*Math.cos(t),i,e*Math.sin(t)),n.position=i.multiplyScalar(this.radius)),this.velocityShape==G1&&(n.velocity=N1.randomVector3(this.velocity,this.velocityRange)),this.velocityShape==U1&&(e=(new Re).addVectors(n.position,new Re(0,0,2*this.radius)),t=N1.randomValue(this.speed,this.speedRange),n.velocity=e.normalize().multiplyScalar(t)),n.acceleration=N1.randomValue(this.acceleration,this.accelerationRange),n.angle=N1.randomValue(this.angle,this.angleRange),n.angleVelocity=N1.randomValue(this.angleVelocity,this.angleVelocityRange),n.angleAcceleration=N1.randomValue(this.angleAcceleration,this.angleAccelerationRange),n.size=N1.randomValue(this.size,this.sizeRange),N1.randomVector3(this.color,this.colorRange));return n.color=(new Me).setHSL(i.x,i.y,i.z),n.opacity=N1.randomValue(this.opacity,this.opacityRange),n}},{key:"update",value:function(e){if(viewer.getObjVisiByReason(this,"force")){if(0<this.delayStartTime)return this.delayStartTime-=e;if(Potree.Utils.isInsideFrustum(this.boundingSphere,viewer.scene.getActiveCamera())){viewer.updateVisible(this,"isInsideFrustum",!0),1<e&&console.log("update dt>1",e);for(var t=this.particleDeathAge,n=this.particleSpaceTime,i=[],r=[],a=[],o=this.geometry.attributes.position.array,s=this.geometry.attributes.opacity.array,l=this.geometry.attributes.visible.array,u=this.geometry.attributes.color.array,c=this.geometry.attributes.angle.array,h=this.geometry.attributes.size.array,d=0;d<this.particleCount;d++){var p,f=this.particles[d];f.alive?(f.update(e),f.age>t&&(f.alive=0,f.rebornCount>=this.recycleTimes?f.deadAge=f.age-t:(i.push(d),r.push(f.age-t),a.push(f.rebornCount+1))),o[3*d]=f.position.x,o[3*d+1]=f.position.y,o[3*d+2]=f.position.z,u[3*d]=f.color.r,u[3*d+1]=f.color.g,u[3*d+2]=f.color.b,l[d]=f.alive,s[d]=f.opacity,c[d]=f.angle,h[d]=f.size):f.rebornCount>=this.recycleTimes&&f.age>t&&(f.deadAge+=e),f.rebornCount>=this.recycleTimes&&f.age>t&&f.deadAge>=n&&(i.push(d),p=t*(this.recycleTimes+1)+n,r.push((f.deadAge-n)%p),a.push(0))}if(this.geometry.attributes.size.needsUpdate=!0,this.geometry.attributes.color.needsUpdate=!0,this.geometry.attributes.angle.needsUpdate=!0,this.geometry.attributes.visible.needsUpdate=!0,this.geometry.attributes.opacity.needsUpdate=!0,this.geometry.attributes.position.needsUpdate=!0,this.alive){if(this.age<t){var m=Math.round(this.particleCount*(this.age+0)/t),v=Math.round(this.particleCount*(this.age+e)/t);v>this.particleCount&&(v=this.particleCount);for(var g=m;g<v;g++)this.particles[g].alive=1}for(var A=0;A<i.length;A++){var y=i[A];this.particles[y]=this.createParticle(),this.particles[y].alive=1,this.particles[y].age=r[A],this.particles[y].rebornCount=a[A]}this.geometry.attributes.position.needsUpdate=!0,this.age+=e,this.age>this.deathAge&&!this.loop&&(this.alive=!1)}}else viewer.updateVisible(this,"isInsideFrustum",!1)}}},{key:"setSize",value:function(e){e=e.viewport;this.screenHeight=e.resolution.y,this.setPerspective(this.fov,this.screenHeight)}},{key:"setFov",value:function(e){this.fov=e,this.setPerspective(this.fov,this.screenHeight)}},{key:"setPerspective",value:function(e,t){t=Math.abs(t/(2*Math.tan(Be.degToRad(.5*e))));this.material.uniforms.heightOfNearPlane.value=t}},{key:"updateGeometry",value:function(){this.computeParams(),this.reStart()}},{key:"dispose",value:function(){this.geometry.dispose(),this.material.dispose(),this.dispatchEvent("dispose")}}]),a}(),Q1={"fire+smoke":16777215,smoke:16777215,explode:16777215},V1={clipDistance:100,occlusionDistance:60,maxClipFactor:.5,backColor:"#777",useDepth:!0,transparent:!0},j1={bus:new zn,particleGroup:new K,curveGroup:new K,init:function(){this.particleGroup.name="particles",viewer.scene.scene.add(this.particleGroup),this.curveGroup.name="particles-curves",viewer.scene.scene.add(this.curveGroup)},addParticle:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return"fire"==t.type?e=new I1(t):"smoke"==t.type?e=new R1(t):"explode"==t.type&&(e=new H1(t)),this.particleGroup.add(e),e},removeParticle:function(e){e.dispose(),this.particleGroup.remove(e),e.curve.dispose()},update:function(t){this.particleGroup.children.forEach(function(e){return e.update(t)})},startInsertion:function(){var t=this,n=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"fire",i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},r=$.Deferred(),a=[],o=function(e){e&&r.resolve(a),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"addSth"}),viewer.removeEventListener("global_click",u),t.bus.removeEventListener("cancel_insertions",l)},s=new Fy([],i1(n),Q1[n],n+"_curve",{handleMat:r1(n)}),l=(this.curveGroup.add(s),i.curve=s,i.type=n,function(){console.log("cancel_insertions",s.uuid),s.dispose(),o(!1)}),u=(this.bus.dispatchEvent("cancel_insertions"),this.bus.addEventListener("cancel_insertions",l),function(e){if(e.button===le.RIGHT)1<=s.points.length&&(a=t.createFromData(i),o(!0));else{e=e.intersect&&(e.intersect.orthoIntersect||e.intersect.location);if(e)return s.addPoint(e,null,!0),"explode"==n&&(a=t.createFromData(i),o(!0)),{stopContinue:!0}}});return viewer.addEventListener("global_click",u,10),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"addSth"}),r.promise()},createFromData:function(e){var t,n,i=e.type,r=[],a=e.curve;return a||(a=new Fy(e.points,i1(i),Q1[i],i+"_curve",{handleMat:r1(i)}),this.curveGroup.add(a)),i.includes("fire")||i.includes("smoke")?(i.includes("fire")&&(t=this.addParticle({type:"fire",positions:a.points,curve:a,radius:e.radius,height:e.height,strength:e.strength}),r.push(t)),i.includes("smoke")&&(t=this.addParticle({type:"smoke",positions:a.points,curve:a,positionStyle:"sphere",strength:e.smokeStrength,radius:e.smokeRadius,height:e.smokeHeight}),r.push(t))):"explode"==i&&(t=this.addParticle({type:"explode",position:a.points[0],strength:e.strength,radius:e.radius,particleSpaceTime:e.particleSpaceTime,curve:a,delayStartTime:e.delayStartTime}),r.push(t)),a.addEventListener("dragCurvePoint",function(){n=!0,ag.intervalTool.isWaiting("particlePointChange",function(){if(n)return r.forEach(function(e){return e.updateGeometry()}),n=!1,a.dispatchEvent("sendUpdatePoints"),!0},400)}),r}},W1={createAnimation:function(e){var t=new Gy(viewer);if(e){t.name=e.name,t.duration=e.duration,t.useDurSlice=e.useDurSlice;var n,i=q(e.points);try{for(i.s();!(n=i.n()).done;){var r=n.value,a=(new Re).copy(r.position),o=(new Re).copy(r.target),s=r.time;t.createControlPoint(null,{position:a,target:o,duration:s})}}catch(e){i.e(e)}finally{i.f()}}return t.changeCallback(),viewer.scene.addCameraAnimation(t),t},removeAnimation:function(e){e.dispatchEvent("dispose"),viewer.scene.removeCameraAnimation(e)}},J1=new Nc,q1=(J1.crossOrigin="anonymous",(new X).setFromAxisAngle(new Re(0,0,1),Math.PI)),X1={},Y1={},K1=3,Z1=2,$1=1,eb="#c60",tb="#17c",nb={topView:{default:.4,selected:.6},sideView:{default:.2,selected:.5}},ib=[{name:"top",axis:["x","y"],direction:new Re(0,0,-1),openCount:0},{name:"right",axis:["y","z"],direction:new Re(1,0,0),openCount:0}],rb=new(function(){y(n,zn);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).panoGroup=[],e.viewports={},e.panoLink={},e.panoMeshs=new K,e.lineMeshes=new K,e.views={},e.cameras={},e.orthoCamera=new mh(-100,100,100,100,.01,1e4),e.orthoCamera.up.set(0,0,1),e.selectedPano,e.selectedGroup,e.operation,e.visiblePanos=[],e}return A(n,[{key:"init",value:function(){var a=this;X1.default=Fv.createFatLineMat({color:"#eeeeee",lineWidth:2,depthTest:!1}),X1.hovered=Fv.createFatLineMat({color:"#00c8af",lineWidth:2,depthTest:!1}),X1.selected=Fv.createFatLineMat({color:"#00c8af",lineWidth:3,depthTest:!1}),this.initViews(),viewer.addEventListener("allLoaded",function(){c1=viewer.images360,h1=viewer.modules.Alignment,d1=viewer.modules.SiteModel,a.panoMeshs.name="panoMeshs",viewer.scene.scene.add(a.panoMeshs),a.lineMeshes.name="lineMeshes",viewer.scene.scene.add(a.lineMeshes),a.transformControls=new Uw(viewer.mainViewport.camera,viewer.renderArea,{dontHideWhenFaceCamera:!0,rotFullCircle:!0}),a.transformControls.setSize(1.5),viewer.scene.scene.add(a.transformControls),a.transformControls._gizmo.hideAxis={translate:["x","y"],rotate:["x","y","e"]},a.transformControls.setRotateMethod(2),a.fakeMarkerForTran=new Z(new sa(.3,.3,.3),new L({color:"#FFFFFF",opacity:.4,transparent:!0,visible:!1})),viewer.scene.scene.add(a.fakeMarkerForTran);function e(e){var t,n,i,r;"position"==e?(t=(new Re).subVectors(a.fakeMarkerForTran.position,a.fakeMarkerForTran.oldState.position),a.selectedClouds.forEach(function(e){return h1.translate(e,t)})):(n=a.selectedPano.position,i=(e=new Re(0,1,0)).clone().applyQuaternion(a.fakeMarkerForTran.oldState.quaternion),e=e.clone().applyQuaternion(a.fakeMarkerForTran.quaternion),r=ee.getAngle(i,e,"z"),a.selectedClouds.forEach(function(e){h1.rotateAround(n,e,null,r)})),a.fakeMarkerForTran.oldState={position:a.fakeMarkerForTran.position.clone(),quaternion:a.fakeMarkerForTran.quaternion.clone()},h1.history.beforeChange(a.selectedClouds)}function t(e){if("addLink"!=a.operation||"top"!=a.activeViewName&&"mainView"!=a.activeViewName||!a.selectedPano)return a.linkGuideLine.visible=!1;var t;if("top"==a.activeViewName)t=e.intersect.orthoIntersect.clone().setZ(a.selectedPano.position.z);else if("mainView"==a.activeViewName){if(!e.intersect.point)return;t=e.intersect.point.position}Fv.updateLine(a.linkGuideLine,[a.selectedPano.position,t]),a.linkGuideLine.visible=!0}a.fakeMarkerForTran.addEventListener("position_changed",e.bind(a,"position")),a.fakeMarkerForTran.addEventListener("rotation_changed",e.bind(a,"rotation")),a.transformControls.addEventListener("transform_end",function(){h1.history.afterChange(a.selectedClouds)}),h1.history.addEventListener("undo",function(){a.updateTranCtl()}),a.initPanoLink(),a.addPanoMesh(),viewer.scene.pointclouds.forEach(function(e){e.material.color=tb}),a.switchView("top"),d1.bus.addEventListener("initDataDone",function(){var e=d1.entities.find(function(e){return"floor"==e.buildType&&e.panos.length});e||(e="all",console.log("没有一层有漫游点?!")),a.gotoFloor(e)}),h1.bus.addEventListener("switchHandle",a.updateCursor.bind(a)),viewer.addEventListener("global_click",function(e){e.button===le.RIGHT?(console.log("right click",e),a.setLinkOperateState("addLink",!1),a.setLinkOperateState("removeLink",!1)):a.clickToZoomInEnabled&&("mainView"==a.activeViewName?viewer.controls.zoomToLocation(e.mouse):a.zoomIn(e.intersect.orthoIntersect,e.pointer),a.setZoomInState(!1))}),a.linkGuideLine=Fv.createLine([],{color:"#aaa",deshed:!0,dashSize:.1,gapSize:.1}),a.linkGuideLine.visible=!1,a.linkGuideLine.name="linkGuideLine",viewer.scene.scene.add(a.linkGuideLine),a.linkGuideLine.renderOrder=$1;viewer.addEventListener("global_mousemove",function(e){t(e)}),a.addEventListener("updateLinkGuideLine",t)})}},{key:"setTranMode",value:function(e){this.tranMode=e,"mainView"==this.activeViewName?(e&&this.transformControls.setMode(e),this.updateTranCtl()):h1.switchHandle(e)}},{key:"updateTranCtl",value:function(){if(!this.tranMode||!this.selectedPano||"mainView"!=this.activeViewName)return this.transformControls.detach();if(this.checkIfAllLinked({group:this.selectedGroup}))return this.dispatchEvent("needToDisConnect"),this.transformControls.detach();this.transformControls.attach(this.fakeMarkerForTran);var e=this.getPanoPose(this.selectedPano),t=e.position,e=e.quaternion;this.fakeMarkerForTran.position.copy(t),this.fakeMarkerForTran.quaternion.copy(e),this.fakeMarkerForTran.oldState={position:t.clone(),quaternion:e.clone()}}},{key:"initViews",value:function(){this.splitScreenTool=new Mw,this.targetPlane=viewer.mainViewport.targetPlane=new $i,this.shiftTarget=viewer.mainViewport.shiftTarget=new Re;for(var e=0;e<2;e++){var t=ib[e],n=new Dg;this.views[t.name]=n,this.cameras[t.name]=this.orthoCamera,n.direction=t.direction}this.views.mainView=viewer.mainViewport.view,this.cameras.mainView=viewer.mainViewport.camera}},{key:"switchView",value:function(n){var t,i,e,r,a,o=this,s=this.views[n],l=this.cameras[n],u=ib.find(function(e){return e.name==n}),c=viewer.bound,h=c.boundSize,c=c.center,d=(this.lastViewName=this.activeViewName,this.activeViewName=n,this.views[this.lastViewName]),p=this.cameras[this.lastViewName];viewer.mainViewport.view=s,viewer.mainViewport.camera=l,p&&(d.zoom=p.zoom),this.targetPlane.setFromNormalAndCoplanarPoint(s.direction.clone(),c),this.targetPlane.projectPoint(s.position,this.shiftTarget),s.position.copy(this.splitScreenTool.getPosOutOfModel(viewer.mainViewport)),s.zoom&&(l.zoom=s.zoom),viewer.updateScreenSize({forceUpdateSize:!0}),this.updateCursor(),"mainView"==n?(viewer.mainViewport.alignment=null,viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName="rgba",e.material.useFilterByNormal=!1,e.changePointOpacity(1)}),viewer.updateVisible(viewer.reticule,"force",!0),d&&(s.copy(d),t=s.direction,e=c1.panos.filter(function(e){return e.circle.visible}),e=ag.sortByScore(e,[],[function(e){return-(new Re).subVectors(e.position,s.position).dot(t)}],!0))&&e[0]&&(a=p.top/p.zoom/Math.tan(Be.degToRad(l.fov/2)),s.position.add(t.clone().multiplyScalar(-e[0].score-a)),this.lastDisToPano=a),viewer.fpControls.lockKey=!1):("mainView"==this.lastViewName?(i=d.direction,e=c1.panos.filter(function(e){return e.circle.visible}),(a=ag.sortByScore(e,[],[function(e){e=(new Re).subVectors(e.position,d.position).dot(i);return e<0?10*e:-e},function(e){return 70*-(new Re).subVectors(e.position,d.position).angleTo(i)}],!0))&&a[0]&&(r=(e=a[0].item.position.clone()).clone(),a=(new Re).subVectors(a[0].item.position,d.position).dot(i),a=Math.abs(a)*Math.tan(Be.degToRad(p.fov/2)),l.zoom=l.top/a,l.updateProjectionMatrix(),"right"==n&&(s.direction=i.clone().setZ(0),this.targetPlane.setFromNormalAndCoplanarPoint(s.direction.clone(),c),this.targetPlane.projectPoint(s.position,this.shiftTarget),s.position.copy(this.splitScreenTool.getPosOutOfModel(viewer.mainViewport))),s.applyToCamera(l),e.project(p),r.project(l),1<e.z&&console.warn("选取的点在相机背后了!?"),e.x=Be.clamp(e.x,-.9,.9),e.y=Be.clamp(e.y,-.9,.9),a=(new Re).subVectors(e,r),p=Potree.Utils.getOrthoCameraMoveVec(a,l),s.position.sub(p))):0==u.openCount&&this.viewportFitBound(n,h,c),u.openCount++,viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName="color",e.material.useFilterByNormal=!0;var t="top"==n?nb.topView:nb.sideView;o.selectedPano&&o.selectedClouds.includes(e)?e.changePointOpacity(t.selected,!0):e.changePointOpacity(t.default,!0)}),viewer.updateVisible(viewer.reticule,"force",!1),"top"==n&&(viewer.mainViewport.alignment={rotate:!0,translate:!0}),"right"==n?(viewer.mainViewport.alignment={translate:!0,rotateSide:!0,translateVec:new Re(0,0,1)},viewer.mainViewport.rotateSide=!0):viewer.mainViewport.rotateSide=!1,viewer.fpControls.lockKey=!0),this.updateTranCtl(),this.setTranMode(this.tranMode),this.setZoomInState(!1),this.updatePointLevels()}},{key:"viewportFitBound",value:function(){var e=this;if(0==viewer.mainViewport.resolution.x||0==viewer.mainViewport.resolution.y)return setTimeout(function(){e.viewportFitBound()},10);this.gotoFloor(this.currentFloor,!0,0,null,!0)}},{key:"rotateSideCamera",value:function(e){this.splitScreenTool.rotateSideCamera(viewer.mainViewport,e)}},{key:"zoomIn",value:function(e,t){var n=viewer.mainViewport.camera;200<=n.zoom||viewer.mainViewport.view.zoomOrthoCamera(n,200,t,300)}},{key:"orthoMoveFit",value:function(e,t,n){this.splitScreenTool.viewportFitBound(viewer.mainViewport,t.bound,e,n,{x:200,y:230})}},{key:"setZoomInState",value:function(e,t){this.clickToZoomInEnabled=!!e,e?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"zoomInCloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"zoomInCloud"}),e||t||this.dispatchEvent({type:"operationCancel",operation:"zoomIn"})}},{key:"gotoFloor",value:function(e,t){var n,i,r,a=this,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:600,s=3<arguments.length?arguments[3]:void 0,l=4<arguments.length?arguments[4]:void 0;this.currentFloor==(e=e||"all")&&!t||(this.currentFloor!=e&&(n=("all"==e?viewer.images360:e).panos,viewer.images360.panos.forEach(function(e){var t=n.includes(e);a.switchPanoVisible(e,t)})),this.updateLinesVisible(),this.selectedPano&&"all"!=e&&!e.panos.includes(this.selectedPano)&&this.selectedPano.circle.dispatchEvent("click"),this.selectedLine&&this.selectedLine.dispatchEvent("click"),"all"==e?(i=viewer.images360.bound.bounding,r=viewer.images360.bound.center):(r=(i=this.getPanosBound(e)).getCenter(new Re),0==e.panos.length&&console.log(e.name,"floor无漫游点")),"mainView"!=this.activeViewName?l&&this.orthoMoveFit(r,{bound:i},o):"mainView"==this.activeViewName&&"all"!=e&&viewer.scene.view.setView({position:r,duration:o}),this.currentFloor=e,s)||this.dispatchEvent({type:"changeFloor",floor:e})}},{key:"getPanosBound",value:function(e){var t;return e.panosBound||(0==e.panos.length?e.panosBound=viewer.images360.bound.bounding.clone():(t=new Re(5,5,5),t=ee.getBoundByPoints(e.panos.map(function(e){return e.position}),t),e.panosBound=t.bounding)),e.panosBound}},{key:"switchPanoVisible",value:function(e,t,n){var i;e.circle.visible=t,viewer.updateVisible(e,"panoEditor",t),viewer.updateVisible(e.pointcloud,"panoEditor",t),t?this.visiblePanos.includes(e)||this.visiblePanos.push(e):-1<(i=this.visiblePanos.indexOf(e))&&this.visiblePanos.splice(i,1),n&&this.updateLinesVisible(),n||this.dispatchEvent({type:"switchPanoVisible",pano:e,v:t}),this.updatePointLevels()}},{key:"updateLinesVisible",value:function(){var i=this;this.lineMeshes.children.forEach(function(e){var t=e.name.split("-"),n=c1.getPano(t[0]),t=c1.getPano(t[1]);e.visible=i.visiblePanos.includes(n)||i.visiblePanos.includes(t)})}},{key:"updateCursor",value:function(){var e="mainView"!=this.activeViewName&&this.selectedPano?h1.handleState:null;"rotate"==e?(viewer.dispatchEvent({type:"CursorChange",action:"add",name:"rotatePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"})):("translate"==e?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"movePointcloud"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"movePointcloud"}),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"rotatePointcloud"}))}},{key:"setLinkOperateState",value:function(e,t,n){var i;t&&e==this.operation||!t&&e!=this.operation||(i=this.operation,this.operation=t?e:null,"removeLink"==this.operation&&(this.selectedLine&&this.selectedLine.dispatchEvent("click"),this.selectedPano),"addLink"!=this.operation&&(this.linkGuideLine.visible=!1),t||n||this.dispatchEvent({type:"operationCancel",operation:i}),"addLink"==this.operation?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"connectPano"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"connectPano"}),"removeLink"==this.operation?viewer.dispatchEvent({type:"CursorChange",action:"add",name:"disconnectPano"}):viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"disconnectPano"}))}},{key:"initPanoLink",value:function(){var n=this;c1.panos.forEach(function(e){n.panoLink[e.id]={}}),c1.panos.forEach(function(t){t.visibles.forEach(function(e){n.linkChange(t,c1.getPano(e,"index"),"add")})}),console.log("panoLink",this.panoLink)}},{key:"groupChange",value:function(n,i,e){var r=this;"add"==e?ag.pushToGroupAuto([n,i],this.panoGroup):(e=this.panoGroup.find(function(e){return e.includes(n)&&(e.includes(i)||!i)}))?(this.panoGroup.splice(this.panoGroup.indexOf(e),1),e.forEach(function(e){if(e!=n&&e!=i)for(var t in r.panoLink[e.id])r.panoLink[e.id][t]&&(t=c1.getPano(t),ag.pushToGroupAuto([e,t],r.panoGroup))})):i?console.log("这两个pano原本就不在一个组",n.id,i.id):console.log("pano0不在任何组",n)}},{key:"linkChange",value:function(t,e,n){var i=this,r=[];if("add"==n){if(!e)return console.error("不支持add时pano1为空");this.panoLink[t.id][e.id]=this.panoLink[t.id][e.id]||{},this.panoLink[e.id][t.id]=this.panoLink[e.id][t.id]||{}}else if(e)this.panoLink[t.id][e.id]=!1,this.panoLink[e.id][t.id]=!1;else{for(var a in this.panoLink[t.id])this.panoLink[t.id][a]&&(this.panoLink[a][t.id]=!1,r.push(a));this.panoLink[t.id]={}}e?this.lineChange(t,e,n):r.forEach(function(e){i.lineChange(t,c1.getPano(e),n)}),this.groupChange(t,e,n),this.selectPano(this.selectedPano,!1,!0)}},{key:"lineChange",value:function(t,n,e){var i,r=this;"add"==e?this.panoLink[t.id][n.id].line||((i=Fv.createFatLine([t.position,n.position],{material:X1.default})).name="".concat(t.id,"-").concat(n.id),i.renderOrder=i.pickOrder=$1,this.lineMeshes.add(i),(this.panoLink[t.id][n.id].line=this.panoLink[n.id][t.id].line=i).addEventListener("mouseover",function(){r.clickToZoomInEnabled||(r.selectedLine!=i&&(i.material=X1.hovered),viewer.dispatchEvent({type:"CursorChange",action:"add",name:"hoverLine"}))}),i.addEventListener("mouseleave",function(){r.clickToZoomInEnabled||(r.selectedLine!=i&&(i.material=X1.default),viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"hoverLine"}))}),i.addEventListener("click",function(e){if(!r.clickToZoomInEnabled)return"removeLink"==r.operation?(r.selectedLine==i&&r.selectLine(null),r.linkChange(t,n,"remove")):void r.selectLine(i)})):(e=this.lineMeshes.children.find(function(e){return e.name=="".concat(t.id,"-").concat(n.id)||e.name=="".concat(n.id,"-").concat(t.id)}))&&(this.lineMeshes.remove(e),e.geometry.dispose())}},{key:"selectLine",value:function(e){this.selectedLine!=e&&(this.selectedLine&&(this.selectedLine.material=X1.default),e&&(e.material=X1.selected),this.selectedLine=e)}},{key:"addPanoMesh",value:function(){function n(e){for(var t in e.position.copy(e.pano.position),i.panoLink[e.pano.id]){var n=i.panoLink[e.pano.id][t];n&&Fv.updateLine(n.line,[e.pano.position,c1.getPano(t).position])}e.update()}var i=this,e=J1.load(Potree.resourcePath+"/textures/correct_n.png");(window.circleMats=Y1).default_normal=new jm({map:e,color:16777215,transparent:!0,clipDistance:5,occlusionDistance:2,useDepth:!0,maxClipFactor:.6,backColor:3407837}),Y1.default_rtk_on=Y1.default_normal.clone(),Y1.default_rtk_on.map=J1.load(Potree.resourcePath+"/textures/rtk-y-n.png"),Y1.default_rtk_off=Y1.default_normal.clone(),Y1.default_rtk_off.map=J1.load(Potree.resourcePath+"/textures/rtk-f-n.png"),Y1.selected_normal=Y1.default_normal.clone(),Y1.selected_normal.map=J1.load(Potree.resourcePath+"/textures/correct_s.png"),Y1.selected_normal.useDepth=!1,Y1.selected_rtk_on=Y1.selected_normal.clone(),Y1.selected_rtk_on.map=J1.load(Potree.resourcePath+"/textures/rtk-y-s.png"),Y1.selected_rtk_off=Y1.selected_normal.clone(),Y1.selected_rtk_off.map=J1.load(Potree.resourcePath+"/textures/rtk-f-s.png"),Y1.hovered_normal=Y1.default_normal.clone(),Y1.hovered_normal.color.set(65280),Y1.hovered_normal.useDepth=!1,Y1.hovered_rtk_on=Y1.default_rtk_on.clone(),Y1.hovered_rtk_on.color.set(65280),Y1.hovered_rtk_on.useDepth=!1,Y1.hovered_rtk_off=Y1.default_rtk_off.clone(),Y1.hovered_rtk_off.color.set(65280),Y1.hovered_rtk_off.useDepth=!1;c1.panos.forEach(function(e){var t=new Jm({mat:Y1["default_"+i.getPanoRtkState(e)],sizeInfo:{minSize:50,maxSize:120,nearBound:2,farBound:10},renderOrder:Z1,pickOrder:Z1});t.pickDontCheckDis=!0,t.name="panoCircle",t.sid=e.id,(t.pano=e).circle=t,i.panoMeshs.add(t),n(t),e.addEventListener("rePos",n.bind(i,t));t.addEventListener("drag",function(){"translate"==i.tranMode&&"mainView"!=i.activeViewName&&(i.selectPano(t.pano),viewer.inputHandler.drag.object=null)}),t.addEventListener("mouseover",function(){i.hoverPano(e,!0)}),t.addEventListener("mouseleave",function(){i.hoverPano(e,!1)}),t.addEventListener("click",function(){if(!i.clickToZoomInEnabled)return i.selectedPano==t.pano?i.selectPano(null):void("addLink"==i.operation&&i.selectedPano?i.linkChange(i.selectedPano,t.pano,"add"):i.selectPano(t.pano))})})}},{key:"hoverPano",value:function(e,t){this.clickToZoomInEnabled||(e&&t?this.hoveredPano==e||(this.hoveredPano&&this.hoverPano(this.hoveredPano,!1),(this.hoveredPano=e).hovered=!0,h1.handleState&&this.selectedPano&&this.selectedPano==e)||("addLink"==this.operation&&this.selectedPano&&this.selectedPano!=e||viewer.dispatchEvent({type:"CursorChange",action:"add",name:"hoverPano"}),this.selectedPano!=e&&(e.circle.material=Y1["hovered_"+this.getPanoRtkState(e)])):e&&!t?this.hoveredPano==e&&(e.hovered=!1,viewer.dispatchEvent({type:"CursorChange",action:"remove",name:"hoverPano"}),this.selectedPano!=e&&(e.circle.material=Y1["default_"+this.getPanoRtkState(e)]),this.hoveredPano=null):this.hoveredPano&&this.hoverPano(this.hoveredPano,!1))}},{key:"selectPano",value:function(t,e,n){var i,r;this.selectedPano==t&&!n||(n=this.selectedPano,i="top"==this.activeViewName?nb.topView:nb.sideView,this.selectedPano&&(this.selectedPano.circle.material=Y1["default_"+this.getPanoRtkState(this.selectedPano)],this.selectedPano.circle.renderOrder=Z1,"mainView"!=this.activeViewName)&&this.selectedClouds.forEach(function(e){e.changePointOpacity(i.default,!0),e.material.color=tb}),this.selectedPano=t||null,this.updateSelectGroup(),t&&(this.selectedPano.circle.material=Y1["selected_"+this.getPanoRtkState(this.selectedPano)],this.selectedPano.circle.renderOrder=this.selectedPano.circle.pickOrder=K1,"mainView"!=this.activeViewName&&this.selectedClouds.forEach(function(e){e.changePointOpacity(i.selected,!0),e.material.color=eb}),r=(r=d1.entities.find(function(e){return"floor"==e.buildType&&e.panos.includes(t)}))||"all",this.gotoFloor(r,!1,600)),this.updateCursor(),this.updateTranCtl(),e?this.selectedPano&&("mainView"==this.activeViewName?(r=this.lastDisToPano||5,n&&(r=viewer.mainViewport.camera.position.distanceTo(n.position)),viewer.focusOnObject({position:this.selectedPano.position},"point",null,{distance:r})):this.orthoMoveFit(this.selectedPano.position,{},500)):this.dispatchEvent({type:"panoSelect",pano:t}))}},{key:"updatePointLevels",value:function(){var e,t=1;t="mainView"==this.activeViewName?(e=viewer.scene.pointclouds.filter(function(e){return e.visible}).length,1-.6*Be.clamp((e-1)/69,0,1)):null,Potree.settings.UserDensityPercent=t,viewer.setPointLevels()}},{key:"getPanoRtkState",value:function(e){return e.panosData.has_rtk?e.rtkState?"rtk_on":"rtk_off":"normal"}},{key:"setPanoRtkState",value:function(e,t){e.rtkState=t,e.circle.material=Y1[(this.selectedPano==e?"selected":"default")+"_"+this.getPanoRtkState(e)]}},{key:"updateSelectGroup",value:function(){var t=this;this.selectedGroup=this.panoGroup.find(function(e){return e.includes(t.selectedPano)}),this.selectedGroup&&(this.selectedGroup=[this.selectedPano].concat(J(this.selectedGroup.filter(function(e){return e!=t.selectedPano})))),this.selectedClouds=this.selectedPano?(this.selectedGroup||[this.selectedPano]).map(function(e){return e.pointcloud}):[]}},{key:"checkIfCanSave",value:function(){for(var e in Potree.settings.datasetsPanos)if(!this.checkIfAllLinked({datasetId:e}))return void console.log("没有全部连通,不能保存。其中一个:",e);return!0}},{key:"checkIfAllLinked",value:function(e){var t;if(e.group){var n=e.group,i=e.group[0];if(!i)return;t=i.pointcloud.dataset_id}else if(e.datasetId&&(t=e.datasetId,!(n=this.panoGroup.find(function(e){return e[0].pointcloud.dataset_id==t}))))return;if(t)return Potree.settings.datasetsPanos[t].panos.length==n.length}},{key:"getPanoPose",value:function(e){return{position:e.position.clone(),quaternion:(new X).setFromRotationMatrix(e.panoMatrix).premultiply(q1)}}},{key:"exportSavingData",value:function(){var e,a=this,t={};for(e in Potree.settings.datasetsPanos){var n=Potree.settings.datasetsPanos[e].panos.map(function(e){var t,n=[];for(t in a.panoLink[e.id])a.panoLink[e.id][t]&&n.push(viewer.images360.getPano(t).index);var i=a.getPanoPose(e),r=i.position,i=i.quaternion;return Object.assign({},e.panosData,{uuid:e.uuid,pose:{translation:o(r),rotation:o(i)},visibles:n,use_rtk:!!e.rtkState})});t[e]={sweepLocations:n}}function o(e){e=ee.toPrecision(e,6);return e instanceof X?{x:e.x,y:e.y,z:e.z,w:e.w}:e instanceof Re?{x:e.x,y:e.y,z:e.z}:void 0}return console.log(t),t}}]),n}()),ab=new Nc,ob=new jl(1.45,100),sb=new zu(.018,10,10),lb=Math.round(2<=window.devicePixelRatio?(1398784<=window.screen.width*window.screen.height?window.devicePixelRatio/1.2:window.devicePixelRatio/1.5)*(200/1.43):200/1.43),ub=function(){y(u,K);var l=C(u);function u(t){var n;te(this,u),(n=l.call(this)).width=n.height=lb,n.camera=new ma(50,1,.01,1e4),n.camera.up=new Re(0,0,1),n.viewport=new EA(null,n.camera,{left:0,bottom:0,width:1,height:1,name:"magnifier",cameraLayers:["magnifierContent"],pixelRatio:1}),n.viewport.setResolution(n.width,n.height,0,0);function e(e){e.hoverViewport==t.mainViewport?(t.updateVisible(G(n),"atViewport",!0),n.update(e.intersect&&e.intersect.location)):t.updateVisible(G(n),"atViewport",!1)}var i,r,a,o=new Map,s=new Map;n.viewport.beforeRender=function(){t.scene.pointclouds.forEach(function(e){s.set(e,e.visible),e.visible=t.getObjVisiByReason(e,"datasetSelection"),o.set(e,e.temp.pointOpacity)}),i=Potree.settings.pointDensity,Potree.settings.pointDensity="magnifier",t.scene.pointclouds.forEach(function(e){r=e.material.pointSizeType,e.material.pointSizeType=Potree.config.material.pointSizeType,a=e.material.activeAttributeName,e.material.activeAttributeName="rgba",e.changePointOpacity(1)})},n.viewport.afterRender=function(){Potree.settings.pointDensity=i,t.scene.pointclouds.forEach(function(e){e.visible=s.get(e),e.material.pointSizeType=r,e.material.activeAttributeName=a,e.changePointOpacity(o.get(e))})},n.renderTarget=new Zn(n.width,n.height,{minFilter:U,magFilter:U,format:St}),n.rtEDL=new Zn(n.width,n.height,{minFilter:ut,magFilter:ut,format:St,type:bt,depthTexture:new Ol(void 0,void 0,wt)}),n.mesh=new Z(ob,new L({side:ve,map:n.renderTarget.texture,transparent:!0,depthTest:!1})),n.overlayMesh=new Z(ob,new L({side:ve,map:ab.load(Potree.resourcePath+"/textures/crosshair.png"),transparent:!0,depthTest:!1})),n.targetPoint=new K,n.targetPoint.add(new Z(sb,new L({color:"#ff0000",transparent:!0,opacity:.5}))),n.targetPoint.add(new Z(sb,new L({color:"#ff0000",transparent:!0,opacity:.2,depthTest:!1}))),n.targetPoint.name="magnifierPointTarget",t.scene.scene.add(n.targetPoint),t.setObjectLayers(n.targetPoint,"magnifierContent"),n.add(n.mesh),n.add(n.overlayMesh),n.position.set(-1e3,-1e3,-1e5),n.mesh.renderOrder=10,n.overlayMesh.renderOrder=11,n.aimPos,t.setObjectLayers(G(n),"magnifier"),t.addEventListener("camera_changed",function(e){e.viewport==t.mainViewport&&n.update()}),n.mesh.layers.set(Potree.config.renderLayers.magnifier),n.overlayMesh.layers.set(Potree.config.renderLayers.magnifier),n.dontRender=!1,t.addEventListener("global_drag",function(e){n.dontRender=!0}),t.addEventListener("global_drop",function(e){n.dontRender=!1}),t.addEventListener("global_mouseup",function(e){n.dontRender=!1});return t.addEventListener("global_mousemove",e),t.addEventListener("global_touchstart",e),n.addEventListener("setEnable",function(e){t.updateVisible(G(n),"enable",e.value)}),Potree.settings.isOfficial?t.updateVisible(G(n),"enable",!1):(t.updateVisible(G(n),"measure",!1),t.addEventListener("measureMovePoint",function(){t.updateVisible(G(n),"measure",!0)}),t.addEventListener("endMeasureMove",function(){t.updateVisible(G(n),"measure",!1)})),t.scene.view.addEventListener("flyingDone",function(){var e;n.visible&&(e=t.inputHandler.getIntersect(t.mainViewport,t.mainViewport.camera,!0,100),n.update(e&&e.location))}),n}return A(u,[{key:"update",value:function(e){var t,n,i,r,a,o=this.dontRender||!(e instanceof Re)||"showPanos"==Potree.settings.displayMode&&viewer.images360.flying;(e=e instanceof Re?e:this.aimPos)&&this.visible&&(a=(n=(t=viewer.scene.getActiveCamera()).position).distanceTo(e),i=(new Re).subVectors(n,e).normalize(),r=1<a?1:a/2,this.camera.position.copy(e).add(i.multiplyScalar(r)),this.camera.lookAt(e),this.camera.fov=t.fov/2,this.camera.updateProjectionMatrix(),r=(i=Potree.Utils.getPos2d(e,t,viewer.renderArea,viewer.mainViewport).vector).clone().setY(i.y+(.4<i.y?-.4:.4)),i=new Re(r.x,r.y,.8).unproject(t).clone().sub(n).normalize().multiplyScalar(10),r=1<a?1:+a,this.position.copy(n.clone().add(i)),this.quaternion.copy(t.quaternion),this.targetPoint.position.copy(e),this.targetPoint.scale.set(r,r,r),this.aimPos=e,a=ee.getScaleForConstantSize({width2d:lb,camera:viewer.scene.getActiveCamera(),position:this.getWorldPosition(new Re),resolution:viewer.mainViewport.resolution2}),this.scale.set(a,a,a),o||(this.waitRender=!0))}},{key:"render",value:function(){this.waitRender&&(viewer.render({target:this.renderTarget,viewports:[this.viewport],camera:this.camera,magnifier:!0,rtEDL:this.rtEDL}),this.waitRender=!1)}}]),u}(),cb=new Nc,hb=Potree.defines.Buttons,db=function(){y(o,Z);var a=C(o);function o(e){function t(){r.state.cross=!0,r.judgeTex()}function n(){r.state.cross=!1,r.judgeTex()}te(this,o);var i=cb.load(Potree.resourcePath+"/textures/whiteCircle.png"),r=a.call(this,new Ba(.11,.11,1,1),new L({side:ve,map:i,transparent:!0,depthTest:!1,opacity:.7}));r.name="reticule",r.defaultTex=i,r.crosshairTex=cb.load(Potree.resourcePath+"/textures/reticule_cross_hair.png"),r.forbitTex=cb.load(Potree.resourcePath+"/textures/pic-forbid.png"),r.defaultTex.anisotropy=4,r.crosshairTex.anisotropy=4,r.forbitTex.anisotropy=4,r.renderOrder=100,r.layers.set(Potree.config.renderLayers.marker),r.direction=new Re,r.mouseLastMoveTime=Date.now(),r.hoverViewport,r.matrixMap=new Map,r.matrixAutoUpdate=!1,r.hide(0),Potree.settings.intersectWhenHover&&e.addEventListener("global_mousemove",r.move.bind(G(r))),e.addEventListener("global_mousedown",r.move.bind(G(r))),r.state={};return e.addEventListener("measureMovePoint",t),e.addEventListener("endMeasureMove",n),e.addEventListener("start_inserting_tag",t),e.addEventListener("endTagMove",n),e.addEventListener("reticule_forbit",function(e){r.state.forbit!=e.v&&console.log("change forbit ",e.v),r.state.forbit=e.v,r.judgeTex()}),e.setObjectLayers(G(r),"sceneObjects"),r}return A(o,[{key:"judgeTex",value:function(){this.state.forbit?this.material.map=this.forbitTex:this.state.cross?this.material.map=this.crosshairTex:this.material.map=this.defaultTex,viewer.mapViewer&&viewer.mapViewer.dispatchEvent({type:"content_changed"})}},{key:"move",value:function(e){"global_mousemove"==e.type&&(e.isTouch||e.buttons!=hb.NONE)&&"crosshair"!=this.state||(this.mouseLastMoveTime=Date.now(),this.updatePosition(e.intersect,e.hoverViewport))}},{key:"hide",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:500;this.hidden||(this.hidden=!0,Tg.start(Mg(this.material,"opacity",0),t),this.dispatchEvent({type:"update",visible:!1}),setTimeout(function(){e.dispatchEvent({type:"update",visible:!1})},t))}},{key:"show",value:function(){var e=this,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:300;viewer.getObjVisiByReason(this,"force")&&(this.hidden=!1,this.material.opacity<=0)&&(Tg.start(Mg(this.material,"opacity",.7),t),this.dispatchEvent({type:"update",visible:!0}),setTimeout(function(){e.dispatchEvent({type:"update",visible:!1})},t))}},{key:"updateVisible",value:function(){1500<Date.now()-this.mouseLastMoveTime&&!this.hidden&&this.hide()}},{key:"updateScale",value:function(e){var t,n=e.camera;"OrthographicCamera"==n.type?(t=this.state.cross?{width2d:500}:{minSize:100,maxSize:400,nearBound:100,farBound:700},t=ee.getScaleForConstantSize($.extend(t,{position:this.position,camera:n,resolution:e.resolution}))):(t=1+.1*(e=n.position.distanceTo(this.position)),e<1&&(t-=1-e)),this.scale.set(t,t,t)}},{key:"updateAtViewports",value:function(e){var t;"magnifier"!=e.name&&(this.orthoPos&&this.hoverViewport&&"mapViewport"==this.hoverViewport.name&&e!=this.hoverViewport?viewer.updateVisible(this,"hoverMap",!1):(viewer.updateVisible(this,"hoverMap",!0),"mapViewport"==e.name?viewer.setObjectLayers(this,"bothMapAndScene"):viewer.setObjectLayers(this,"sceneObjects"),(t=this.matrixMap.get(e))?this.matrix.copy(t):(this.updateScale(e),this.updateMatrix(),this.matrixMap.set(e,this.matrix.clone()))))}},{key:"updatePosition",value:function(e,t){var n,i,r;viewer.getObjVisiByReason(this,"force")&&e&&(n=!e.location,i=e.location||e.orthoIntersect.clone(),this.orthoPos=n,this.show(n?0:300),n?(r=new Re(0,0,1),i.setZ(0),this.direction=r.clone()):(r=e.normal)&&(this.direction=this.direction.multiplyScalar(.8),this.direction.add(r.clone().multiplyScalar(.2))),this.position.copy(i),this.updateMatrix(),this.lookAt(this.position.clone().add(this.direction)),this.hoverViewport=t,this.updateScale(t),this.updateMatrix(),this.matrixMap.clear(),this.matrixMap.set(t,this.matrix.clone()),this.dispatchEvent({type:"update"}))}}]),o}(),pb=(p1=/^[og]\s*(.+)?/,f1=/^mtllib /,m1=/^usemtl /,v1=/^usemap /,g1=new Re,A1=new Re,y1=new Re,w1=new Re,b1=new Re,mb.prototype=Object.assign(Object.create(Ic.prototype),{constructor:mb,load:function(n,i,e,r){var a=this,t=new Pc(this.manager);t.setPath(this.path),t.setRequestHeader(this.requestHeader),t.setWithCredentials(this.withCredentials),t.load(n,function(e,t){try{i(a.parse(e),t)}catch(e){r?r(e):console.error(e),a.manager.itemError(n)}},e,r)},setMaterials:function(e){return this.materials=e,this},parse:function(e){for(var t,n,i,r=new fb,a=(e=-1!==(e=-1!==e.indexOf("\r\n")?e.replace(/\r\n/g,"\n"):e).indexOf("\\\n")?e.replace(/\\\n/g,""):e).split("\n"),o="",s=[],F="function"==typeof"".trimLeft,l=0,u=a.length;l<u;l++)if(o=a[l],0!==(o=F?o.trimLeft():o.trim()).length&&"#"!==(t=o.charAt(0)))if("v"===t){var c=o.split(/\s+/);switch(c[0]){case"v":r.vertices.push(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3])),7<=c.length?r.colors.push(parseFloat(c[4]),parseFloat(c[5]),parseFloat(c[6])):r.colors.push(void 0,void 0,void 0);break;case"vn":r.normals.push(parseFloat(c[1]),parseFloat(c[2]),parseFloat(c[3]));break;case"vt":r.uvs.push(parseFloat(c[1]),parseFloat(c[2]))}}else if("f"===t){for(var O=o.substr(1).trim().split(/\s+/),h=[],d=0,N=O.length;d<N;d++){var p=O[d];0<p.length&&(p=p.split("/"),h.push(p))}for(var f=h[0],d=1,N=h.length-1;d<N;d++){var m=h[d],v=h[d+1];r.addFace(f[0],m[0],v[0],f[1],m[1],v[1],f[2],m[2],v[2])}}else if("l"===t){var g=o.substring(1).trim().split(" "),A=[],G=[];if(-1===o.indexOf("/"))A=g;else for(var y=0,U=g.length;y<U;y++){var w=g[y].split("/");""!==w[0]&&A.push(w[0]),""!==w[1]&&G.push(w[1])}r.addLineGeometry(A,G)}else"p"===t?(n=o.substr(1).trim().split(" "),r.addPointGeometry(n)):null!==(s=p1.exec(o))?(n=(" "+s[0].substr(1).trim()).substr(1),r.startObject(n)):m1.test(o)?r.object.startMaterial(o.substring(7).trim(),r.materialLibraries):f1.test(o)?r.materialLibraries.push(o.substring(7).trim()):v1.test(o)?console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.'):"s"===t?(1<(s=o.split(" ")).length?(i=s[1].trim().toLowerCase(),r.object.smooth="0"!==i&&"off"!==i):r.object.smooth=!0,(L=r.object.currentMaterial())&&(L.smooth=r.object.smooth)):"\0"!==o&&console.warn('THREE.OBJLoader: Unexpected line: "'+o+'"');r.finalize();var b=new Cs,e=(b.materialLibraries=[].concat(r.materialLibraries),!(1===r.objects.length&&0===r.objects[0].geometry.vertices.length));if(!0==e)for(l=0,u=r.objects.length;l<u;l++){var x=r.objects[l],E=x.geometry,C=x.materials,B="Line"===E.type,_="Points"===E.type,M=!1;if(0!==E.vertices.length){(T=new j).setAttribute("position",new ne(E.vertices,3)),0<E.normals.length&&T.setAttribute("normal",new ne(E.normals,3)),0<E.colors.length&&(M=!0,T.setAttribute("color",new ne(E.colors,3))),!0===E.hasUVIndices&&T.setAttribute("uv",new ne(E.uvs,2));for(var T,S,I=[],D=0,P=C.length;D<P;D++){var k,z=(R=C[D]).name+"_"+R.smooth+"_"+M,L=r.materials[z];null!==this.materials&&(L=this.materials.create(R.name),!B||!L||L instanceof vl?!_||!L||L instanceof Ml||(k=new Ml({size:10,sizeAttenuation:!1}),yr.prototype.copy.call(k,L),k.color.copy(L.color),k.map=L.map,L=k):(k=new vl,yr.prototype.copy.call(k,L),k.color.copy(L.color),L=k)),void 0===L&&((L=B?new vl:_?new Ml({size:1,sizeAttenuation:!1}):new ac).name=R.name,L.flatShading=!R.smooth,L.vertexColors=M,r.materials[z]=L),I.push(L)}if(1<I.length){for(D=0,P=C.length;D<P;D++){var R=C[D];T.addGroup(R.groupStart,R.groupCount,D)}S=new(B?Bl:_?Pl:Z)(T,I)}else S=new(B?Bl:_?Pl:Z)(T,I[0]);S.name=x.name,b.add(S)}}else 0<r.vertices.length&&(L=new Ml({size:1,sizeAttenuation:!1}),(T=new j).setAttribute("position",new ne(r.vertices,3)),0<r.colors.length&&void 0!==r.colors[0]&&(T.setAttribute("color",new ne(r.colors,3)),L.vertexColors=!0),e=new Pl(T,L),b.add(e));return b}}),mb);function fb(){var e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){var n;this.object&&!1===this.object.fromDeclaration?(this.object.name=e,this.object.fromDeclaration=!1!==t):(n=this.object&&"function"==typeof this.object.currentMaterial?this.object.currentMaterial():void 0,this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:!1!==t,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){var n=this._finalize(!1),e=(n&&(n.inherited||n.groupCount<=0)&&this.materials.splice(n.index,1),{index:this.materials.length,name:e||"",mtllib:Array.isArray(t)&&0<t.length?t[t.length-1]:"",smooth:(void 0!==n?n:this).smooth,groupStart:void 0!==n?n.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){e={index:"number"==typeof e?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return e.clone=this.clone.bind(e),e}});return this.materials.push(e),e},currentMaterial:function(){if(0<this.materials.length)return this.materials[this.materials.length-1]},_finalize:function(e){var t=this.currentMaterial();if(t&&-1===t.groupEnd&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&1<this.materials.length)for(var n=this.materials.length-1;0<=n;n--)this.materials[n].groupCount<=0&&this.materials.splice(n,1);return e&&0===this.materials.length&&this.materials.push({name:"",smooth:this.smooth}),t}},n&&n.name&&"function"==typeof n.clone&&((e=n.clone(0)).inherited=!0,this.object.materials.push(e)),this.objects.push(this.object))},finalize:function(){this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0)},parseVertexIndex:function(e,t){e=parseInt(e,10);return 3*(0<=e?e-1:e+t/3)},parseNormalIndex:function(e,t){e=parseInt(e,10);return 3*(0<=e?e-1:e+t/3)},parseUVIndex:function(e,t){e=parseInt(e,10);return 2*(0<=e?e-1:e+t/2)},addVertex:function(e,t,n){var i=this.vertices,r=this.object.geometry.vertices;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addVertexPoint:function(e){var t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){var t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,n){var i=this.normals,r=this.object.geometry.normals;r.push(i[e+0],i[e+1],i[e+2]),r.push(i[t+0],i[t+1],i[t+2]),r.push(i[n+0],i[n+1],i[n+2])},addFaceNormal:function(e,t,n){var i=this.vertices,r=this.object.geometry.normals;g1.fromArray(i,e),A1.fromArray(i,t),y1.fromArray(i,n),b1.subVectors(y1,A1),w1.subVectors(g1,A1),b1.cross(w1),b1.normalize(),r.push(b1.x,b1.y,b1.z),r.push(b1.x,b1.y,b1.z),r.push(b1.x,b1.y,b1.z)},addColor:function(e,t,n){var i=this.colors,r=this.object.geometry.colors;void 0!==i[e]&&r.push(i[e+0],i[e+1],i[e+2]),void 0!==i[t]&&r.push(i[t+0],i[t+1],i[t+2]),void 0!==i[n]&&r.push(i[n+0],i[n+1],i[n+2])},addUV:function(e,t,n){var i=this.uvs,r=this.object.geometry.uvs;r.push(i[e+0],i[e+1]),r.push(i[t+0],i[t+1]),r.push(i[n+0],i[n+1])},addDefaultUV:function(){var e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){var t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,n,i,r,a,o,s,l){var u=this.vertices.length,e=this.parseVertexIndex(e,u),t=this.parseVertexIndex(t,u),n=this.parseVertexIndex(n,u);this.addVertex(e,t,n),this.addColor(e,t,n),void 0!==o&&""!==o?(u=this.normals.length,e=this.parseNormalIndex(o,u),t=this.parseNormalIndex(s,u),n=this.parseNormalIndex(l,u),this.addNormal(e,t,n)):this.addFaceNormal(e,t,n),void 0!==i&&""!==i?(o=this.uvs.length,e=this.parseUVIndex(i,o),t=this.parseUVIndex(r,o),n=this.parseUVIndex(a,o),this.addUV(e,t,n),this.object.geometry.hasUVIndices=!0):this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";for(var t=this.vertices.length,n=0,i=e.length;n<i;n++){var r=this.parseVertexIndex(e[n],t);this.addVertexPoint(r),this.addColor(r)}},addLineGeometry:function(e,t){this.object.geometry.type="Line";for(var n=this.vertices.length,i=this.uvs.length,r=0,a=e.length;r<a;r++)this.addVertexLine(this.parseVertexIndex(e[r],n));for(var o=0,a=t.length;o<a;o++)this.addUVLine(this.parseUVIndex(t[o],i))}};return e.startObject("",!1),e}function mb(e){Ic.call(this,e),this.materials=null}function vb(e){Ic.call(this,e)}vb.prototype=Object.assign(Object.create(Ic.prototype),{constructor:vb,load:function(t,n,e,i){var r=this,a=""===this.path?Eh.extractUrlBase(t):this.path,o=new Pc(this.manager);o.setPath(this.path),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(t,function(e){try{n(r.parse(e,a))}catch(e){i?i(e):console.error(e),r.manager.itemError(t)}},e,i)},setMaterialOptions:function(e){return this.materialOptions=e,this},parse:function(e,t){for(var n=e.split("\n"),i={},r=/\s+/,a={},o=0;o<n.length;o++){var s,l,u=(u=n[o]).trim();0!==u.length&&"#"!==u.charAt(0)&&(s=(s=0<=(l=u.indexOf(" "))?u.substring(0,l):u).toLowerCase(),u=(u=0<=l?u.substring(l+1):"").trim(),"newmtl"===s?a[u]=i={name:u}:"ka"===s||"kd"===s||"ks"===s||"ke"===s?(l=u.split(r,3),i[s]=[parseFloat(l[0]),parseFloat(l[1]),parseFloat(l[2])]):i[s]=u)}e=new vb.MaterialCreator(this.resourcePath||t,this.materialOptions);return e.setCrossOrigin(this.crossOrigin),e.setManager(this.manager),e.setMaterials(a),e}}),(vb.MaterialCreator=function(e,t){this.baseUrl=e||"",this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.side=this.options&&this.options.side?this.options.side:fe,this.wrap=this.options&&this.options.wrap?this.options.wrap:ot}).prototype={constructor:vb.MaterialCreator,crossOrigin:"anonymous",setCrossOrigin:function(e){return this.crossOrigin=e,this},setManager:function(e){this.manager=e},setMaterials:function(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}},convert:function(e){if(!this.options)return e;var t,n={};for(t in e){var i,r=e[t],a={};for(i in n[t]=a,r){var o=!0,s=r[i],l=i.toLowerCase();switch(l){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(s=[s[0]/255,s[1]/255,s[2]/255]),this.options&&this.options.ignoreZeroRGBs&&0===s[0]&&0===s[1]&&0===s[2]&&(o=!1)}o&&(a[l]=s)}}return n},preload:function(){for(var e in this.materialsInfo)this.create(e)},getIndex:function(e){return this.nameLookup[e]},getAsArray:function(){var e,t=0;for(e in this.materialsInfo)this.materialsArray[t]=this.create(e),this.nameLookup[e]=t,t++;return this.materialsArray},create:function(e){return void 0===this.materials[e]&&this.createMaterial_(e),this.materials[e]},createMaterial_:function(e){var t,r=this,n=this.materialsInfo[e],a={name:e,side:this.side};function i(e,t){var n,i;a[e]||(t=r.getTextureParams(t,a),(n=r.loadTexture((n=r.baseUrl,"string"!=typeof(i=t.url)||""===i?"":/^https?:\/\//i.test(i)?i:n+i))).repeat.copy(t.scale),n.offset.copy(t.offset),n.wrapS=r.wrap,n.wrapT=r.wrap,a[e]=n)}for(t in n){var o,s=n[t];if(""!==s)switch(t.toLowerCase()){case"kd":a.color=(new Me).fromArray(s);break;case"ks":break;case"ke":a.emissive=(new Me).fromArray(s);break;case"map_kd":i("map",s);break;case"map_ks":i("specularMap",s);break;case"map_ke":i("emissiveMap",s);break;case"norm":i("normalMap",s);break;case"map_bump":case"bump":i("bumpMap",s);break;case"map_d":i("alphaMap",s),a.transparent=!0;break;case"ns":break;case"d":(o=parseFloat(s))<1&&(a.opacity=o,a.transparent=!0);break;case"tr":o=parseFloat(s),0<(o=this.options&&this.options.invertTrProperty?1-o:o)&&(a.opacity=1-o,a.transparent=!0)}}return this.materials[e]=new ic(a),this.materials[e]},getTextureParams:function(e,t){var n={scale:new Le(1,1),offset:new Le(0,0)},e=e.split(/\s+/),i=e.indexOf("-bm");return 0<=i&&(t.bumpScale=parseFloat(e[i+1]),e.splice(i,2)),0<=(i=e.indexOf("-s"))&&(n.scale.set(parseFloat(e[i+1]),parseFloat(e[i+2])),e.splice(i,4)),0<=(i=e.indexOf("-o"))&&(n.offset.set(parseFloat(e[i+1]),parseFloat(e[i+2])),e.splice(i,4)),n.url=e.join(" ").trim(),n},loadTexture:function(e,t,n,i,r){var a=void 0!==this.manager?this.manager:Sc,o=a.getHandler(e);return(o=null===o?new Nc(a):o).setCrossOrigin&&o.setCrossOrigin(this.crossOrigin),a=o.load(e,n,i,r),void 0!==t&&(a.mapping=t),a}};var gb=new WeakMap,Ab=function(){y(n,Ic);var t=C(n);function n(e){return te(this,n),(e=t.call(this,e)).decoderPath="",e.decoderConfig={},e.decoderBinary=null,e.decoderPending=null,e.workerLimit=4,e.workerPool=[],e.workerNextTaskID=1,e.workerSourceURL="",e.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},e.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"},e}return A(n,[{key:"setDecoderPath",value:function(e){return this.decoderPath=e,this}},{key:"setDecoderConfig",value:function(e){return this.decoderConfig=e,this}},{key:"setWorkerLimit",value:function(e){return this.workerLimit=e,this}},{key:"load",value:function(e,t,n,i){var r=this,a=new Pc(this.manager);a.setPath(this.path),a.setResponseType("arraybuffer"),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){r.decodeDracoFile(e,t).catch(i)},n,i)}},{key:"decodeDracoFile",value:function(e,t,n,i){i={attributeIDs:n||this.defaultAttributeIDs,attributeTypes:i||this.defaultAttributeTypes,useUniqueIDs:!!n};return this.decodeGeometry(e,i).then(t)}},{key:"decodeGeometry",value:function(n,i){var r,t=this,e=JSON.stringify(i);if(gb.has(n)){var a=gb.get(n);if(a.key===e)return a.promise;if(0===n.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}var o=this.workerNextTaskID++,a=n.byteLength,a=this._getWorker(o,a).then(function(e){return r=e,new Promise(function(e,t){r._callbacks[o]={resolve:e,reject:t},r.postMessage({type:"decode",id:o,taskConfig:i,buffer:n},[n])})}).then(function(e){return t._createGeometry(e.geometry)});return a.catch(function(){return!0}).then(function(){r&&o&&t._releaseTask(r,o)}),gb.set(n,{key:e,promise:a}),a}},{key:"_createGeometry",value:function(e){var t=new j;e.index&&t.setIndex(new Q(e.index.array,1));for(var n=0;n<e.attributes.length;n++){var i=e.attributes[n],r=i.name,a=i.array,i=i.itemSize;t.setAttribute(r,new Q(a,i))}return t}},{key:"_loadLibrary",value:function(n,e){var i=new Pc(this.manager);return i.setPath(this.decoderPath),i.setResponseType(e),i.setWithCredentials(this.withCredentials),new Promise(function(e,t){i.load(n,e,void 0,t)})}},{key:"preload",value:function(){return this._initDecoder(),this}},{key:"_initDecoder",value:function(){var n,e,i=this;return this.decoderPending||(e=[],(n="object"!==("undefined"==typeof WebAssembly?"undefined":v(WebAssembly))||"js"===this.decoderConfig.type)?e.push(this._loadLibrary("draco_decoder.js","text")):(e.push(this._loadLibrary("draco_wasm_wrapper.js","text")),e.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(e).then(function(e){var t=e[0],e=(n||(i.decoderConfig.wasmBinary=e[1]),function(){var n,t;function l(e,t,n,i){var r,a=i.attributeIDs,o=i.attributeTypes,s=t.GetEncodedGeometryType(n);if(s===e.TRIANGULAR_MESH)r=new e.Mesh,g=t.DecodeBufferToMesh(n,r);else{if(s!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");r=new e.PointCloud,g=t.DecodeBufferToPointCloud(n,r)}if(!g.ok()||0===r.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+g.error_msg());var l,u,c,h,d,p,f,m,v,g,A,y,w,b={index:null,attributes:[]};for(l in a){var x=self[o[l]],E=void 0,C=void 0;if(i.useUniqueIDs)C=a[l],E=t.GetAttributeByUniqueId(r,C);else{if(-1===(C=t.GetAttributeId(r,e[a[l]])))continue;E=t.GetAttribute(r,C)}b.attributes.push((C=e,u=t,c=r,h=l,x=x,v=m=f=p=d=void 0,d=(E=E).num_components(),p=c.num_points()*d,f=p*x.BYTES_PER_ELEMENT,m=function(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}}(C,x),v=C._malloc(f),u.GetAttributeDataArrayForAllPoints(c,E,m,f,v),u=new x(C.HEAPF32.buffer,v,p).slice(),C._free(v),{name:h,array:u,itemSize:d}))}return s===e.TRIANGULAR_MESH&&(b.index=(n=e,g=t,A=3*(s=r).num_faces(),y=4*A,w=n._malloc(y),g.GetTrianglesUInt32Array(s,y,w),g=new Uint32Array(n.HEAPF32.buffer,w,A).slice(),n._free(w),{array:g,itemSize:1})),e.destroy(r),b}onmessage=function(e){var a=e.data;switch(a.type){case"init":n=a.decoderConfig,t=new Promise(function(t){n.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(n)});break;case"decode":var o=a.buffer,s=a.taskConfig;t.then(function(e){var e=e.draco,t=new e.Decoder,n=new e.DecoderBuffer;n.Init(new Int8Array(o),o.byteLength);try{var i=l(e,t,n,s),r=i.attributes.map(function(e){return e.array.buffer});i.index&&r.push(i.index.array.buffer),self.postMessage({type:"decode",id:a.id,geometry:i},r)}catch(e){console.error(e),self.postMessage({type:"error",id:a.id,error:e.message})}finally{e.destroy(n),e.destroy(t)}})}}}.toString()),t=["/* draco decoder */",t,"","/* worker */",e.substring(e.indexOf("{")+1,e.lastIndexOf("}"))].join("\n");i.workerSourceURL=URL.createObjectURL(new Blob([t]))})),this.decoderPending}},{key:"_getWorker",value:function(t,i){var r=this;return this._initDecoder().then(function(){r.workerPool.length<r.workerLimit?((n=new Worker(r.workerSourceURL))._callbacks={},n._taskCosts={},n._taskLoad=0,n.postMessage({type:"init",decoderConfig:r.decoderConfig}),n.onmessage=function(e){var t=e.data;switch(t.type){case"decode":n._callbacks[t.id].resolve(t);break;case"error":n._callbacks[t.id].reject(t);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+t.type+'"')}},r.workerPool.push(n)):r.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});var n,e=r.workerPool[r.workerPool.length-1];return e._taskCosts[t]=i,e._taskLoad+=i,e})}},{key:"_releaseTask",value:function(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}},{key:"debug",value:function(){console.log("Task load: ",this.workerPool.map(function(e){return e._taskLoad}))}},{key:"dispose",value:function(){for(var e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}}]),n}();var yb=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:4;te(this,t),this.pool=e,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}return A(t,[{key:"_initWorker",value:function(e){var t;this.workers[e]||((t=this.workerCreator()).addEventListener("message",this._onMessage.bind(this,e)),this.workers[e]=t)}},{key:"_getIdleWorker",value:function(){for(var e=0;e<this.pool;e++)if(!(this.workerStatus&1<<e))return e;return-1}},{key:"_onMessage",value:function(e,t){var n,i=this.workersResolve[e];i&&i(t),this.queue.length?(t=(i=this.queue.shift()).resolve,n=i.msg,i=i.transfer,this.workersResolve[e]=t,this.workers[e].postMessage(n,i)):this.workerStatus^=1<<e}},{key:"setWorkerCreator",value:function(e){this.workerCreator=e}},{key:"setWorkerLimit",value:function(e){this.pool=e}},{key:"postMessage",value:function(n,i){var r=this;return new Promise(function(e){var t=r._getIdleWorker();-1!==t?(r._initWorker(t),r.workerStatus|=1<<t,r.workersResolve[t]=e,r.workers[t].postMessage(n,i)):r.queue.push({resolve:e,msg:n,transfer:i})})}},{key:"dispose",value:function(){this.workers.forEach(function(e){return e.terminate()}),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}]),t}(),wb=0,bb=2,xb=A(function e(){te(this,e),this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize: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:[]}],this.keyValue={},this.globalData=null}),Eb=function(){function r(e,t,n,i){te(this,r),this._dataView=new DataView(e.buffer,e.byteOffset+t,n),this._littleEndian=i,this._offset=0}return A(r,[{key:"_nextUint8",value:function(){var e=this._dataView.getUint8(this._offset);return this._offset+=1,e}},{key:"_nextUint16",value:function(){var e=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,e}},{key:"_nextUint32",value:function(){var e=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,e}},{key:"_nextUint64",value:function(){var e=this._dataView.getUint32(this._offset,this._littleEndian)+Math.pow(2,32)*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,e}},{key:"_nextInt32",value:function(){var e=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,e}},{key:"_skip",value:function(e){return this._offset+=e,this}},{key:"_scan",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this._offset,i=0;this._dataView.getUint8(this._offset)!==t&&i<e;)i++,this._offset++;return i<e&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+n,i)}}]),r}(),Cb=(new Uint8Array([0]),[171,75,84,88,32,50,48,187,13,10,26,10]);function Bb(e){return"undefined"!=typeof TextDecoder?(new TextDecoder).decode(e):Buffer.from(e).toString("utf8")}var _b,Mb,Tb;var Sb,Ib={env:{emscripten_notify_memory_growth:function(e){Tb=new Uint8Array(Mb.exports.memory.buffer)}}},Db=function(){function e(){te(this,e)}return A(e,[{key:"init",value:function(){return _b=_b||fetch("data:application/wasm;base64,"+Pb).then(function(e){return e.arrayBuffer()}).then(function(e){return WebAssembly.instantiate(e,Ib)}).then(function(e){Mb=e.instance,Ib.env.emscripten_notify_memory_growth(0)})}},{key:"decode",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=e.byteLength,i=Mb.exports.malloc(n),e=(Tb.set(e,i),t=t||Number(Mb.exports.ZSTD_findDecompressedSize(i,n)),Mb.exports.malloc(t)),t=Mb.exports.ZSTD_decompress(e,t,i,n),n=Tb.slice(e,e+t);return Mb.exports.free(i),Mb.exports.free(e),n}}]),e}(),Pb="AGFzbQEAAAABpQEVYAF/AX9gAn9/AGADf39/AX9gBX9/f39/AX9gAX8AYAJ/fwF/YAR/f39/AX9gA39/fwBgBn9/f39/fwF/YAd/f39/f39/AX9gAn9/AX5gAn5+AX5gAABgBX9/f39/AGAGf39/f39/AGAIf39/f39/f38AYAl/f39/f39/f38AYAABf2AIf39/f39/f38Bf2ANf39/f39/f39/f39/fwF/YAF/AX4CJwEDZW52H2Vtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgABANpaAEFAAAFAgEFCwACAQABAgIFBQcAAwABDgsBAQcAEhMHAAUBDAQEAAANBwQCAgYCBAgDAwMDBgEACQkHBgICAAYGAgQUBwYGAwIGAAMCAQgBBwUGCgoEEQAEBAEIAwgDBQgDEA8IAAcABAUBcAECAgUEAQCAAgYJAX8BQaCgwAILB2AHBm1lbW9yeQIABm1hbGxvYwAoBGZyZWUAJgxaU1REX2lzRXJyb3IAaBlaU1REX2ZpbmREZWNvbXByZXNzZWRTaXplAFQPWlNURF9kZWNvbXByZXNzAEoGX3N0YXJ0ACQJBwEAQQELASQKussBaA8AIAAgACgCBCABajYCBAsZACAAKAIAIAAoAgRBH3F0QQAgAWtBH3F2CwgAIABBiH9LC34BBH9BAyEBIAAoAgQiA0EgTQRAIAAoAggiASAAKAIQTwRAIAAQDQ8LIAAoAgwiAiABRgRAQQFBAiADQSBJGw8LIAAgASABIAJrIANBA3YiBCABIARrIAJJIgEbIgJrIgQ2AgggACADIAJBA3RrNgIEIAAgBCgAADYCAAsgAQsUAQF/IAAgARACIQIgACABEAEgAgv3AQECfyACRQRAIABCADcCACAAQQA2AhAgAEIANwIIQbh/DwsgACABNgIMIAAgAUEEajYCECACQQRPBEAgACABIAJqIgFBfGoiAzYCCCAAIAMoAAA2AgAgAUF/ai0AACIBBEAgAEEIIAEQFGs2AgQgAg8LIABBADYCBEF/DwsgACABNgIIIAAgAS0AACIDNgIAIAJBfmoiBEEBTQRAIARBAWtFBEAgACABLQACQRB0IANyIgM2AgALIAAgAS0AAUEIdCADajYCAAsgASACakF/ai0AACIBRQRAIABBADYCBEFsDwsgAEEoIAEQFCACQQN0ams2AgQgAgsWACAAIAEpAAA3AAAgACABKQAINwAICy8BAX8gAUECdEGgHWooAgAgACgCAEEgIAEgACgCBGprQR9xdnEhAiAAIAEQASACCyEAIAFCz9bTvtLHq9lCfiAAfEIfiUKHla+vmLbem55/fgsdAQF/IAAoAgggACgCDEYEfyAAKAIEQSBGBUEACwuCBAEDfyACQYDAAE8EQCAAIAEgAhBnIAAPCyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAsMACAAIAEpAAA3AAALQQECfyAAKAIIIgEgACgCEEkEQEEDDwsgACAAKAIEIgJBB3E2AgQgACABIAJBA3ZrIgE2AgggACABKAAANgIAQQALDAAgACABKAIANgAAC/cCAQJ/AkAgACABRg0AAkAgASACaiAASwRAIAAgAmoiBCABSw0BCyAAIAEgAhALDwsgACABc0EDcSEDAkACQCAAIAFJBEAgAwRAIAAhAwwDCyAAQQNxRQRAIAAhAwwCCyAAIQMDQCACRQ0EIAMgAS0AADoAACABQQFqIQEgAkF/aiECIANBAWoiA0EDcQ0ACwwBCwJAIAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQhBSAGQQR2IQRBICAAdCIAQQFyIQkgASgCACEPQQAhAiADIQYCQANAIAlBAkggAiAPS3JFBEAgAiEHAkAgCARAA0AgBEH//wNxQf//A0YEQCAHQRhqIQcgBiAQSQR/IAZBAmoiBigAACAFdgUgBUEQaiEFIARBEHYLIQQMAQsLA0AgBEEDcSIIQQNGBEAgBUECaiEFIARBAnYhBCAHQQNqIQcMAQsLIAcgCGoiByAPSw0EIAVBAmohBQNAIAIgB0kEQCANIAJBAXRqQQA7AQAgAkEBaiECDAELCyAGIA5LQQAgBiAFQQN1aiIHIAxLG0UEQCAHKAAAIAVBB3EiBXYhBAwCCyAEQQJ2IQQLIAYhBwsCfyALQX9qIAQgAEF/anEiBiAAQQF0QX9qIgggCWsiEUkNABogBCAIcSIEQQAgESAEIABIG2shBiALCyEIIA0gAkEBdGogBkF/aiIEOwEAIAlBASAGayAEIAZBAUgbayEJA0AgCSAASARAIABBAXUhACALQX9qIQsMAQsLAn8gByAOS0EAIAcgBSAIaiIFQQN1aiIGIAxLG0UEQCAFQQdxDAELIAUgDCIGIAdrQQN0awshBSACQQFqIQIgBEUhCCAGKAAAIAVBH3F2IQQMAQsLQWwgCUEBRyAFQSBKcg0BGiABIAJBf2o2AgAgBiAFQQdqQQN1aiADawwBC0FQCyEAIApBEGokACAACwkAQQFBBSAAGwsMACAAIAEoAAA2AAALqgMBCn8jAEHwAGsiCiQAIAJBAWohDiAAQQhqIQtBgIAEIAVBf2p0QRB1IQxBACECQQEhBkEBIAV0IglBf2oiDyEIA0AgAiAORkUEQAJAIAEgAkEBdCINai8BACIHQf//A0YEQCALIAhBA3RqIAI2AgQgCEF/aiEIQQEhBwwBCyAGQQAgDCAHQRB0QRB1ShshBgsgCiANaiAHOwEAIAJBAWohAgwBCwsgACAFNgIEIAAgBjYCACAJQQN2IAlBAXZqQQNqIQxBACEAQQAhBkEAIQIDQCAGIA5GBEADQAJAIAAgCUYNACAKIAsgAEEDdGoiASgCBCIGQQF0aiICIAIvAQAiAkEBajsBACABIAUgAhAUayIIOgADIAEgAiAIQf8BcXQgCWs7AQAgASAEIAZBAnQiAmooAgA6AAIgASACIANqKAIANgIEIABBAWohAAwBCwsFIAEgBkEBdGouAQAhDUEAIQcDQCAHIA1ORQRAIAsgAkEDdGogBjYCBANAIAIgDGogD3EiAiAISw0ACyAHQQFqIQcMAQsLIAZBAWohBgwBCwsgCkHwAGokAAsjAEIAIAEQCSAAhUKHla+vmLbem55/fkLj3MqV/M7y9YV/fAsQACAAQn43AwggACABNgIACyQBAX8gAARAIAEoAgQiAgRAIAEoAgggACACEQEADwsgABAmCwsfACAAIAEgAi8BABAINgIAIAEQBBogACACQQRqNgIEC0oBAX9BoCAoAgAiASAAaiIAQX9MBEBBiCBBMDYCAEF/DwsCQCAAPwBBEHRNDQAgABBmDQBBiCBBMDYCAEF/DwtBoCAgADYCACABC9cBAQh/Qbp/IQoCQCACKAIEIgggAigCACIJaiIOIAEgAGtLDQBBbCEKIAkgBCADKAIAIgtrSw0AIAAgCWoiBCACKAIIIgxrIQ0gACABQWBqIg8gCyAJQQAQKSADIAkgC2o2AgACQAJAIAwgBCAFa00EQCANIQUMAQsgDCAEIAZrSw0CIAcgDSAFayIAaiIBIAhqIAdNBEAgBCABIAgQDxoMAgsgBCABQQAgAGsQDyEBIAIgACAIaiIINgIEIAEgAGshBAsgBCAPIAUgCEEBECkLIA4hCgsgCgubAgEBfyMAQYABayINJAAgDSADNgJ8AkAgAkEDSwRAQX8hCQwBCwJAAkACQAJAIAJBAWsOAwADAgELIAZFBEBBuH8hCQwEC0FsIQkgBS0AACICIANLDQMgACAHIAJBAnQiAmooAgAgAiAIaigCABA7IAEgADYCAEEBIQkMAwsgASAJNgIAQQAhCQwCCyAKRQRAQWwhCQwCC0EAIQkgC0UgDEEZSHINAUEIIAR0QQhqIQBBACECA0AgAiAATw0CIAJBQGshAgwAAAsAC0FsIQkgDSANQfwAaiANQfgAaiAFIAYQFSICEAMNACANKAJ4IgMgBEsNACAAIA0gDSgCfCAHIAggAxAYIAEgADYCACACIQkLIA1BgAFqJAAgCQsLACAAIAEgAhALGgsQACAALwAAIAAtAAJBEHRyCy8AAn9BuH8gAUEISQ0AGkFyIAAoAAQiAEF3Sw0AGkG4fyAAQQhqIgAgACABSxsLCwkAIAAgATsAAAsDAAELigYBBX8gACAAKAIAIgVBfnE2AgBBACAAIAVBAXZqQYQgKAIAIgQgAEYbIQECQAJAIAAoAgQiAkUNACACKAIAIgNBAXENACACQQhqIgUgA0EBdkF4aiIDQQggA0EISxtnQR9zQQJ0QYAfaiIDKAIARgRAIAMgAigCDDYCAAsgAigCCCIDBEAgAyACKAIMNgIECyACKAIMIgMEQCADIAIoAgg2AgALIAIgAigCACAAKAIAQX5xajYCAEGEICEAAkACQCABRQ0AIAEgAjYCBCABKAIAIgNBAXENASADQQF2QXhqIgNBCCADQQhLG2dBH3NBAnRBgB9qIgMoAgAgAUEIakYEQCADIAEoAgw2AgALIAEoAggiAwRAIAMgASgCDDYCBAsgASgCDCIDBEAgAyABKAIINgIAQYQgKAIAIQQLIAIgAigCACABKAIAQX5xajYCACABIARGDQAgASABKAIAQQF2akEEaiEACyAAIAI2AgALIAIoAgBBAXZBeGoiAEEIIABBCEsbZ0Efc0ECdEGAH2oiASgCACEAIAEgBTYCACACIAA2AgwgAkEANgIIIABFDQEgACAFNgIADwsCQCABRQ0AIAEoAgAiAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAigCACABQQhqRgRAIAIgASgCDDYCAAsgASgCCCICBEAgAiABKAIMNgIECyABKAIMIgIEQCACIAEoAgg2AgBBhCAoAgAhBAsgACAAKAIAIAEoAgBBfnFqIgI2AgACQCABIARHBEAgASABKAIAQQF2aiAANgIEIAAoAgAhAgwBC0GEICAANgIACyACQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgIoAgAhASACIABBCGoiAjYCACAAIAE2AgwgAEEANgIIIAFFDQEgASACNgIADwsgBUEBdkF4aiIBQQggAUEISxtnQR9zQQJ0QYAfaiICKAIAIQEgAiAAQQhqIgI2AgAgACABNgIMIABBADYCCCABRQ0AIAEgAjYCAAsLDgAgAARAIABBeGoQJQsLgAIBA38CQCAAQQ9qQXhxQYQgKAIAKAIAQQF2ayICEB1Bf0YNAAJAQYQgKAIAIgAoAgAiAUEBcQ0AIAFBAXZBeGoiAUEIIAFBCEsbZ0Efc0ECdEGAH2oiASgCACAAQQhqRgRAIAEgACgCDDYCAAsgACgCCCIBBEAgASAAKAIMNgIECyAAKAIMIgFFDQAgASAAKAIINgIAC0EBIQEgACAAKAIAIAJBAXRqIgI2AgAgAkEBcQ0AIAJBAXZBeGoiAkEIIAJBCEsbZ0Efc0ECdEGAH2oiAygCACECIAMgAEEIaiIDNgIAIAAgAjYCDCAAQQA2AgggAkUNACACIAM2AgALIAELtwIBA38CQAJAIABBASAAGyICEDgiAA0AAkACQEGEICgCACIARQ0AIAAoAgAiA0EBcQ0AIAAgA0EBcjYCACADQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgAgAEEIakYEQCABIAAoAgw2AgALIAAoAggiAQRAIAEgACgCDDYCBAsgACgCDCIBBEAgASAAKAIINgIACyACECchAkEAIQFBhCAoAgAhACACDQEgACAAKAIAQX5xNgIAQQAPCyACQQ9qQXhxIgMQHSICQX9GDQIgAkEHakF4cSIAIAJHBEAgACACaxAdQX9GDQMLAkBBhCAoAgAiAUUEQEGAICAANgIADAELIAAgATYCBAtBhCAgADYCACAAIANBAXRBAXI2AgAMAQsgAEUNAQsgAEEIaiEBCyABC7kDAQJ/IAAgA2ohBQJAIANBB0wEQANAIAAgBU8NAiAAIAItAAA6AAAgAEEBaiEAIAJBAWohAgwAAAsACyAEQQFGBEACQCAAIAJrIgZBB00EQCAAIAItAAA6AAAgACACLQABOgABIAAgAi0AAjoAAiAAIAItAAM6AAMgAEEEaiACIAZBAnQiBkHAHmooAgBqIgIQFyACIAZB4B5qKAIAayECDAELIAAgAhAMCyACQQhqIQIgAEEIaiEACwJAAkACQAJAIAUgAU0EQCAAIANqIQEgBEEBRyAAIAJrQQ9Kcg0BA0AgACACEAwgAkEIaiECIABBCGoiACABSQ0ACwwFCyAAIAFLBEAgACEBDAQLIARBAUcgACACa0EPSnINASAAIQMgAiEEA0AgAyAEEAwgBEEIaiEEIANBCGoiAyABSQ0ACwwCCwNAIAAgAhAHIAJBEGohAiAAQRBqIgAgAUkNAAsMAwsgACEDIAIhBANAIAMgBBAHIARBEGohBCADQRBqIgMgAUkNAAsLIAIgASAAa2ohAgsDQCABIAVPDQEgASACLQAAOgAAIAFBAWohASACQQFqIQIMAAALAAsLQQECfyAAIAAoArjgASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigCACACaiAAQQZ2IgFBAnRBsB5qKAIAaiAAQSBxIgBFaiABRSAAQQV2cWoFQbh/CwsdACAAKAKQ4gEQWiAAQQA2AqDiASAAQgA3A5DiAQu1AwEFfyMAQZACayIKJABBuH8hBgJAIAVFDQAgBCwAACIIQf8BcSEHAkAgCEF/TARAIAdBgn9qQQF2IgggBU8NAkFsIQYgB0GBf2oiBUGAAk8NAiAEQQFqIQdBACEGA0AgBiAFTwRAIAUhBiAIIQcMAwUgACAGaiAHIAZBAXZqIgQtAABBBHY6AAAgACAGQQFyaiAELQAAQQ9xOgAAIAZBAmohBgwBCwAACwALIAcgBU8NASAAIARBAWogByAKEFMiBhADDQELIAYhBEEAIQYgAUEAQTQQECEJQQAhBQNAIAQgBkcEQCAAIAZqIggtAAAiAUELSwRAQWwhBgwDBSAJIAFBAnRqIgEgASgCAEEBajYCACAGQQFqIQZBASAILQAAdEEBdSAFaiEFDAILAAsLQWwhBiAFRQ0AIAUQFEEBaiIBQQxLDQAgAyABNgIAQQFBASABdCAFayIDEBQiAXQgA0cNACAAIARqIAFBAWoiADoAACAJIABBAnRqIgAgACgCAEEBajYCACAJKAIEIgBBAkkgAEEBcXINACACIARBAWo2AgAgB0EBaiEGCyAKQZACaiQAIAYLxhEBDH8jAEHwAGsiBSQAQWwhCwJAIANBCkkNACACLwAAIQogAi8AAiEJIAIvAAQhByAFQQhqIAQQDgJAIAMgByAJIApqakEGaiIMSQ0AIAUtAAohCCAFQdgAaiACQQZqIgIgChAGIgsQAw0BIAVBQGsgAiAKaiICIAkQBiILEAMNASAFQShqIAIgCWoiAiAHEAYiCxADDQEgBUEQaiACIAdqIAMgDGsQBiILEAMNASAAIAFqIg9BfWohECAEQQRqIQZBASELIAAgAUEDakECdiIDaiIMIANqIgIgA2oiDiEDIAIhBCAMIQcDQCALIAMgEElxBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgCS0AAyELIAcgBiAFQUBrIAgQAkECdGoiCS8BADsAACAFQUBrIAktAAIQASAJLQADIQogBCAGIAVBKGogCBACQQJ0aiIJLwEAOwAAIAVBKGogCS0AAhABIAktAAMhCSADIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgDS0AAyENIAAgC2oiCyAGIAVB2ABqIAgQAkECdGoiAC8BADsAACAFQdgAaiAALQACEAEgAC0AAyEAIAcgCmoiCiAGIAVBQGsgCBACQQJ0aiIHLwEAOwAAIAVBQGsgBy0AAhABIActAAMhByAEIAlqIgkgBiAFQShqIAgQAkECdGoiBC8BADsAACAFQShqIAQtAAIQASAELQADIQQgAyANaiIDIAYgBUEQaiAIEAJBAnRqIg0vAQA7AAAgBUEQaiANLQACEAEgACALaiEAIAcgCmohByAEIAlqIQQgAyANLQADaiEDIAVB2ABqEA0gBUFAaxANciAFQShqEA1yIAVBEGoQDXJFIQsMAQsLIAQgDksgByACS3INAEFsIQsgACAMSw0BIAxBfWohCQNAQQAgACAJSSAFQdgAahAEGwRAIAAgBiAFQdgAaiAIEAJBAnRqIgovAQA7AAAgBUHYAGogCi0AAhABIAAgCi0AA2oiACAGIAVB2ABqIAgQAkECdGoiCi8BADsAACAFQdgAaiAKLQACEAEgACAKLQADaiEADAEFIAxBfmohCgNAIAVB2ABqEAQgACAKS3JFBEAgACAGIAVB2ABqIAgQAkECdGoiCS8BADsAACAFQdgAaiAJLQACEAEgACAJLQADaiEADAELCwNAIAAgCk0EQCAAIAYgBUHYAGogCBACQQJ0aiIJLwEAOwAAIAVB2ABqIAktAAIQASAAIAktAANqIQAMAQsLAkAgACAMTw0AIAAgBiAFQdgAaiAIEAIiAEECdGoiDC0AADoAACAMLQADQQFGBEAgBUHYAGogDC0AAhABDAELIAUoAlxBH0sNACAFQdgAaiAGIABBAnRqLQACEAEgBSgCXEEhSQ0AIAVBIDYCXAsgAkF9aiEMA0BBACAHIAxJIAVBQGsQBBsEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiIAIAYgBUFAayAIEAJBAnRqIgcvAQA7AAAgBUFAayAHLQACEAEgACAHLQADaiEHDAEFIAJBfmohDANAIAVBQGsQBCAHIAxLckUEQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwNAIAcgDE0EQCAHIAYgBUFAayAIEAJBAnRqIgAvAQA7AAAgBUFAayAALQACEAEgByAALQADaiEHDAELCwJAIAcgAk8NACAHIAYgBUFAayAIEAIiAEECdGoiAi0AADoAACACLQADQQFGBEAgBUFAayACLQACEAEMAQsgBSgCREEfSw0AIAVBQGsgBiAAQQJ0ai0AAhABIAUoAkRBIUkNACAFQSA2AkQLIA5BfWohAgNAQQAgBCACSSAFQShqEAQbBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2oiACAGIAVBKGogCBACQQJ0aiIELwEAOwAAIAVBKGogBC0AAhABIAAgBC0AA2ohBAwBBSAOQX5qIQIDQCAFQShqEAQgBCACS3JFBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsDQCAEIAJNBEAgBCAGIAVBKGogCBACQQJ0aiIALwEAOwAAIAVBKGogAC0AAhABIAQgAC0AA2ohBAwBCwsCQCAEIA5PDQAgBCAGIAVBKGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBKGogAi0AAhABDAELIAUoAixBH0sNACAFQShqIAYgAEECdGotAAIQASAFKAIsQSFJDQAgBUEgNgIsCwNAQQAgAyAQSSAFQRBqEAQbBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2oiACAGIAVBEGogCBACQQJ0aiICLwEAOwAAIAVBEGogAi0AAhABIAAgAi0AA2ohAwwBBSAPQX5qIQIDQCAFQRBqEAQgAyACS3JFBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsDQCADIAJNBEAgAyAGIAVBEGogCBACQQJ0aiIALwEAOwAAIAVBEGogAC0AAhABIAMgAC0AA2ohAwwBCwsCQCADIA9PDQAgAyAGIAVBEGogCBACIgBBAnRqIgItAAA6AAAgAi0AA0EBRgRAIAVBEGogAi0AAhABDAELIAUoAhRBH0sNACAFQRBqIAYgAEECdGotAAIQASAFKAIUQSFJDQAgBUEgNgIUCyABQWwgBUHYAGoQCiAFQUBrEApxIAVBKGoQCnEgBUEQahAKcRshCwwJCwAACwALAAALAAsAAAsACwAACwALQWwhCwsgBUHwAGokACALC7UEAQ5/IwBBEGsiBiQAIAZBBGogABAOQVQhBQJAIARB3AtJDQAgBi0ABCEHIANB8ARqQQBB7AAQECEIIAdBDEsNACADQdwJaiIJIAggBkEIaiAGQQxqIAEgAhAxIhAQA0UEQCAGKAIMIgQgB0sNASADQdwFaiEPIANBpAVqIREgAEEEaiESIANBqAVqIQEgBCEFA0AgBSICQX9qIQUgCCACQQJ0aigCAEUNAAsgAkEBaiEOQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgASALaiAKNgIAIAVBAWohBSAKIAxqIQoMAQsLIAEgCjYCAEEAIQUgBigCCCELA0AgBSALRkUEQCABIAUgCWotAAAiDEECdGoiDSANKAIAIg1BAWo2AgAgDyANQQF0aiINIAw6AAEgDSAFOgAAIAVBAWohBQwBCwtBACEBIANBADYCqAUgBEF/cyAHaiEJQQEhBQNAIAUgDk9FBEAgCCAFQQJ0IgtqKAIAIQwgAyALaiABNgIAIAwgBSAJanQgAWohASAFQQFqIQUMAQsLIAcgBEEBaiIBIAJrIgRrQQFqIQgDQEEBIQUgBCAIT0UEQANAIAUgDk9FBEAgBUECdCIJIAMgBEE0bGpqIAMgCWooAgAgBHY2AgAgBUEBaiEFDAELCyAEQQFqIQQMAQsLIBIgByAPIAogESADIAIgARBkIAZBAToABSAGIAc6AAYgACAGKAIENgIACyAQIQULIAZBEGokACAFC8ENAQt/IwBB8ABrIgUkAEFsIQkCQCADQQpJDQAgAi8AACEKIAIvAAIhDCACLwAEIQYgBUEIaiAEEA4CQCADIAYgCiAMampBBmoiDUkNACAFLQAKIQcgBUHYAGogAkEGaiICIAoQBiIJEAMNASAFQUBrIAIgCmoiAiAMEAYiCRADDQEgBUEoaiACIAxqIgIgBhAGIgkQAw0BIAVBEGogAiAGaiADIA1rEAYiCRADDQEgACABaiIOQX1qIQ8gBEEEaiEGQQEhCSAAIAFBA2pBAnYiAmoiCiACaiIMIAJqIg0hAyAMIQQgCiECA0AgCSADIA9JcQRAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAACAGIAVBQGsgBxACQQF0aiIILQAAIQsgBUFAayAILQABEAEgAiALOgAAIAYgBUEoaiAHEAJBAXRqIggtAAAhCyAFQShqIAgtAAEQASAEIAs6AAAgBiAFQRBqIAcQAkEBdGoiCC0AACELIAVBEGogCC0AARABIAMgCzoAACAGIAVB2ABqIAcQAkEBdGoiCC0AACELIAVB2ABqIAgtAAEQASAAIAs6AAEgBiAFQUBrIAcQAkEBdGoiCC0AACELIAVBQGsgCC0AARABIAIgCzoAASAGIAVBKGogBxACQQF0aiIILQAAIQsgBUEoaiAILQABEAEgBCALOgABIAYgBUEQaiAHEAJBAXRqIggtAAAhCyAFQRBqIAgtAAEQASADIAs6AAEgA0ECaiEDIARBAmohBCACQQJqIQIgAEECaiEAIAkgBUHYAGoQDUVxIAVBQGsQDUVxIAVBKGoQDUVxIAVBEGoQDUVxIQkMAQsLIAQgDUsgAiAMS3INAEFsIQkgACAKSw0BIApBfWohCQNAIAVB2ABqEAQgACAJT3JFBEAgBiAFQdgAaiAHEAJBAXRqIggtAAAhCyAFQdgAaiAILQABEAEgACALOgAAIAYgBUHYAGogBxACQQF0aiIILQAAIQsgBUHYAGogCC0AARABIAAgCzoAASAAQQJqIQAMAQsLA0AgBUHYAGoQBCAAIApPckUEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCwNAIAAgCkkEQCAGIAVB2ABqIAcQAkEBdGoiCS0AACEIIAVB2ABqIAktAAEQASAAIAg6AAAgAEEBaiEADAELCyAMQX1qIQADQCAFQUBrEAQgAiAAT3JFBEAgBiAFQUBrIAcQAkEBdGoiCi0AACEJIAVBQGsgCi0AARABIAIgCToAACAGIAVBQGsgBxACQQF0aiIKLQAAIQkgBUFAayAKLQABEAEgAiAJOgABIAJBAmohAgwBCwsDQCAFQUBrEAQgAiAMT3JFBEAgBiAFQUBrIAcQAkEBdGoiAC0AACEKIAVBQGsgAC0AARABIAIgCjoAACACQQFqIQIMAQsLA0AgAiAMSQRAIAYgBUFAayAHEAJBAXRqIgAtAAAhCiAFQUBrIAAtAAEQASACIAo6AAAgAkEBaiECDAELCyANQX1qIQADQCAFQShqEAQgBCAAT3JFBEAgBiAFQShqIAcQAkEBdGoiAi0AACEKIAVBKGogAi0AARABIAQgCjoAACAGIAVBKGogBxACQQF0aiICLQAAIQogBUEoaiACLQABEAEgBCAKOgABIARBAmohBAwBCwsDQCAFQShqEAQgBCANT3JFBEAgBiAFQShqIAcQAkEBdGoiAC0AACECIAVBKGogAC0AARABIAQgAjoAACAEQQFqIQQMAQsLA0AgBCANSQRAIAYgBUEoaiAHEAJBAXRqIgAtAAAhAiAFQShqIAAtAAEQASAEIAI6AAAgBEEBaiEEDAELCwNAIAVBEGoQBCADIA9PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIAYgBUEQaiAHEAJBAXRqIgAtAAAhAiAFQRBqIAAtAAEQASADIAI6AAEgA0ECaiEDDAELCwNAIAVBEGoQBCADIA5PckUEQCAGIAVBEGogBxACQQF0aiIALQAAIQIgBUEQaiAALQABEAEgAyACOgAAIANBAWohAwwBCwsDQCADIA5JBEAgBiAFQRBqIAcQAkEBdGoiAC0AACECIAVBEGogAC0AARABIAMgAjoAACADQQFqIQMMAQsLIAFBbCAFQdgAahAKIAVBQGsQCnEgBUEoahAKcSAFQRBqEApxGyEJDAELQWwhCQsgBUHwAGokACAJC8oCAQR/IwBBIGsiBSQAIAUgBBAOIAUtAAIhByAFQQhqIAIgAxAGIgIQA0UEQCAEQQRqIQIgACABaiIDQX1qIQQDQCAFQQhqEAQgACAET3JFBEAgAiAFQQhqIAcQAkEBdGoiBi0AACEIIAVBCGogBi0AARABIAAgCDoAACACIAVBCGogBxACQQF0aiIGLQAAIQggBUEIaiAGLQABEAEgACAIOgABIABBAmohAAwBCwsDQCAFQQhqEAQgACADT3JFBEAgAiAFQQhqIAcQAkEBdGoiBC0AACEGIAVBCGogBC0AARABIAAgBjoAACAAQQFqIQAMAQsLA0AgACADT0UEQCACIAVBCGogBxACQQF0aiIELQAAIQYgBUEIaiAELQABEAEgACAGOgAAIABBAWohAAwBCwsgAUFsIAVBCGoQChshAgsgBUEgaiQAIAILtgMBCX8jAEEQayIGJAAgBkEANgIMIAZBADYCCEFUIQQCQAJAIANBQGsiDCADIAZBCGogBkEMaiABIAIQMSICEAMNACAGQQRqIAAQDiAGKAIMIgcgBi0ABEEBaksNASAAQQRqIQogBkEAOgAFIAYgBzoABiAAIAYoAgQ2AgAgB0EBaiEJQQEhBANAIAQgCUkEQCADIARBAnRqIgEoAgAhACABIAU2AgAgACAEQX9qdCAFaiEFIARBAWohBAwBCwsgB0EBaiEHQQAhBSAGKAIIIQkDQCAFIAlGDQEgAyAFIAxqLQAAIgRBAnRqIgBBASAEdEEBdSILIAAoAgAiAWoiADYCACAHIARrIQhBACEEAkAgC0EDTQRAA0AgBCALRg0CIAogASAEakEBdGoiACAIOgABIAAgBToAACAEQQFqIQQMAAALAAsDQCABIABPDQEgCiABQQF0aiIEIAg6AAEgBCAFOgAAIAQgCDoAAyAEIAU6AAIgBCAIOgAFIAQgBToABCAEIAg6AAcgBCAFOgAGIAFBBGohAQwAAAsACyAFQQFqIQUMAAALAAsgAiEECyAGQRBqJAAgBAutAQECfwJAQYQgKAIAIABHIAAoAgBBAXYiAyABa0F4aiICQXhxQQhHcgR/IAIFIAMQJ0UNASACQQhqC0EQSQ0AIAAgACgCACICQQFxIAAgAWpBD2pBeHEiASAAa0EBdHI2AgAgASAANgIEIAEgASgCAEEBcSAAIAJBAXZqIAFrIgJBAXRyNgIAQYQgIAEgAkH/////B3FqQQRqQYQgKAIAIABGGyABNgIAIAEQJQsLygIBBX8CQAJAAkAgAEEIIABBCEsbZ0EfcyAAaUEBR2oiAUEESSAAIAF2cg0AIAFBAnRB/B5qKAIAIgJFDQADQCACQXhqIgMoAgBBAXZBeGoiBSAATwRAIAIgBUEIIAVBCEsbZ0Efc0ECdEGAH2oiASgCAEYEQCABIAIoAgQ2AgALDAMLIARBHksNASAEQQFqIQQgAigCBCICDQALC0EAIQMgAUEgTw0BA0AgAUECdEGAH2ooAgAiAkUEQCABQR5LIQIgAUEBaiEBIAJFDQEMAwsLIAIgAkF4aiIDKAIAQQF2QXhqIgFBCCABQQhLG2dBH3NBAnRBgB9qIgEoAgBGBEAgASACKAIENgIACwsgAigCACIBBEAgASACKAIENgIECyACKAIEIgEEQCABIAIoAgA2AgALIAMgAygCAEEBcjYCACADIAAQNwsgAwvhCwINfwV+IwBB8ABrIgckACAHIAAoAvDhASIINgJcIAEgAmohDSAIIAAoAoDiAWohDwJAAkAgBUUEQCABIQQMAQsgACgCxOABIRAgACgCwOABIREgACgCvOABIQ4gAEEBNgKM4QFBACEIA0AgCEEDRwRAIAcgCEECdCICaiAAIAJqQazQAWooAgA2AkQgCEEBaiEIDAELC0FsIQwgB0EYaiADIAQQBhADDQEgB0EsaiAHQRhqIAAoAgAQEyAHQTRqIAdBGGogACgCCBATIAdBPGogB0EYaiAAKAIEEBMgDUFgaiESIAEhBEEAIQwDQCAHKAIwIAcoAixBA3RqKQIAIhRCEIinQf8BcSEIIAcoAkAgBygCPEEDdGopAgAiFUIQiKdB/wFxIQsgBygCOCAHKAI0QQN0aikCACIWQiCIpyEJIBVCIIghFyAUQiCIpyECAkAgFkIQiKdB/wFxIgNBAk8EQAJAIAZFIANBGUlyRQRAIAkgB0EYaiADQSAgBygCHGsiCiAKIANLGyIKEAUgAyAKayIDdGohCSAHQRhqEAQaIANFDQEgB0EYaiADEAUgCWohCQwBCyAHQRhqIAMQBSAJaiEJIAdBGGoQBBoLIAcpAkQhGCAHIAk2AkQgByAYNwNIDAELAkAgA0UEQCACBEAgBygCRCEJDAMLIAcoAkghCQwBCwJAAkAgB0EYakEBEAUgCSACRWpqIgNBA0YEQCAHKAJEQX9qIgMgA0VqIQkMAQsgA0ECdCAHaigCRCIJIAlFaiEJIANBAUYNAQsgByAHKAJINgJMCwsgByAHKAJENgJIIAcgCTYCRAsgF6chAyALBEAgB0EYaiALEAUgA2ohAwsgCCALakEUTwRAIAdBGGoQBBoLIAgEQCAHQRhqIAgQBSACaiECCyAHQRhqEAQaIAcgB0EYaiAUQhiIp0H/AXEQCCAUp0H//wNxajYCLCAHIAdBGGogFUIYiKdB/wFxEAggFadB//8DcWo2AjwgB0EYahAEGiAHIAdBGGogFkIYiKdB/wFxEAggFqdB//8DcWo2AjQgByACNgJgIAcoAlwhCiAHIAk2AmggByADNgJkAkACQAJAIAQgAiADaiILaiASSw0AIAIgCmoiEyAPSw0AIA0gBGsgC0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdBKGogACgCBBATQQAhBCAHQeAAaiEMIAdB5ABqIQoDQCAHQShqEARBAksgBCAXTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEJIAcoAkggBygCREEDdGopAgAiH0IgiKchCCAeQiCIISAgHUIgiKchAgJAIB9CEIinQf8BcSIDQQJPBEACQCAGRSADQRlJckUEQCAIIAdBKGogA0EgIAcoAixrIg0gDSADSxsiDRAFIAMgDWsiA3RqIQggB0EoahAEGiADRQ0BIAdBKGogAxAFIAhqIQgMAQsgB0EoaiADEAUgCGohCCAHQShqEAQaCyAHKQJUISEgByAINgJUIAcgITcDWAwBCwJAIANFBEAgAgRAIAcoAlQhCAwDCyAHKAJYIQgMAQsCQAJAIAdBKGpBARAFIAggAkVqaiIDQQNGBEAgBygCVEF/aiIDIANFaiEIDAELIANBAnQgB2ooAlQiCCAIRWohCCADQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAg2AlQLICCnIQMgCQRAIAdBKGogCRAFIANqIQMLIAkgC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgAmohAgsgB0EoahAEGiAHIAcoAmggAmoiCSADajYCaCAKIAwgCCAJSxsoAgAhDSAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogB0EoaiAfQhiIp0H/AXEQCCEOIAdB8ABqIARBBHRqIgsgCSANaiAIazYCDCALIAg2AgggCyADNgIEIAsgAjYCACAHIA4gH6dB//8DcWo2AkQgBEEBaiEEDAELCyAEIBdIDQEgEkFgaiEYIAdB4ABqIRogB0HkAGohGyABIQMDQCAHQShqEARBAksgBCAFTnJFBEAgBygCQCAHKAI8QQN0aikCACIdQhCIp0H/AXEhCyAHKAJQIAcoAkxBA3RqKQIAIh5CEIinQf8BcSEIIAcoAkggBygCREEDdGopAgAiH0IgiKchCSAeQiCIISAgHUIgiKchDAJAIB9CEIinQf8BcSICQQJPBEACQCAGRSACQRlJckUEQCAJIAdBKGogAkEgIAcoAixrIgogCiACSxsiChAFIAIgCmsiAnRqIQkgB0EoahAEGiACRQ0BIAdBKGogAhAFIAlqIQkMAQsgB0EoaiACEAUgCWohCSAHQShqEAQaCyAHKQJUISEgByAJNgJUIAcgITcDWAwBCwJAIAJFBEAgDARAIAcoAlQhCQwDCyAHKAJYIQkMAQsCQAJAIAdBKGpBARAFIAkgDEVqaiICQQNGBEAgBygCVEF/aiICIAJFaiEJDAELIAJBAnQgB2ooAlQiCSAJRWohCSACQQFGDQELIAcgBygCWDYCXAsLIAcgBygCVDYCWCAHIAk2AlQLICCnIRQgCARAIAdBKGogCBAFIBRqIRQLIAggC2pBFE8EQCAHQShqEAQaCyALBEAgB0EoaiALEAUgDGohDAsgB0EoahAEGiAHIAcoAmggDGoiGSAUajYCaCAbIBogCSAZSxsoAgAhHCAHIAdBKGogHUIYiKdB/wFxEAggHadB//8DcWo2AjwgByAHQShqIB5CGIinQf8BcRAIIB6nQf//A3FqNgJMIAdBKGoQBBogByAHQShqIB9CGIinQf8BcRAIIB+nQf//A3FqNgJEIAcgB0HwAGogBEEDcUEEdGoiDSkDCCIdNwPIASAHIA0pAwAiHjcDwAECQAJAAkAgBygCvAEiDiAepyICaiIWIBNLDQAgAyAHKALEASIKIAJqIgtqIBhLDQAgEiADayALQSBqTw0BCyAHIAcpA8gBNwMQIAcgBykDwAE3AwggAyASIAdBCGogB0G8AWogEyAPIBUgERAeIQsMAQsgAiADaiEIIAMgDhAHIAJBEU8EQCADQRBqIQIDQCACIA5BEGoiDhAHIAJBEGoiAiAISQ0ACwsgCCAdpyIOayECIAcgFjYCvAEgDiAIIA9rSwRAIA4gCCAVa0sEQEFsIQsMAgsgESACIA9rIgJqIhYgCmogEU0EQCAIIBYgChAPGgwCCyAIIBZBACACaxAPIQggByACIApqIgo2AsQBIAggAmshCCAPIQILIA5BEE8EQCAIIApqIQoDQCAIIAIQByACQRBqIQIgCEEQaiIIIApJDQALDAELAkAgDkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgDkECdCIKQcAeaigCAGoiAhAXIAIgCkHgHmooAgBrIQIgBygCxAEhCgwBCyAIIAIQDAsgCkEJSQ0AIAggCmohCiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAKSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAKSQ0ACwsgCxADBEAgCyEQDAQFIA0gDDYCACANIBkgHGogCWs2AgwgDSAJNgIIIA0gFDYCBCAEQQFqIQQgAyALaiEDDAILAAsLIAQgBUgNASAEIBdrIQtBACEEA0AgCyAFSARAIAcgB0HwAGogC0EDcUEEdGoiAikDCCIdNwPIASAHIAIpAwAiHjcDwAECQAJAAkAgBygCvAEiDCAepyICaiIKIBNLDQAgAyAHKALEASIJIAJqIhBqIBhLDQAgEiADayAQQSBqTw0BCyAHIAcpA8gBNwMgIAcgBykDwAE3AxggAyASIAdBGGogB0G8AWogEyAPIBUgERAeIRAMAQsgAiADaiEIIAMgDBAHIAJBEU8EQCADQRBqIQIDQCACIAxBEGoiDBAHIAJBEGoiAiAISQ0ACwsgCCAdpyIGayECIAcgCjYCvAEgBiAIIA9rSwRAIAYgCCAVa0sEQEFsIRAMAgsgESACIA9rIgJqIgwgCWogEU0EQCAIIAwgCRAPGgwCCyAIIAxBACACaxAPIQggByACIAlqIgk2AsQBIAggAmshCCAPIQILIAZBEE8EQCAIIAlqIQYDQCAIIAIQByACQRBqIQIgCEEQaiIIIAZJDQALDAELAkAgBkEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgBkECdCIGQcAeaigCAGoiAhAXIAIgBkHgHmooAgBrIQIgBygCxAEhCQwBCyAIIAIQDAsgCUEJSQ0AIAggCWohBiAIQQhqIgggAkEIaiICa0EPTARAA0AgCCACEAwgAkEIaiECIAhBCGoiCCAGSQ0ADAIACwALA0AgCCACEAcgAkEQaiECIAhBEGoiCCAGSQ0ACwsgEBADDQMgC0EBaiELIAMgEGohAwwBCwsDQCAEQQNHBEAgACAEQQJ0IgJqQazQAWogAiAHaigCVDYCACAEQQFqIQQMAQsLIAcoArwBIQgLQbp/IRAgEyAIayIAIBIgA2tLDQAgAwR/IAMgCCAAEAsgAGoFQQALIAFrIRALIAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY0AAQMyIFEAMiBg0AIANBHzYCfCADIANB/ABqIANB+ABqIAQgBCAFaiAGGyIEIAEgAmoiAiAEaxAVIgUQAw0AIAMoAnwiBkEfSw0AIAMoAngiB0EJTw0AIABBiCBqIAMgBkGAC0GADCAHEBggA0E0NgJ8IAMgA0H8AGogA0H4AGogBCAFaiIEIAIgBGsQFSIFEAMNACADKAJ8IgZBNEsNACADKAJ4IgdBCk8NACAAQZAwaiADIAZBgA1B4A4gBxAYIANBIzYCfCADIANB/ABqIANB+ABqIAQgBWoiBCACIARrEBUiBRADDQAgAygCfCIGQSNLDQAgAygCeCIHQQpPDQAgACADIAZBwBBB0BEgBxAYIAQgBWoiBEEMaiIFIAJLDQAgAiAFayEFQQAhAgNAIAJBA0cEQCAEKAAAIgZBf2ogBU8NAiAAIAJBAnRqQZzQAWogBjYCACACQQFqIQIgBEEEaiEEDAELCyAEIAFrIQgLIANBgAFqJAAgCAtGAQN/IABBCGohAyAAKAIEIQJBACEAA0AgACACdkUEQCABIAMgAEEDdGotAAJBFktqIQEgAEEBaiEADAELCyABQQggAmt0C4YDAQV/Qbh/IQcCQCADRQ0AIAItAAAiBEUEQCABQQA2AgBBAUG4fyADQQFGGw8LAn8gAkEBaiIFIARBGHRBGHUiBkF/Sg0AGiAGQX9GBEAgA0EDSA0CIAUvAABBgP4BaiEEIAJBA2oMAQsgA0ECSA0BIAItAAEgBEEIdHJBgIB+aiEEIAJBAmoLIQUgASAENgIAIAVBAWoiASACIANqIgNLDQBBbCEHIABBEGogACAFLQAAIgVBBnZBI0EJIAEgAyABa0HAEEHQEUHwEiAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBmCBqIABBCGogBUEEdkEDcUEfQQggASABIAZqIAgbIgEgAyABa0GAC0GADEGAFyAAKAKM4QEgACgCnOIBIAQQHyIGEAMiCA0AIABBoDBqIABBBGogBUECdkEDcUE0QQkgASABIAZqIAgbIgEgAyABa0GADUHgDkGQGSAAKAKM4QEgACgCnOIBIAQQHyIAEAMNACAAIAFqIAJrIQcLIAcLrQMBCn8jAEGABGsiCCQAAn9BUiACQf8BSw0AGkFUIANBDEsNABogAkEBaiELIABBBGohCUGAgAQgA0F/anRBEHUhCkEAIQJBASEEQQEgA3QiB0F/aiIMIQUDQCACIAtGRQRAAkAgASACQQF0Ig1qLwEAIgZB//8DRgRAIAkgBUECdGogAjoAAiAFQX9qIQVBASEGDAELIARBACAKIAZBEHRBEHVKGyEECyAIIA1qIAY7AQAgAkEBaiECDAELCyAAIAQ7AQIgACADOwEAIAdBA3YgB0EBdmpBA2ohBkEAIQRBACECA0AgBCALRkUEQCABIARBAXRqLgEAIQpBACEAA0AgACAKTkUEQCAJIAJBAnRqIAQ6AAIDQCACIAZqIAxxIgIgBUsNAAsgAEEBaiEADAELCyAEQQFqIQQMAQsLQX8gAg0AGkEAIQIDfyACIAdGBH9BAAUgCCAJIAJBAnRqIgAtAAJBAXRqIgEgAS8BACIBQQFqOwEAIAAgAyABEBRrIgU6AAMgACABIAVB/wFxdCAHazsBACACQQFqIQIMAQsLCyEFIAhBgARqJAAgBQvjBgEIf0FsIQcCQCACQQNJDQACQAJAAkACQCABLQAAIgNBA3EiCUEBaw4DAwEAAgsgACgCiOEBDQBBYg8LIAJBBUkNAkEDIQYgASgAACEFAn8CQAJAIANBAnZBA3EiCEF+aiIEQQFNBEAgBEEBaw0BDAILIAVBDnZB/wdxIQQgBUEEdkH/B3EhAyAIRQwCCyAFQRJ2IQRBBCEGIAVBBHZB//8AcSEDQQAMAQsgBUEEdkH//w9xIgNBgIAISw0DIAEtAARBCnQgBUEWdnIhBEEFIQZBAAshBSAEIAZqIgogAksNAgJAIANBgQZJDQAgACgCnOIBRQ0AQQAhAgNAIAJBg4ABSw0BIAJBQGshAgwAAAsACwJ/IAlBA0YEQCABIAZqIQEgAEHw4gFqIQIgACgCDCEGIAUEQCACIAMgASAEIAYQXwwCCyACIAMgASAEIAYQXQwBCyAAQbjQAWohAiABIAZqIQEgAEHw4gFqIQYgAEGo0ABqIQggBQRAIAggBiADIAEgBCACEF4MAQsgCCAGIAMgASAEIAIQXAsQAw0CIAAgAzYCgOIBIABBATYCiOEBIAAgAEHw4gFqNgLw4QEgCUECRgRAIAAgAEGo0ABqNgIMCyAAIANqIgBBiOMBakIANwAAIABBgOMBakIANwAAIABB+OIBakIANwAAIABB8OIBakIANwAAIAoPCwJ/AkACQAJAIANBAnZBA3FBf2oiBEECSw0AIARBAWsOAgACAQtBASEEIANBA3YMAgtBAiEEIAEvAABBBHYMAQtBAyEEIAEQIUEEdgsiAyAEaiIFQSBqIAJLBEAgBSACSw0CIABB8OIBaiABIARqIAMQCyEBIAAgAzYCgOIBIAAgATYC8OEBIAEgA2oiAEIANwAYIABCADcAECAAQgA3AAggAEIANwAAIAUPCyAAIAM2AoDiASAAIAEgBGo2AvDhASAFDwsCfwJAAkACQCADQQJ2QQNxQX9qIgRBAksNACAEQQFrDgIAAgELQQEhByADQQN2DAILQQIhByABLwAAQQR2DAELIAJBBEkgARAhIgJBj4CAAUtyDQFBAyEHIAJBBHYLIQIgAEHw4gFqIAEgB2otAAAgAkEgahAQIQEgACACNgKA4gEgACABNgLw4QEgB0EBaiEHCyAHC0sAIABC+erQ0OfJoeThADcDICAAQgA3AxggAELP1tO+0ser2UI3AxAgAELW64Lu6v2J9eAANwMIIABCADcDACAAQShqQQBBKBAQGgviAgICfwV+IABBKGoiASAAKAJIaiECAn4gACkDACIDQiBaBEAgACkDECIEQgeJIAApAwgiBUIBiXwgACkDGCIGQgyJfCAAKQMgIgdCEol8IAUQGSAEEBkgBhAZIAcQGQwBCyAAKQMYQsXP2bLx5brqJ3wLIAN8IQMDQCABQQhqIgAgAk0EQEIAIAEpAAAQCSADhUIbiUKHla+vmLbem55/fkLj3MqV/M7y9YV/fCEDIAAhAQwBCwsCQCABQQRqIgAgAksEQCABIQAMAQsgASgAAK1Ch5Wvr5i23puef34gA4VCF4lCz9bTvtLHq9lCfkL5893xmfaZqxZ8IQMLA0AgACACSQRAIAAxAABCxc/ZsvHluuonfiADhUILiUKHla+vmLbem55/fiEDIABBAWohAAwBCwsgA0IhiCADhULP1tO+0ser2UJ+IgNCHYggA4VC+fPd8Zn2masWfiIDQiCIIAOFC+8CAgJ/BH4gACAAKQMAIAKtfDcDAAJAAkAgACgCSCIDIAJqIgRBH00EQCABRQ0BIAAgA2pBKGogASACECAgACgCSCACaiEEDAELIAEgAmohAgJ/IAMEQCAAQShqIgQgA2ogAUEgIANrECAgACAAKQMIIAQpAAAQCTcDCCAAIAApAxAgACkAMBAJNwMQIAAgACkDGCAAKQA4EAk3AxggACAAKQMgIABBQGspAAAQCTcDICAAKAJIIQMgAEEANgJIIAEgA2tBIGohAQsgAUEgaiACTQsEQCACQWBqIQMgACkDICEFIAApAxghBiAAKQMQIQcgACkDCCEIA0AgCCABKQAAEAkhCCAHIAEpAAgQCSEHIAYgASkAEBAJIQYgBSABKQAYEAkhBSABQSBqIgEgA00NAAsgACAFNwMgIAAgBjcDGCAAIAc3AxAgACAINwMICyABIAJPDQEgAEEoaiABIAIgAWsiBBAgCyAAIAQ2AkgLCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQEBogAwVBun8LCy8BAX8gAEUEQEG2f0EAIAMbDwtBun8hBCADIAFNBH8gACACIAMQCxogAwVBun8LC6gCAQZ/IwBBEGsiByQAIABB2OABaikDAEKAgIAQViEIQbh/IQUCQCAEQf//B0sNACAAIAMgBBBCIgUQAyIGDQAgACgCnOIBIQkgACAHQQxqIAMgAyAFaiAGGyIKIARBACAFIAYbayIGEEAiAxADBEAgAyEFDAELIAcoAgwhBCABRQRAQbp/IQUgBEEASg0BCyAGIANrIQUgAyAKaiEDAkAgCQRAIABBADYCnOIBDAELAkACQAJAIARBBUgNACAAQdjgAWopAwBCgICACFgNAAwBCyAAQQA2ApziAQwBCyAAKAIIED8hBiAAQQA2ApziASAGQRRPDQELIAAgASACIAMgBSAEIAgQOSEFDAELIAAgASACIAMgBSAEIAgQOiEFCyAHQRBqJAAgBQtnACAAQdDgAWogASACIAAoAuzhARAuIgEQAwRAIAEPC0G4fyECAkAgAQ0AIABB7OABaigCACIBBEBBYCECIAAoApjiASABRw0BC0EAIQIgAEHw4AFqKAIARQ0AIABBkOEBahBDCyACCycBAX8QVyIERQRAQUAPCyAEIAAgASACIAMgBBBLEE8hACAEEFYgAAs/AQF/AkACQAJAIAAoAqDiAUEBaiIBQQJLDQAgAUEBaw4CAAECCyAAEDBBAA8LIABBADYCoOIBCyAAKAKU4gELvAMCB38BfiMAQRBrIgkkAEG4fyEGAkAgBCgCACIIQQVBCSAAKALs4QEiBRtJDQAgAygCACIHQQFBBSAFGyAFEC8iBRADBEAgBSEGDAELIAggBUEDakkNACAAIAcgBRBJIgYQAw0AIAEgAmohCiAAQZDhAWohCyAIIAVrIQIgBSAHaiEHIAEhBQNAIAcgAiAJECwiBhADDQEgAkF9aiICIAZJBEBBuH8hBgwCCyAJKAIAIghBAksEQEFsIQYMAgsgB0EDaiEHAn8CQAJAAkAgCEEBaw4CAgABCyAAIAUgCiAFayAHIAYQSAwCCyAFIAogBWsgByAGEEcMAQsgBSAKIAVrIActAAAgCSgCCBBGCyIIEAMEQCAIIQYMAgsgACgC8OABBEAgCyAFIAgQRQsgAiAGayECIAYgB2ohByAFIAhqIQUgCSgCBEUNAAsgACkD0OABIgxCf1IEQEFsIQYgDCAFIAFrrFINAQsgACgC8OABBEBBaiEGIAJBBEkNASALEEQhDCAHKAAAIAynRw0BIAdBBGohByACQXxqIQILIAMgBzYCACAEIAI2AgAgBSABayEGCyAJQRBqJAAgBgsuACAAECsCf0EAQQAQAw0AGiABRSACRXJFBEBBYiAAIAEgAhA9EAMNARoLQQALCzcAIAEEQCAAIAAoAsTgASABKAIEIAEoAghqRzYCnOIBCyAAECtBABADIAFFckUEQCAAIAEQWwsL0QIBB38jAEEQayIGJAAgBiAENgIIIAYgAzYCDCAFBEAgBSgCBCEKIAUoAgghCQsgASEIAkACQANAIAAoAuzhARAWIQsCQANAIAQgC0kNASADKAAAQXBxQdDUtMIBRgRAIAMgBBAiIgcQAw0EIAQgB2shBCADIAdqIQMMAQsLIAYgAzYCDCAGIAQ2AggCQCAFBEAgACAFEE5BACEHQQAQA0UNAQwFCyAAIAogCRBNIgcQAw0ECyAAIAgQUCAMQQFHQQAgACAIIAIgBkEMaiAGQQhqEEwiByIDa0EAIAMQAxtBCkdyRQRAQbh/IQcMBAsgBxADDQMgAiAHayECIAcgCGohCEEBIQwgBigCDCEDIAYoAgghBAwBCwsgBiADNgIMIAYgBDYCCEG4fyEHIAQNASAIIAFrIQcMAQsgBiADNgIMIAYgBDYCCAsgBkEQaiQAIAcLRgECfyABIAAoArjgASICRwRAIAAgAjYCxOABIAAgATYCuOABIAAoArzgASEDIAAgATYCvOABIAAgASADIAJrajYCwOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEEdCAAbiECCyAAQQh2IgEgAkEYbCIAQYwIaigCAGwgAEGICGooAgBqIgJBA3YgAmogAEGACGooAgAgAEGECGooAgAgAWxqSQs3ACAAIAMgBCAFQYAQEDMiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQMgVBuH8LC78DAQN/IwBBIGsiBSQAIAVBCGogAiADEAYiAhADRQRAIAAgAWoiB0F9aiEGIAUgBBAOIARBBGohAiAFLQACIQMDQEEAIAAgBkkgBUEIahAEGwRAIAAgAiAFQQhqIAMQAkECdGoiBC8BADsAACAFQQhqIAQtAAIQASAAIAQtAANqIgQgAiAFQQhqIAMQAkECdGoiAC8BADsAACAFQQhqIAAtAAIQASAEIAAtAANqIQAMAQUgB0F+aiEEA0AgBUEIahAEIAAgBEtyRQRAIAAgAiAFQQhqIAMQAkECdGoiBi8BADsAACAFQQhqIAYtAAIQASAAIAYtAANqIQAMAQsLA0AgACAES0UEQCAAIAIgBUEIaiADEAJBAnRqIgYvAQA7AAAgBUEIaiAGLQACEAEgACAGLQADaiEADAELCwJAIAAgB08NACAAIAIgBUEIaiADEAIiA0ECdGoiAC0AADoAACAALQADQQFGBEAgBUEIaiAALQACEAEMAQsgBSgCDEEfSw0AIAVBCGogAiADQQJ0ai0AAhABIAUoAgxBIUkNACAFQSA2AgwLIAFBbCAFQQhqEAobIQILCwsgBUEgaiQAIAILkgIBBH8jAEFAaiIJJAAgCSADQTQQCyEDAkAgBEECSA0AIAMgBEECdGooAgAhCSADQTxqIAgQIyADQQE6AD8gAyACOgA+QQAhBCADKAI8IQoDQCAEIAlGDQEgACAEQQJ0aiAKNgEAIARBAWohBAwAAAsAC0EAIQkDQCAGIAlGRQRAIAMgBSAJQQF0aiIKLQABIgtBAnRqIgwoAgAhBCADQTxqIAotAABBCHQgCGpB//8DcRAjIANBAjoAPyADIAcgC2siCiACajoAPiAEQQEgASAKa3RqIQogAygCPCELA0AgACAEQQJ0aiALNgEAIARBAWoiBCAKSQ0ACyAMIAo2AgAgCUEBaiEJDAELCyADQUBrJAALowIBCX8jAEHQAGsiCSQAIAlBEGogBUE0EAsaIAcgBmshDyAHIAFrIRADQAJAIAMgCkcEQEEBIAEgByACIApBAXRqIgYtAAEiDGsiCGsiC3QhDSAGLQAAIQ4gCUEQaiAMQQJ0aiIMKAIAIQYgCyAPTwRAIAAgBkECdGogCyAIIAUgCEE0bGogCCAQaiIIQQEgCEEBShsiCCACIAQgCEECdGooAgAiCEEBdGogAyAIayAHIA4QYyAGIA1qIQgMAgsgCUEMaiAOECMgCUEBOgAPIAkgCDoADiAGIA1qIQggCSgCDCELA0AgBiAITw0CIAAgBkECdGogCzYBACAGQQFqIQYMAAALAAsgCUHQAGokAA8LIAwgCDYCACAKQQFqIQoMAAALAAs0ACAAIAMgBCAFEDYiBRADBEAgBQ8LIAUgBEkEfyABIAIgAyAFaiAEIAVrIAAQNAVBuH8LCyMAIAA/AEEQdGtB//8DakEQdkAAQX9GBEBBAA8LQQAQAEEBCzsBAX8gAgRAA0AgACABIAJBgCAgAkGAIEkbIgMQCyEAIAFBgCBqIQEgAEGAIGohACACIANrIgINAAsLCwYAIAAQAwsLqBUJAEGICAsNAQAAAAEAAAACAAAAAgBBoAgLswYBAAAAAQAAAAIAAAACAAAAJgAAAIIAAAAhBQAASgAAAGcIAAAmAAAAwAEAAIAAAABJBQAASgAAAL4IAAApAAAALAIAAIAAAABJBQAASgAAAL4IAAAvAAAAygIAAIAAAACKBQAASgAAAIQJAAA1AAAAcwMAAIAAAACdBQAASgAAAKAJAAA9AAAAgQMAAIAAAADrBQAASwAAAD4KAABEAAAAngMAAIAAAABNBgAASwAAAKoKAABLAAAAswMAAIAAAADBBgAATQAAAB8NAABNAAAAUwQAAIAAAAAjCAAAUQAAAKYPAABUAAAAmQQAAIAAAABLCQAAVwAAALESAABYAAAA2gQAAIAAAABvCQAAXQAAACMUAABUAAAARQUAAIAAAABUCgAAagAAAIwUAABqAAAArwUAAIAAAAB2CQAAfAAAAE4QAAB8AAAA0gIAAIAAAABjBwAAkQAAAJAHAACSAAAAAAAAAAEAAAABAAAABQAAAA0AAAAdAAAAPQAAAH0AAAD9AAAA/QEAAP0DAAD9BwAA/Q8AAP0fAAD9PwAA/X8AAP3/AAD9/wEA/f8DAP3/BwD9/w8A/f8fAP3/PwD9/38A/f//AP3//wH9//8D/f//B/3//w/9//8f/f//P/3//38AAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAEwAAABQAAAAVAAAAFgAAABcAAAAYAAAAGQAAABoAAAAbAAAAHAAAAB0AAAAeAAAAHwAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACUAAAAnAAAAKQAAACsAAAAvAAAAMwAAADsAAABDAAAAUwAAAGMAAACDAAAAAwEAAAMCAAADBAAAAwgAAAMQAAADIAAAA0AAAAOAAAADAAEAQeAPC1EBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAQcQQC4sBAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABIAAAAUAAAAFgAAABgAAAAcAAAAIAAAACgAAAAwAAAAQAAAAIAAAAAAAQAAAAIAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAAAAQBBkBIL5gQBAAAAAQAAAAEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAAAEAAAAEAAAACAAAAAAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBgBcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBkBkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABBpB0L2QEBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/AAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAEGgIAsDwBBQ",kb=new WeakMap,Lb=0,Rb=function(){y(r,Ic);var t,n=C(r);function r(e){return te(this,r),(e=n.call(this,e)).transcoderPath="",e.transcoderBinary=null,e.transcoderPending=null,e.workerPool=new yb,e.workerSourceURL="",e.workerConfig=null,"undefined"!=typeof MSC_TRANSCODER&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.'),e}return A(r,[{key:"setTranscoderPath",value:function(e){return this.transcoderPath=e,this}},{key:"setWorkerLimit",value:function(e){return this.workerPool.setWorkerLimit(e),this}},{key:"detectSupport",value:function(e){return this.workerConfig={astcSupported:e.extensions.has("WEBGL_compressed_texture_astc"),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")},e.capabilities.isWebGL2&&(this.workerConfig.etc1Supported=!1),this}},{key:"init",value:function(){var e,t,i=this;return this.transcoderPending||((e=new Pc(this.manager)).setPath(this.transcoderPath),e.setWithCredentials(this.withCredentials),e=e.loadAsync("basis_transcoder.js"),(t=new Pc(this.manager)).setPath(this.transcoderPath),t.setResponseType("arraybuffer"),t.setWithCredentials(this.withCredentials),t=t.loadAsync("basis_transcoder.wasm"),this.transcoderPending=Promise.all([e,t]).then(function(e){var e=N(e,2),t=e[0],e=e[1],n=r.BasisWorker.toString(),t=["/* constants */","let _EngineFormat = "+JSON.stringify(r.EngineFormat),"let _TranscoderFormat = "+JSON.stringify(r.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(r.BasisFormat),"/* basis_transcoder.js */",t,"/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");i.workerSourceURL=URL.createObjectURL(new Blob([t])),i.transcoderBinary=e,i.workerPool.setWorkerCreator(function(){var e=new Worker(i.workerSourceURL),t=i.transcoderBinary.slice(0);return e.postMessage({type:"init",config:i.workerConfig,transcoderBinary:t},[t]),e})}),0<Lb&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),Lb++),this.transcoderPending}},{key:"load",value:function(e,t,n,i){var r=this;if(null===this.workerConfig)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");var a=new Pc(this.manager);a.setResponseType("arraybuffer"),a.setWithCredentials(this.withCredentials),a.load(e,function(e){if(kb.has(e))return kb.get(e).promise.then(t).catch(i);r._createTexture(e).then(function(e){return t?t(e):null}).catch(i)},n,i)}},{key:"_createTextureFrom",value:function(e,t){var n=e.mipmaps,i=e.width,r=e.height,a=e.format,o=e.type,s=e.error,l=e.dfdTransferFn,e=e.dfdFlags;return"error"===o?Promise.reject(s):((o=1<t.layerCount?new CompressedArrayTexture(n,i,r,t.layerCount,a,mt):new Rl(n,i,r,a,mt)).minFilter=1===n.length?U:pt,o.magFilter=U,o.generateMipmaps=!1,o.needsUpdate=!0,o.encoding=2===l?Ln:kn,o.premultiplyAlpha=!!(1&e),o)}},{key:"_createTexture",value:(t=d(V().mark(function e(t){var n,i,r,a,o=this,s=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=1<s.length&&void 0!==s[1]?s[1]:{},0!==(i=function(e){if((n=new Uint8Array(e.buffer,e.byteOffset,Cb.length))[0]!==Cb[0]||n[1]!==Cb[1]||n[2]!==Cb[2]||n[3]!==Cb[3]||n[4]!==Cb[4]||n[5]!==Cb[5]||n[6]!==Cb[6]||n[7]!==Cb[7]||n[8]!==Cb[8]||n[9]!==Cb[9]||n[10]!==Cb[10]||n[11]!==Cb[11])throw new Error("Missing KTX 2.0 identifier.");for(var t=new xb,n=17*Uint32Array.BYTES_PER_ELEMENT,i=new Eb(e,Cb.length,n,!0),r=(t.vkFormat=i._nextUint32(),t.typeSize=i._nextUint32(),t.pixelWidth=i._nextUint32(),t.pixelHeight=i._nextUint32(),t.pixelDepth=i._nextUint32(),t.layerCount=i._nextUint32(),t.faceCount=i._nextUint32(),i._nextUint32()),a=(t.supercompressionScheme=i._nextUint32(),i._nextUint32()),o=i._nextUint32(),s=i._nextUint32(),l=i._nextUint32(),u=i._nextUint64(),i=i._nextUint64(),c=new Eb(e,Cb.length+n,3*r*8,!0),h=0;h<r;h++)t.levels.push({levelData:new Uint8Array(e.buffer,e.byteOffset+c._nextUint64(),c._nextUint64()),uncompressedByteLength:c._nextUint64()});for(var d=new Eb(e,a,o,!0),p={vendorId:d._skip(4)._nextUint16(),descriptorType:d._nextUint16(),versionNumber:d._nextUint16(),descriptorBlockSize:d._nextUint16(),colorModel:d._nextUint8(),colorPrimaries:d._nextUint8(),transferFunction:d._nextUint8(),flags:d._nextUint8(),texelBlockDimension:[d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8()],bytesPlane:[d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8()],samples:[]},f=(p.descriptorBlockSize/4-6)/4,m=0;m<f;m++){var v={bitOffset:d._nextUint16(),bitLength:d._nextUint8(),channelType:d._nextUint8(),samplePosition:[d._nextUint8(),d._nextUint8(),d._nextUint8(),d._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&v.channelType?(v.sampleLower=d._nextInt32(),v.sampleUpper=d._nextInt32()):(v.sampleLower=d._nextUint32(),v.sampleUpper=d._nextUint32()),p.samples[m]=v}t.dataFormatDescriptor.length=0,t.dataFormatDescriptor.push(p);for(var g=new Eb(e,s,l,!0);g._offset<l;){var A=g._nextUint32(),y=g._scan(A),w=Bb(y),A=g._scan(A-y.byteLength);t.keyValue[w]=w.match(/^ktx/i)?Bb(A):A,g._offset%4&&g._skip(4-g._offset%4)}if(!(i<=0)){for(var b=new Eb(e,u,i,!0),n=b._nextUint16(),a=b._nextUint16(),o=b._nextUint32(),s=b._nextUint32(),i=b._nextUint32(),x=b._nextUint32(),E=[],C=0;C<r;C++)E.push({imageFlags:b._nextUint32(),rgbSliceByteOffset:b._nextUint32(),rgbSliceByteLength:b._nextUint32(),alphaSliceByteOffset:b._nextUint32(),alphaSliceByteLength:b._nextUint32()});var u=u+b._offset,B=u+o,_=B+s,M=_+i,u=new Uint8Array(e.buffer,e.byteOffset+u,o),o=new Uint8Array(e.buffer,e.byteOffset+B,s),B=new Uint8Array(e.buffer,e.byteOffset+_,i),s=new Uint8Array(e.buffer,e.byteOffset+M,x);t.globalData={endpointCount:n,selectorCount:a,imageDescs:E,endpointsData:u,selectorsData:o,tablesData:B,extendedData:s}}return t}(new Uint8Array(t))).vkFormat)return e.abrupt("return",function(){return Gb.apply(this,arguments)}(i));e.next=4;break;case 4:return r=n,a=this.init().then(function(){return o.workerPool.postMessage({type:"transcode",buffer:t,taskConfig:r},[t])}).then(function(e){return o._createTextureFrom(e.data,i)}),kb.set(t,{promise:a}),e.abrupt("return",a);case 8:case"end":return e.stop()}},e,this)})),function(e){return t.apply(this,arguments)})},{key:"dispose",value:function(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),Lb--,this}}]),r}(),Fb=(Rb.BasisFormat={ETC1S:0,UASTC_4x4:1},Rb.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},Rb.EngineFormat={RGBAFormat:St,RGBA_ASTC_4x4_Format:Zt,RGBA_BPTC_Format:pn,RGBA_ETC2_EAC_Format:Kt,RGBA_PVRTC_4BPPV1_Format:Jt,RGBA_S3TC_DXT5_Format:Vt,RGB_ETC1_Format:Xt,RGB_ETC2_Format:Yt,RGB_PVRTC_4BPPV1_Format:jt,RGB_S3TC_DXT1_Format:zt},Rb.BasisWorker=function(){var A,n,y,w=_EngineFormat,b=_TranscoderFormat,x=_BasisFormat;self.addEventListener("message",function(e){var t,c=e.data;switch(c.type){case"init":A=c.config,t=c.transcoderBinary,n=new Promise(function(e){y={wasmBinary:t,onRuntimeInitialized:e},BASIS(y)}).then(function(){y.initializeBasis(),void 0===y.KTX2File&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")});break;case"transcode":n.then(function(){try{for(var e=function(e){var t=new y.KTX2File(new Uint8Array(e));function n(){t.close(),t.delete()}if(!t.isValid())throw n(),new Error("THREE.KTX2Loader:\tInvalid or unsupported .ktx2 file");var e=t.isUASTC()?x.UASTC_4x4:x.ETC1S,i=t.getWidth(),r=t.getHeight(),a=t.getLayers()||1,o=t.getLevels(),s=t.getHasAlpha(),l=t.getDFDTransferFunc(),u=t.getDFDFlags(),e=function(e,t,n,i){for(var r,a,o=e===x.ETC1S?E:C,s=0;s<o.length;s++){var l=o[s];if(A[l.if]&&(l.basisFormat.includes(e)&&!(i&&l.transcoderFormat.length<2)&&(!l.needsPowerOfTwo||B(t)&&B(n))))return r=l.transcoderFormat[i?1:0],a=l.engineFormat[i?1:0],{transcoderFormat:r,engineFormat:a}}return console.warn("THREE.KTX2Loader: No suitable compressed texture format found. Decoding to RGBA32."),r=b.RGBA32,a=w.RGBAFormat,{transcoderFormat:r,engineFormat:a}}(e,i,r,s),c=e.transcoderFormat,e=e.engineFormat;if(!i||!r||!o)throw n(),new Error("THREE.KTX2Loader:\tInvalid texture");if(!t.startTranscoding())throw n(),new Error("THREE.KTX2Loader: .startTranscoding failed");for(var h=[],d=0;d<o;d++){for(var p=[],f=void 0,m=void 0,v=0;v<a;v++){var g=t.getImageLevelInfo(d,v,0),g=(f=g.origWidth,m=g.origHeight,new Uint8Array(t.getImageTranscodedSizeInBytes(d,v,0,c)));if(!t.transcodeImage(g,d,v,0,c,0,-1,-1))throw n(),new Error("THREE.KTX2Loader: .transcodeImage failed.");p.push(g)}h.push({data:function(e){var t,n=0,i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;n+=r.byteLength}}catch(e){i.e(e)}finally{i.f()}var a,o=new Uint8Array(n),s=0,l=q(e);try{for(l.s();!(a=l.n()).done;){var u=a.value;o.set(u,s),s+=u.byteLength}}catch(e){l.e(e)}finally{l.f()}return o}(p),width:f,height:m})}return n(),{width:i,height:r,hasAlpha:s,mipmaps:h,format:e,dfdTransferFn:l,dfdFlags:u}}(c.buffer),t=e.width,n=e.height,i=e.hasAlpha,r=e.mipmaps,a=e.format,o=e.dfdTransferFn,s=e.dfdFlags,l=[],u=0;u<r.length;++u)l.push(r[u].data.buffer);self.postMessage({type:"transcode",id:c.id,width:t,height:n,hasAlpha:i,mipmaps:r,format:a,dfdTransferFn:o,dfdFlags:s},l)}catch(e){console.error(e),self.postMessage({type:"error",id:c.id,error:e.message})}})}});var e=[{if:"astcSupported",basisFormat:[x.UASTC_4x4],transcoderFormat:[b.ASTC_4x4,b.ASTC_4x4],engineFormat:[w.RGBA_ASTC_4x4_Format,w.RGBA_ASTC_4x4_Format],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.BC7_M5,b.BC7_M5],engineFormat:[w.RGBA_BPTC_Format,w.RGBA_BPTC_Format],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.BC1,b.BC3],engineFormat:[w.RGB_S3TC_DXT1_Format,w.RGBA_S3TC_DXT5_Format],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.ETC1,b.ETC2],engineFormat:[w.RGB_ETC2_Format,w.RGBA_ETC2_EAC_Format],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.ETC1],engineFormat:[w.RGB_ETC1_Format],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[x.ETC1S,x.UASTC_4x4],transcoderFormat:[b.PVRTC1_4_RGB,b.PVRTC1_4_RGBA],engineFormat:[w.RGB_PVRTC_4BPPV1_Format,w.RGBA_PVRTC_4BPPV1_Format],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0}],E=e.sort(function(e,t){return e.priorityETC1S-t.priorityETC1S}),C=e.sort(function(e,t){return e.priorityUASTC-t.priorityUASTC});function B(e){return e<=2||0==(e&e-1)&&0!==e}},z(Id={},109,St),z(Id,97,St),z(Id,37,St),z(Id,43,St),z(Id,103,Ot),z(Id,83,Ot),z(Id,16,Ot),z(Id,22,Ot),z(Id,100,Rt),z(Id,76,Rt),z(Id,15,Rt),z(Id,9,Rt),Id),Ob=(z(t={},109,bt),z(t,97,xt),z(t,37,mt),z(t,43,mt),z(t,103,bt),z(t,83,xt),z(t,16,mt),z(t,22,mt),z(t,100,bt),z(t,76,xt),z(t,15,mt),z(t,9,mt),t),Nb=(z(ad={},43,Ln),z(ad,22,Ln),z(ad,15,Ln),ad);function Gb(){return(Gb=d(V().mark(function e(t){var n,i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.vkFormat,i=t.pixelWidth,r=t.pixelHeight,a=t.pixelDepth,void 0===Fb[n])throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");e.next=3;break;case 3:o=t.levels[0],t.supercompressionScheme!==wb?e.next=8:(s=o.levelData,e.next=16);break;case 8:if(t.supercompressionScheme===bb)return Sb=Sb||new Promise(function(){var t=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=new Db,e.next=3,n.init();case 3:t(n);case 4:case"end":return e.stop()}},e)}));return function(e){return t.apply(this,arguments)}}()),e.next=12,Sb;e.next=15;break;case 12:s=e.sent.decode(o.levelData,o.uncompressedByteLength),e.next=16;break;case 15:throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");case 16:return l=Ob[n]===bt?new Float32Array(s.buffer,s.byteOffset,s.byteLength/Float32Array.BYTES_PER_ELEMENT):Ob[n]===xt?new Uint16Array(s.buffer,s.byteOffset,s.byteLength/Uint16Array.BYTES_PER_ELEMENT):s,(l=0===a?new ya(l,i,r):new Data3DTexture(l,i,r,a)).type=Ob[n],l.format=Fb[n],l.encoding=Nb[n]||kn,l.needsUpdate=!0,e.abrupt("return",Promise.resolve(l));case 23:case"end":return e.stop()}},e)}))).apply(this,arguments)}Vu=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]),Qb=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);var Ub,zb,Hb,Qb,Vb="object"!==("undefined"==typeof WebAssembly?"undefined":v(WebAssembly))?{supported:!1}:(Zu="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",WebAssembly.validate(Vu)&&(Zu="B9h9z9tFBBBFiI9gBB9gLaaaaaFa9gEaaaB9gFaFaEMcBBFBFFGGGEILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBOn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBNI9z9iqlBVc+N9IcIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMk8lLbaE97F9+FaL978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAeDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAeDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAeDeBJAiCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPAPDQBFGENVcMILKOSQfbHeD8dBh+BsxoxoUwN0AeD8dFhxoUwkwk+gUa0sHnhTkAnsHnhNkAnsHn7CgFZHiCEWCxkUUBJDBEBAiCx+YUUBJDBBBHeAeDQBBBBBBBBBBBBBBBBAnhAk7CgFZHiCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAeDeBJAiCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBReCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBH8ZCFD9tA8ZAPD9OD9hD9RH8ZDQBTFtGmEYIPLdKeOnHpAIAQJDBIBHyCFD9tAyAPD9OD9hD9RHyAIASJDBIBH8cCFD9tA8cAPD9OD9hD9RH8cDQBTFtGmEYIPLdKeOnH8dDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAeD9uHeDyBjGBAEAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeApA8dDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNiV8ZcpMyS8cQ8df8eb8fHdAyA8cDQNiV8ZcpMyS8cQ8df8eb8fH8ZDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJHIAeAdA8ZDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHeDyBjGBAIAGJHIAeAPAPDQILKOILKOILKOILKOD9uHeDyBjGBAIAGJHIAeAPAPDQNVcMNVcMNVcMNVcMD9uHeDyBjGBAIAGJHIAeAPAPDQSQfbSQfbSQfbSQfbD9uHeDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/dLEK97FaF97GXGXAGCI9HQBAF9FQFCBRGEXABABDBBBHECiD+rFCiD+sFD/6FHIAECND+rFCiD+sFD/6FAID/gFAECTD+rFCiD+sFD/6FHLD/gFD/kFD/lFHKCBDtD+2FHOAICUUUU94DtHND9OD9RD/kFHI9DBB/+hDYAIAID/mFAKAKD/mFALAOALAND9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHLD/mF9DBBX9LDYHOD/kFCgFDtD9OAECUUU94DtD9OD9QAIALD/mFAOD/kFCND+rFCU/+EDtD9OD9QAKALD/mFAOD/kFCTD+rFCUU/8ODtD9OD9QDMBBABCTJRBAGCIJHGAF9JQBSGMMAF9FQBCBRGEXABCTJHVAVDBBBHECBDtHOCUU98D8cFCUU98D8cEHND9OABDBBBHKAEDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAKAEDQBFGENVcMTtmYi8ZpyHECTD+sFD/6FHID/gFAECTD+rFCTD+sFD/6FHLD/gFD/kFD/lFHE9DB/+g6DYALAEAOD+2FHOALCUUUU94DtHcD9OD9RD/kFHLALD/mFAEAED/mFAIAOAIAcD9OD9RD/kFHEAED/mFD/kFD/kFD/jFD/nFHID/mF9DBBX9LDYHOD/kFCTD+rFALAID/mFAOD/kFCggEDtD9OD9QHLAEAID/mFAOD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHEDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAKAND9OALAEDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM/hEIGaF97FaL978jUUUUBCTlREGXAF9FQBCBRIEXAEABDBBBHLABCTJHKDBBBHODQILKOSQfbPden8c8d8e8fHNCTD+sFHVCID+rFDMIBAB9DBBU8/DY9D/zI818/DYAVCEDtD9QD/6FD/nFHVALAODQBFGENVcMTtmYi8ZpyHLCTD+rFCTD+sFD/6FD/mFHOAOD/mFAVALCTD+sFD/6FD/mFHcAcD/mFAVANCTD+rFCTD+sFD/6FD/mFHNAND/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHVD/mF9DBBX9LDYHLD/kFCggEDtHMD9OAcAVD/mFALD/kFCTD+rFD9QHcANAVD/mFALD/kFCTD+rFAOAVD/mFALD/kFAMD9OD9QHVDQBFTtGEmYILPdKOenHLD8dBAEDBIBDyB+t+J83EBABCNJALD8dFAEDBIBDyF+t+J83EBAKAcAVDQNVi8ZcMpySQ8c8dfb8e8fHVD8dBAEDBIBDyG+t+J83EBABCiJAVD8dFAEDBIBDyE+t+J83EBABCAJRBAICIJHIAF9JQBMMM9jFF97GXAGCGrAF9sHG9FQBCBRFEXABABDBBBHECND+rFCND+sFD/6FAECiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBABCTJRBAFCIJHFAG9JQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",console.log("Warning: meshopt_decoder is using experimental SIMD support")),Vu=WebAssembly.instantiate(function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n){var i=e.charCodeAt(n);t[n]=96<i?i-71:64<i?i-65:47<i?i+4:46<i?63:62}for(var r=0,n=0;n<e.length;++n)t[r++]=t[n]<60?Qb[t[n]]:64*(t[n]-60)+t[++n];return t.buffer.slice(0,r)}(Zu),{}).then(function(e){(Ub=e.instance).exports.__wasm_call_ctors()}),zb={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},Hb={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},{ready:Vu,supported:!0,decodeVertexBuffer:function(e,t,n,i,r){jb(Ub.exports.meshopt_decodeVertexBuffer,e,t,n,i,Ub.exports[zb[r]])},decodeIndexBuffer:function(e,t,n,i){jb(Ub.exports.meshopt_decodeIndexBuffer,e,t,n,i)},decodeIndexSequence:function(e,t,n,i){jb(Ub.exports.meshopt_decodeIndexSequence,e,t,n,i)},decodeGltfBuffer:function(e,t,n,i,r,a){jb(Ub.exports[Hb[r]],e,t,n,i,Ub.exports[zb[a]])}});function jb(e,t,n,i,r,a){var o=Ub.exports.sbrk,s=n+3&-4,l=o(s*i),u=o(r.length),c=new Uint8Array(Ub.exports.memory.buffer),e=(c.set(r,u),e(l,n,i,u,r.length));if(0==e&&a&&a(l,s,i),t.set(c.subarray(l,l+n*i)),o(l-o(0)),0!=e)throw new Error("Malformed buffer data: "+e)}function Wb(e){Lc.call(this,e)}Wb.prototype=Object.assign(Object.create(Lc.prototype),{constructor:Wb,parse:function(e,t){var n={mipmaps:[],width:0,height:0,format:null,mipmapCount:1};function i(e){return e.charCodeAt(0)+(e.charCodeAt(1)<<8)+(e.charCodeAt(2)<<16)+(e.charCodeAt(3)<<24)}var r=i("DXT1"),a=i("DXT3"),o=i("DXT5"),s=i("ETC1"),l=new Int32Array(e,0,31);if(542327876!==l[0])console.error("THREE.DDSLoader.parse: Invalid magic number in DDS header.");else if(4&!l[20])console.error("THREE.DDSLoader.parse: Unsupported format, must contain a FourCC code.");else{var u,c=l[21],h=!1;switch(c){case r:u=8,n.format=zt;break;case a:u=16,n.format=Qt;break;case o:u=16,n.format=Vt;break;case s:u=8,n.format=Xt;break;default:if(!(32===l[22]&&16711680&l[23]&&65280&l[24]&&255&l[25]&&4278190080&l[26]))return console.error("THREE.DDSLoader.parse: Unsupported FourCC code ",String.fromCharCode(255&c,c>>8&255,c>>16&255,c>>24&255)),n;h=!0,u=64,n.format=St}n.mipmapCount=1,131072&l[2]&&!1!==t&&(n.mipmapCount=Math.max(1,l[7]));r=l[28];if(n.isCubemap=!!(512&r),!n.isCubemap||1024&r&&2048&r&&4096&r&&8192&r&&16384&r&&32768&r){n.width=l[4],n.height=l[3];for(var d=l[1]+4,p=n.isCubemap?6:1,f=0;f<p;f++)for(var m=n.width,v=n.height,g=0;g<n.mipmapCount;g++){h?A=(y=function(e,t,n,i){for(var r=n*i*4,a=new Uint8Array(e,t,r),o=new Uint8Array(r),s=0,l=0,u=0;u<i;u++)for(var c=0;c<n;c++){var h=a[l],d=a[++l],p=a[++l],f=a[++l];l++,o[s]=p,o[++s]=d,o[++s]=h,o[++s]=f,s++}return o}(e,d,m,v)).length:(A=Math.max(4,m)/4*Math.max(4,v)/4*u,y=new Uint8Array(e,d,A));var A,y,w={data:y,width:m,height:v};n.mipmaps.push(w),d+=A,m=Math.max(m>>1,1),v=Math.max(v>>1,1)}}else console.error("THREE.DDSLoader.parse: Incomplete cubemap faces")}return n}});var Jb=function(){y(n,pa);var t=C(n);function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return te(this,n),t.call(this,Object.assign({},{uniforms:{map:{type:"t",value:e.map},opacity:{type:"f",value:null==e.opacity?1:e.opacity}},vertexShader:nm["basicTextured.vs"],fragmentShader:nm["basicTextured.fs"]},e))}return A(n,[{key:"copy",value:function(e){return k(_(n.prototype),"copy",this).call(this,e),this.map=e.map,this}},{key:"opacity",get:function(){return this.uniforms.opacity.value},set:function(e){this.uniforms&&(this.uniforms.opacity.value=e)}},{key:"map",get:function(){return this.uniforms.map.value},set:function(e){this.uniforms.map.value=e}}]),n}(),qb={},Xb=L.prototype.setValues,Yb=(L.prototype.setValues=function(e){return Xb.call(this,e)},function(){y(r,Ic);var i=C(r);function r(e,t,n){return te(this,r),(e=i.call(this,e)).dracoLoader=new Ab,e.ktx2Loader=new Rb,e.meshoptDecoder=Vb,e.ddsLoader=new Wb,e.dracoLoader.setDecoderPath(n+"three.js/loaders/draco/"),e.ktx2Loader.setTranscoderPath(n+"three.js/loaders/basic/").detectSupport(t),e.pluginCallbacks=[],e.register(function(e){return new nx(e)}),e.register(function(e){return new ux(e)}),e.register(function(e){return new cx(e)}),e.register(function(e){return new rx(e)}),e.register(function(e){return new ax(e)}),e.register(function(e){return new ox(e)}),e.register(function(e){return new sx(e)}),e.register(function(e){return new tx(e)}),e.register(function(e){return new lx(e)}),e.register(function(e){return new ix(e)}),e.register(function(e){return new $b(e)}),e.register(function(e){return new hx(e)}),e.register(function(e){return new dx(e)}),e}return A(r,[{key:"load",value:function(t,n,e,i){function r(e){i?i(e):console.error(e),a.manager.itemError(t),a.manager.itemEnd(t)}var a=this,o=""!==this.resourcePath?this.resourcePath:""!==this.path?this.path:Eh.extractUrlBase(t),s=(this.manager.itemStart(t),new Pc(this.manager));s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(t,function(e){try{a.parse(e,o,function(e){n(e),a.manager.itemEnd(t)},r)}catch(e){r(e)}},e,r)}},{key:"setDRACOLoader",value:function(e){return this.dracoLoader=e,this}},{key:"setDDSLoader",value:function(){throw new Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}},{key:"setKTX2Loader",value:function(e){return this.ktx2Loader=e,this}},{key:"setMeshoptDecoder",value:function(e){return this.meshoptDecoder=e,this}},{key:"register",value:function(e){return-1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}},{key:"unregister",value:function(e){return-1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}},{key:"parse",value:function(e,t,n,i){var r,a={},o={};if("string"==typeof e)r=JSON.parse(e);else if(e instanceof ArrayBuffer)if(Eh.decodeText(new Uint8Array(e,0,4))===px){try{a[Zb.KHR_BINARY_GLTF]=new vx(e)}catch(e){return void(i&&i(e))}r=JSON.parse(a[Zb.KHR_BINARY_GLTF].content)}else r=JSON.parse(Eh.decodeText(new Uint8Array(e)));else r=e;if(void 0===r.asset||r.asset.version[0]<2)i&&i(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));else{var s=new Nx(r,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});s.fileLoader.setRequestHeader(this.requestHeader);for(var l=0;l<this.pluginCallbacks.length;l++){var u=this.pluginCallbacks[l](s);a[(o[u.name]=u).name]=!0}if(r.extensionsUsed)for(var c=0;c<r.extensionsUsed.length;++c){var h=r.extensionsUsed[c],d=r.extensionsRequired||[];switch(h){case Zb.KHR_MATERIALS_UNLIT:a[h]=new ex;break;case Zb.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:a[h]=new wx;break;case Zb.KHR_DRACO_MESH_COMPRESSION:a[h]=new gx(r,this.dracoLoader);break;case Zb.KHR_TEXTURE_TRANSFORM:a[h]=new Ax;break;case Zb.KHR_MESH_QUANTIZATION:a[h]=new bx;break;default:0<=d.indexOf(h)&&void 0===o[h]&&(qb[h]||(console.warn('GLTFLoader: Unknown extension "'+h+'".',"使用默认的KHR_materials_unlit材质"),qb[h]=1),r.extensionsRequired="KHR_materials_unlit",r.materials=[{extensions:{KHR_materials_unlit:{}},pbrMetallicRoughness:{baseColorFactor:[1,1,1,1],baseColorTexture:{index:0,texCoord:0},metallicFactor:0,roughnessFactor:.5}}],a[r.extensionsRequired]=new ex)}}s.setExtensions(a),s.setPlugins(o),s.parse(n,i)}}},{key:"parseAsync",value:function(n,i){var r=this;return new Promise(function(e,t){r.parse(n,i,e,t)})}}]),r}());function Kb(){var n={};return{get:function(e){return n[e]},add:function(e,t){n[e]=t},remove:function(e){delete n[e]},removeAll:function(){n={}}}}var Zb={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_IOR:"KHR_materials_ior",KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:"KHR_materials_pbrSpecularGlossiness",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_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_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},$b=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}return A(t,[{key:"_markDefs",value:function(){for(var e=this.parser,t=this.parser.json.nodes||[],n=0,i=t.length;n<i;n++){var r=t[n];r.extensions&&r.extensions[this.name]&&void 0!==r.extensions[this.name].light&&e._addNodeRef(this.cache,r.extensions[this.name].light)}}},{key:"_loadLight",value:function(e){var t=this.parser,n="light:"+e,i=t.cache.get(n);if(!i){var r,a=t.json,o=((a.extensions&&a.extensions[this.name]||{}).lights||[])[e],s=new Me(16777215),l=(void 0!==o.color&&s.fromArray(o.color),void 0!==o.range?o.range:0);switch(o.type){case"directional":(r=new gh(s)).target.position.set(0,0,-1),r.add(r.target);break;case"point":(r=new fh(s)).distance=l;break;case"spot":(r=new dh(s)).distance=l,o.spot=o.spot||{},o.spot.innerConeAngle=void 0!==o.spot.innerConeAngle?o.spot.innerConeAngle:0,o.spot.outerConeAngle=void 0!==o.spot.outerConeAngle?o.spot.outerConeAngle:Math.PI/4,r.angle=o.spot.outerConeAngle,r.penumbra=1-o.spot.innerConeAngle/o.spot.outerConeAngle,r.target.position.set(0,0,-1),r.add(r.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+o.type)}r.position.set(0,0,0),r.decay=2,void 0!==o.intensity&&(r.intensity=o.intensity),r.name=t.createUniqueName(o.name||"light_"+e),i=Promise.resolve(r),t.cache.add(n,i)}return i}},{key:"createNodeAttachment",value:function(e){var t=this,n=this.parser,e=n.json.nodes[e],i=(e.extensions&&e.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return n._getNodeRef(t.cache,i,e)})}}]),t}(),ex=function(){function e(){te(this,e),this.name=Zb.KHR_MATERIALS_UNLIT}return A(e,[{key:"getMaterialType",value:function(){return L}},{key:"extendParams",value:function(e,t,n){var i,r=[],t=(e.color=new Me(1,1,1),e.opacity=1,t.pbrMetallicRoughness);return t&&(Array.isArray(t.baseColorFactor)&&(i=t.baseColorFactor,e.color.fromArray(i),e.opacity=i[3]),void 0!==t.baseColorTexture)&&r.push(n.assignTexture(e,"map",t.baseColorTexture,Ln)),Promise.all(r)}}]),e}(),tx=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_EMISSIVE_STRENGTH}return A(t,[{key:"extendMaterialParams",value:function(e,t){var e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]&&void 0!==(e=e.extensions[this.name].emissiveStrength)&&(t.emissiveIntensity=e),Promise.resolve()}}]),t}(),nx=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_CLEARCOAT}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],void 0!==(e=e.extensions[this.name]).clearcoatFactor&&(t.clearcoat=e.clearcoatFactor),void 0!==e.clearcoatTexture&&n.push(i.assignTexture(t,"clearcoatMap",e.clearcoatTexture)),void 0!==e.clearcoatRoughnessFactor&&(t.clearcoatRoughness=e.clearcoatRoughnessFactor),void 0!==e.clearcoatRoughnessTexture&&n.push(i.assignTexture(t,"clearcoatRoughnessMap",e.clearcoatRoughnessTexture)),void 0!==e.clearcoatNormalTexture&&(n.push(i.assignTexture(t,"clearcoatNormalMap",e.clearcoatNormalTexture)),void 0!==e.clearcoatNormalTexture.scale)&&(i=e.clearcoatNormalTexture.scale,t.clearcoatNormalScale=new Le(i,i)),Promise.all(n)):Promise.resolve()}}]),t}(),ix=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_IRIDESCENCE}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],void 0!==(e=e.extensions[this.name]).iridescenceFactor&&(t.iridescence=e.iridescenceFactor),void 0!==e.iridescenceTexture&&n.push(i.assignTexture(t,"iridescenceMap",e.iridescenceTexture)),void 0!==e.iridescenceIor&&(t.iridescenceIOR=e.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==e.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=e.iridescenceThicknessMinimum),void 0!==e.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=e.iridescenceThicknessMaximum),void 0!==e.iridescenceThicknessTexture&&n.push(i.assignTexture(t,"iridescenceThicknessMap",e.iridescenceThicknessTexture)),Promise.all(n)):Promise.resolve()}}]),t}(),rx=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_SHEEN}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],t.sheenColor=new Me(0,0,0),t.sheenRoughness=0,t.sheen=1,void 0!==(e=e.extensions[this.name]).sheenColorFactor&&t.sheenColor.fromArray(e.sheenColorFactor),void 0!==e.sheenRoughnessFactor&&(t.sheenRoughness=e.sheenRoughnessFactor),void 0!==e.sheenColorTexture&&n.push(i.assignTexture(t,"sheenColorMap",e.sheenColorTexture,Ln)),void 0!==e.sheenRoughnessTexture&&n.push(i.assignTexture(t,"sheenRoughnessMap",e.sheenRoughnessTexture)),Promise.all(n)):Promise.resolve()}}]),t}(),ax=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_TRANSMISSION}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],void 0!==(e=e.extensions[this.name]).transmissionFactor&&(t.transmission=e.transmissionFactor),void 0!==e.transmissionTexture&&n.push(i.assignTexture(t,"transmissionMap",e.transmissionTexture)),Promise.all(n)):Promise.resolve()}}]),t}(),ox=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_VOLUME}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i=this.parser,e=i.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],e=e.extensions[this.name],t.thickness=void 0!==e.thicknessFactor?e.thicknessFactor:0,void 0!==e.thicknessTexture&&n.push(i.assignTexture(t,"thicknessMap",e.thicknessTexture)),t.attenuationDistance=e.attenuationDistance||1/0,i=e.attenuationColor||[1,1,1],t.attenuationColor=new Me(i[0],i[1],i[2]),Promise.all(n)):Promise.resolve()}}]),t}(),sx=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_IOR}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]&&(e=e.extensions[this.name],t.ior=void 0!==e.ior?e.ior:1.5),Promise.resolve()}}]),t}(),lx=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_MATERIALS_SPECULAR}return A(t,[{key:"getMaterialType",value:function(e){e=this.parser.json.materials[e];return e.extensions&&e.extensions[this.name]?rc:null}},{key:"extendMaterialParams",value:function(e,t){var n,i,r=this.parser,e=r.json.materials[e];return e.extensions&&e.extensions[this.name]?(n=[],e=e.extensions[this.name],t.specularIntensity=void 0!==e.specularFactor?e.specularFactor:1,void 0!==e.specularTexture&&n.push(r.assignTexture(t,"specularIntensityMap",e.specularTexture)),i=e.specularColorFactor||[1,1,1],t.specularColor=new Me(i[0],i[1],i[2]),void 0!==e.specularColorTexture&&n.push(r.assignTexture(t,"specularColorMap",e.specularColorTexture,Ln)),Promise.all(n)):Promise.resolve()}}]),t}(),ux=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.KHR_TEXTURE_BASISU}return A(t,[{key:"loadTexture",value:function(e){var t=this.parser,n=t.json,i=n.textures[e];if(i.extensions&&i.extensions[this.name]){var i=i.extensions[this.name],r=t.options.ktx2Loader;if(r)return t.loadTextureImage(e,i.source,r);if(n.extensionsRequired&&0<=n.extensionsRequired.indexOf(this.name))throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures")}return null}}]),t}(),cx=function(){function t(e){te(this,t),this.parser=e,this.name=Zb.EXT_TEXTURE_WEBP,this.isSupported=null}return A(t,[{key:"loadTexture",value:function(t){var n,i,r=this.name,a=this.parser,o=a.json,e=o.textures[t];return e.extensions&&e.extensions[r]?(n=e.extensions[r],e=o.images[n.source],i=a.textureLoader,e.uri&&null!==(e=a.options.manager.getHandler(e.uri))&&(i=e),this.detectSupport().then(function(e){if(e)return a.loadTextureImage(t,n.source,i);if(o.extensionsRequired&&0<=o.extensionsRequired.indexOf(r))throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return a.loadTexture(t)})):null}},{key:"detectSupport",value:function(){return this.isSupported||(this.isSupported=new Promise(function(e){var t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}}]),t}(),hx=function(){function t(e){te(this,t),this.name=Zb.EXT_MESHOPT_COMPRESSION,this.parser=e}return A(t,[{key:"loadBufferView",value:function(e){var t=this.parser.json,e=t.bufferViews[e];if(e.extensions&&e.extensions[this.name]){var o=e.extensions[this.name],e=this.parser.getDependency("buffer",o.buffer),s=this.parser.options.meshoptDecoder;if(s&&s.supported)return e.then(function(e){var t=o.byteOffset||0,n=o.byteLength||0,i=o.count,r=o.byteStride,a=new Uint8Array(e,t,n);return s.decodeGltfBufferAsync?s.decodeGltfBufferAsync(i,r,a,o.mode,o.filter).then(function(e){return e.buffer}):s.ready.then(function(){var e=new ArrayBuffer(i*r);return s.decodeGltfBuffer(new Uint8Array(e),i,r,a,o.mode,o.filter),e})});if(t.extensionsRequired&&0<=t.extensionsRequired.indexOf(this.name))throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files")}return null}}]),t}(),dx=function(){function t(e){te(this,t),this.name=Zb.EXT_MESH_GPU_INSTANCING,this.parser=e}return A(t,[{key:"createNodeMesh",value:function(e){var m=this,t=this.parser.json,n=t.nodes[e];if(!n.extensions||!n.extensions[this.name]||void 0===n.mesh)return null;var i,r=q(t.meshes[n.mesh].primitives);try{for(r.s();!(i=r.n()).done;){var a=i.value;if(a.mode!==Bx.TRIANGLES&&a.mode!==Bx.TRIANGLE_STRIP&&a.mode!==Bx.TRIANGLE_FAN&&void 0!==a.mode)return null}}catch(e){r.e(e)}finally{r.f()}var o,s=n.extensions[this.name].attributes,l=[],v={};for(o in s)!function(t){l.push(m.parser.getDependency("accessor",s[t]).then(function(e){return v[t]=e,v[t]}))}(o);return l.length<1?null:(l.push(this.parser.createNodeMesh(e)),Promise.all(l).then(function(e){var t,n=e.pop(),i=n.isGroup?n.children:[n],r=e[0].count,a=[],o=q(i);try{for(o.s();!(t=o.n()).done;){for(var s,l=t.value,u=new _e,c=new Re,h=new X,d=new Re(1,1,1),p=new ml(l.geometry,l.material,r),f=0;f<r;f++)v.TRANSLATION&&c.fromBufferAttribute(v.TRANSLATION,f),v.ROTATION&&h.fromBufferAttribute(v.ROTATION,f),v.SCALE&&d.fromBufferAttribute(v.SCALE,f),p.setMatrixAt(f,u.compose(c,h,d));for(s in v)"TRANSLATION"!==s&&"ROTATION"!==s&&"SCALE"!==s&&l.geometry.setAttribute(s,v[s]);K.prototype.copy.call(p,l),p.frustumCulled=!1,m.parser.assignFinalMaterial(p),a.push(p)}}catch(e){o.e(e)}finally{o.f()}return n.isGroup?(n.clear(),n.add.apply(n,a),n):a[0]}))}}]),t}(),px="glTF",fx=1313821514,mx=5130562,vx=A(function e(t){te(this,e),this.name=Zb.KHR_BINARY_GLTF,this.content=null,this.body=null;var n=new DataView(t,0,12);if(this.header={magic:Eh.decodeText(new Uint8Array(t.slice(0,4))),version:n.getUint32(4,!0),length:n.getUint32(8,!0)},this.header.magic!==px)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");for(var i=this.header.length-12,r=new DataView(t,12),a=0;a<i;){var o,s=r.getUint32(a,!0),l=(a+=4,r.getUint32(a,!0));a+=4,l===fx?(o=new Uint8Array(t,12+a,s),this.content=Eh.decodeText(o)):l===mx&&(this.body=t.slice(o=12+a,o+s)),a+=s}if(null===this.content)throw new Error("THREE.GLTFLoader: JSON content not found.")}),gx=function(){function n(e,t){if(te(this,n),!t)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=Zb.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}return A(n,[{key:"decodePrimitive",value:function(e,t){var n,i,r=this.json,a=this.dracoLoader,o=e.extensions[this.name].bufferView,s=e.extensions[this.name].attributes,l={},u={},c={};for(n in s){var h=Tx[n]||n.toLowerCase();l[h]=s[n]}for(i in e.attributes){var d,p,f=Tx[i]||i.toLowerCase();void 0!==s[i]&&(d=r.accessors[e.attributes[i]],p=_x[d.componentType],c[f]=p.name,u[f]=!0===d.normalized)}return t.getDependency("bufferView",o).then(function(e){return new Promise(function(i){a.decodeDracoFile(e,function(e){for(var t in e.attributes){var n=e.attributes[t],t=u[t];void 0!==t&&(n.normalized=t)}i(e)},l,c)})})}}]),n}(),Ax=function(){function e(){te(this,e),this.name=Zb.KHR_TEXTURE_TRANSFORM}return A(e,[{key:"extendTexture",value:function(e,t){return void 0!==t.texCoord&&console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.'),void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}}]),e}(),yx=function(){y(u,ic);var l=C(u);function u(e){te(this,u),(t=l.call(this)).isGLTFSpecularGlossinessMaterial=!0;var t,n=["#ifdef USE_SPECULARMAP","\tuniform sampler2D specularMap;","#endif"].join("\n"),i=["#ifdef USE_GLOSSINESSMAP","\tuniform sampler2D glossinessMap;","#endif"].join("\n"),r=["vec3 specularFactor = specular;","#ifdef USE_SPECULARMAP","\tvec4 texelSpecular = texture2D( specularMap, vUv );","\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture","\tspecularFactor *= texelSpecular.rgb;","#endif"].join("\n"),a=["float glossinessFactor = glossiness;","#ifdef USE_GLOSSINESSMAP","\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );","\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture","\tglossinessFactor *= texelGlossiness.a;","#endif"].join("\n"),o=["PhysicalMaterial material;","material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );","vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );","float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );","material.roughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.","material.roughness += geometryRoughness;","material.roughness = min( material.roughness, 1.0 );","material.specularColor = specularFactor;"].join("\n"),s={specular:{value:(new Me).setHex(16777215)},glossiness:{value:1},specularMap:{value:null},glossinessMap:{value:null}};return t._extraUniforms=s,t.onBeforeCompile=function(e){for(var t in s)e.uniforms[t]=s[t];e.fragmentShader=e.fragmentShader.replace("uniform float roughness;","uniform vec3 specular;").replace("uniform float metalness;","uniform float glossiness;").replace("#include <roughnessmap_pars_fragment>",n).replace("#include <metalnessmap_pars_fragment>",i).replace("#include <roughnessmap_fragment>",r).replace("#include <metalnessmap_fragment>",a).replace("#include <lights_physical_fragment>",o)},Object.defineProperties(G(t),{specular:{get:function(){return s.specular.value},set:function(e){s.specular.value=e}},specularMap:{get:function(){return s.specularMap.value},set:function(e){(s.specularMap.value=e)?this.defines.USE_SPECULARMAP="":delete this.defines.USE_SPECULARMAP}},glossiness:{get:function(){return s.glossiness.value},set:function(e){s.glossiness.value=e}},glossinessMap:{get:function(){return s.glossinessMap.value},set:function(e){(s.glossinessMap.value=e)?(this.defines.USE_GLOSSINESSMAP="",this.defines.USE_UV=""):(delete this.defines.USE_GLOSSINESSMAP,delete this.defines.USE_UV)}}}),delete t.metalness,delete t.roughness,delete t.metalnessMap,delete t.roughnessMap,t.setValues(e),t}return A(u,[{key:"copy",value:function(e){return k(_(u.prototype),"copy",this).call(this,e),this.specularMap=e.specularMap,this.specular.copy(e.specular),this.glossinessMap=e.glossinessMap,this.glossiness=e.glossiness,delete this.metalness,delete this.roughness,delete this.metalnessMap,delete this.roughnessMap,this}}]),u}(),wx=function(){function e(){te(this,e),this.name=Zb.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,this.specularGlossinessParams=["color","map","lightMap","lightMapIntensity","aoMap","aoMapIntensity","emissive","emissiveIntensity","emissiveMap","bumpMap","bumpScale","normalMap","normalMapType","displacementMap","displacementScale","displacementBias","specularMap","specular","glossinessMap","glossiness","alphaMap","envMap","envMapIntensity"]}return A(e,[{key:"getMaterialType",value:function(){return yx}},{key:"extendParams",value:function(e,t,n){var i,t=t.extensions[this.name],r=(e.color=new Me(1,1,1),e.opacity=1,[]);return Array.isArray(t.diffuseFactor)&&(i=t.diffuseFactor,e.color.fromArray(i),e.opacity=i[3]),void 0!==t.diffuseTexture&&r.push(n.assignTexture(e,"map",t.diffuseTexture,Ln)),e.emissive=new Me(0,0,0),e.glossiness=void 0!==t.glossinessFactor?t.glossinessFactor:1,e.specular=new Me(1,1,1),Array.isArray(t.specularFactor)&&e.specular.fromArray(t.specularFactor),void 0!==t.specularGlossinessTexture&&(i=t.specularGlossinessTexture,r.push(n.assignTexture(e,"glossinessMap",i)),r.push(n.assignTexture(e,"specularMap",i,Ln))),Promise.all(r)}},{key:"createMaterial",value:function(e){var t=new yx(e);return t.fog=!0,t.color=e.color,t.map=void 0===e.map?null:e.map,t.lightMap=null,t.lightMapIntensity=1,t.aoMap=void 0===e.aoMap?null:e.aoMap,t.aoMapIntensity=1,t.emissive=e.emissive,t.emissiveIntensity=void 0===e.emissiveIntensity?1:e.emissiveIntensity,t.emissiveMap=void 0===e.emissiveMap?null:e.emissiveMap,t.bumpMap=void 0===e.bumpMap?null:e.bumpMap,t.bumpScale=1,t.normalMap=void 0===e.normalMap?null:e.normalMap,t.normalMapType=Fn,e.normalScale&&(t.normalScale=e.normalScale),t.displacementMap=null,t.displacementScale=1,t.displacementBias=0,t.specularMap=void 0===e.specularMap?null:e.specularMap,t.specular=e.specular,t.glossinessMap=void 0===e.glossinessMap?null:e.glossinessMap,t.glossiness=e.glossiness,t.alphaMap=null,t.envMap=void 0===e.envMap?null:e.envMap,t.envMapIntensity=1,t}}]),e}(),bx=A(function e(){te(this,e),this.name=Zb.KHR_MESH_QUANTIZATION}),xx=function(){y(a,pc);var r=C(a);function a(e,t,n,i){return te(this,a),r.call(this,e,t,n,i)}return A(a,[{key:"copySampleValue_",value:function(e){for(var t=this.resultBuffer,n=this.sampleValues,i=this.valueSize,r=e*i*3+i,a=0;a!==i;a++)t[a]=n[r+a];return t}},{key:"interpolate_",value:function(e,t,n,i){for(var r=this.resultBuffer,a=this.sampleValues,o=this.valueSize,s=2*o,l=3*o,u=i-t,i=(n-t)/u,n=i*i,t=n*i,c=e*l,h=c-l,d=-2*t+3*n,p=t-n,f=1-d,m=p-n+i,v=0;v!==o;v++){var g=a[h+v+o],A=a[h+v+s]*u,y=a[c+v+o],w=a[c+v]*u;r[v]=f*g+m*A+d*y+p*w}return r}}]),a}(),Ex=new X,Cx=function(){y(r,xx);var e=C(r);function r(){return te(this,r),e.apply(this,arguments)}return A(r,[{key:"interpolate_",value:function(e,t,n,i){e=k(_(r.prototype),"interpolate_",this).call(this,e,t,n,i);return Ex.fromArray(e).normalize().toArray(e),e}}]),r}(),Bx={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},_x={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Mx={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},Tx={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv2",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},Sx={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},Ix={CUBICSPLINE:void 0,LINEAR:Sn,STEP:Tn},Dx="OPAQUE",Px="MASK",kx="BLEND";function Lx(e,t,n){for(var i in n.extensions)void 0===e[i]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[i]=n.extensions[i])}function Rx(e,t){void 0!==t.extras&&("object"===v(t.extras)?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function Fx(e){for(var t="",n=Object.keys(e).sort(),i=0,r=n.length;i<r;i++)t+=n[i]+":"+e[n[i]]+";";return t}function Ox(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 new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}var Nx=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};te(this,n),this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new Kb,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={},/^((?!chrome|android).)*safari/i.test(navigator.userAgent),-1<navigator.userAgent.indexOf("Firefox")&&navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1];this.textureLoader=new Nc(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new Pc(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}return A(n,[{key:"setExtensions",value:function(e){this.extensions=e}},{key:"setPlugins",value:function(e){this.plugins=e}},{key:"parse",value:function(n,e){var i=this,r=this.json,a=this.extensions;this.cache.removeAll(),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([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])}).then(function(e){var t={scene:e[0][r.scene||0],scenes:e[0],animations:e[1],cameras:e[2],asset:r.asset,parser:i,userData:{}};Lx(a,t,r),Rx(t,r),Promise.all(i._invokeAll(function(e){return e.afterRoot&&e.afterRoot(t)})).then(function(){n(t)})}).catch(e)}},{key:"_markDefs",value:function(){for(var e=this.json.nodes||[],t=this.json.skins||[],n=this.json.meshes||[],i=0,r=t.length;i<r;i++)for(var a=t[i].joints,o=0,s=a.length;o<s;o++)e[a[o]].isBone=!0;for(var l=0,u=e.length;l<u;l++){var c=e[l];void 0!==c.mesh&&(this._addNodeRef(this.meshCache,c.mesh),void 0!==c.skin)&&(n[c.mesh].isSkinnedMesh=!0),void 0!==c.camera&&this._addNodeRef(this.cameraCache,c.camera)}}},{key:"_addNodeRef",value:function(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}},{key:"_getNodeRef",value:function(e,t,n){var i,l=this;return e.refs[t]<=1?n:(i=n.clone(),function e(t,n){var i,r=l.associations.get(t),a=(null!=r&&l.associations.set(n,r),q(t.children.entries()));try{for(a.s();!(i=a.n()).done;){var o=N(i.value,2),s=o[0];e(o[1],n.children[s])}}catch(e){a.e(e)}finally{a.f()}}(n,i),i.name+="_instance_"+e.uses[t]++,i)}},{key:"_invokeOne",value:function(e){var t=Object.values(this.plugins);t.push(this);for(var n=0;n<t.length;n++){var i=e(t[n]);if(i)return i}return null}},{key:"_invokeAll",value:function(e){for(var t=Object.values(this.plugins),n=(t.unshift(this),[]),i=0;i<t.length;i++){var r=e(t[i]);r&&n.push(r)}return n}},{key:"getDependency",value:function(e,t){var n=e+":"+t,i=this.cache.get(n);if(!i){switch(e){case"scene":i=this.loadScene(t);break;case"node":i=this.loadNode(t);break;case"mesh":i=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":i=this.loadAccessor(t);break;case"bufferView":i=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":i=this.loadBuffer(t);break;case"material":i=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":i=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":i=this.loadSkin(t);break;case"animation":i=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":i=this.loadCamera(t);break;default:throw new Error("Unknown type: "+e)}this.cache.add(n,i)}return i}},{key:"getDependencies",value:function(n){var i,e,t=this.cache.get(n);return t||(e=(i=this).json[n+("mesh"===n?"es":"s")]||[],t=Promise.all(e.map(function(e,t){return i.getDependency(n,t)})),this.cache.add(n,t)),t}},{key:"loadBuffer",value:function(e){var n,i=this.json.buffers[e],r=this.fileLoader;if(i.type&&"arraybuffer"!==i.type)throw new Error("THREE.GLTFLoader: "+i.type+" buffer type is not supported.");return void 0===i.uri&&0===e?Promise.resolve(this.extensions[Zb.KHR_BINARY_GLTF].body):(n=this.options,new Promise(function(e,t){r.load(Eh.resolveURL(i.uri,n.path),e,void 0,function(){t(new Error('THREE.GLTFLoader: Failed to load buffer "'+i.uri+'".'))})}))}},{key:"loadBufferView",value:function(e){var i=this.json.bufferViews[e];return this.getDependency("buffer",i.buffer).then(function(e){var t=i.byteLength||0,n=i.byteOffset||0;return e.slice(n,n+t)})}},{key:"loadAccessor",value:function(e){var g=this,A=this.json,y=this.json.accessors[e];return void 0===y.bufferView&&void 0===y.sparse?Promise.resolve(null):(e=[],void 0!==y.bufferView?e.push(this.getDependency("bufferView",y.bufferView)):e.push(null),void 0!==y.sparse&&(e.push(this.getDependency("bufferView",y.sparse.indices.bufferView)),e.push(this.getDependency("bufferView",y.sparse.values.bufferView))),Promise.all(e).then(function(e){var t=e[0],n=Mx[y.type],i=_x[y.componentType],r=i.BYTES_PER_ELEMENT,a=y.byteOffset||0,o=void 0!==y.bufferView?A.bufferViews[y.bufferView].byteStride:void 0,s=!0===y.normalized,l=o&&o!==r*n?(u=Math.floor(a/o),c="InterleavedBuffer:"+y.bufferView+":"+y.componentType+":"+u+":"+y.count,(h=g.cache.get(c))||(h=new ks(new i(t,u*o,y.count*o/r),o/r),g.cache.add(c,h)),new Fs(h,n,a%o/r,s)):new Q(null===t?new i(y.count*n):new i(t,a,y.count*n),n,s);if(void 0!==y.sparse){var u=_x[y.sparse.indices.componentType],c=y.sparse.indices.byteOffset||0,h=y.sparse.values.byteOffset||0,d=new u(e[1],c,y.sparse.count*Mx.SCALAR),p=new i(e[2],h,y.sparse.count*n);null!==t&&(l=new Q(l.array.slice(),l.itemSize,l.normalized));for(var f=0,m=d.length;f<m;f++){var v=d[f];if(l.setX(v,p[f*n]),2<=n&&l.setY(v,p[f*n+1]),3<=n&&l.setZ(v,p[f*n+2]),4<=n&&l.setW(v,p[f*n+3]),5<=n)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return l}))}},{key:"loadTexture",value:function(e){var t=this.json,n=this.options,i=t.textures[e].source,t=t.images[i],r=this.textureLoader;return t.uri&&null!==(n=n.manager.getHandler(t.uri))&&(r=n),this.loadTextureImage(e,i,r)}},{key:"loadTextureImage",value:function(t,e,n){var i=this,r=this.json,a=r.textures[t],o=r.images[e],s=(o.uri||o.bufferView)+":"+a.sampler;return this.textureCache[s]||(e=this.loadImageSource(e,n).then(function(e){e.flipY=!1,e.name=a.name||o.name||"";(r.samplers||{})[a.sampler];return i.associations.set(e,{textures:t}),e}).catch(function(){return null}),this.textureCache[s]=e)}},{key:"loadImageSource",value:function(e,t){var i=this,n=this.json;this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(function(e){return e.clone()});var r=n.images[e],a=self.URL||self.webkitURL,o=r.uri||"",s=!1;if(void 0!==r.bufferView)o=i.getDependency("bufferView",r.bufferView).then(function(e){s=!0;e=new Blob([e],{type:r.mimeType});return o=a.createObjectURL(e)});else if(void 0===r.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");n=Promise.resolve(o).then(function(n){return new Promise(function(t,e){i.textureLoader.load(n,function(e){e.minFilter=THREE.LinearMipmapLinearFilter,ag.makeTexDontResize(e),t(e)})})}).then(function(e){var t;return!0===s&&a.revokeObjectURL(o),e.userData={},e.userData.mimeType=r.mimeType||(0<(t=r.uri||r.mimeType).search(/\.jpe?g($|\?)/i)||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":0<t.search(/\.webp($|\?)/i)||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",o),e});return this.sourceCache[e]=n}},{key:"assignTexture",value:function(i,r,a,o){var s=this;return this.getDependency("texture",a.index).then(function(e){var t,n;return void 0===a.texCoord||0==a.texCoord||"aoMap"===r&&1==a.texCoord||console.warn("THREE.GLTFLoader: Custom UV set "+a.texCoord+" for texture "+r+" not yet supported."),s.extensions[Zb.KHR_TEXTURE_TRANSFORM]&&(t=void 0!==a.extensions?a.extensions[Zb.KHR_TEXTURE_TRANSFORM]:void 0)&&(n=s.associations.get(e),e=s.extensions[Zb.KHR_TEXTURE_TRANSFORM].extendTexture(e,t),s.associations.set(e,n)),void 0!==o&&(e.encoding=o),i[r]=e})}},{key:"assignFinalMaterial",value:function(e){var t,n,i=e.geometry,r=e.material,a=void 0===i.attributes.tangent,o=void 0!==i.attributes.color,s=void 0===i.attributes.normal;e.isPoints?(t="PointsMaterial:"+r.uuid,(n=this.cache.get(t))||(n=new Ml,yr.prototype.copy.call(n,r),n.color.copy(r.color),n.map=r.map,n.sizeAttenuation=!1,this.cache.add(t,n)),r=n):e.isLine&&(t="LineBasicMaterial:"+r.uuid,(n=this.cache.get(t))||(n=new vl,yr.prototype.copy.call(n,r),n.color.copy(r.color),this.cache.add(t,n)),r=n),(a||o||s)&&(t="ClonedMaterial:"+r.uuid+":",r.isGLTFSpecularGlossinessMaterial&&(t+="specular-glossiness:"),a&&(t+="derivative-tangents:"),o&&(t+="vertex-colors:"),s&&(t+="flat-shading:"),(n=this.cache.get(t))||(n=r.clone(),o&&(n.vertexColors=!0),s&&(n.flatShading=!0),a&&(n.normalScale&&(n.normalScale.y*=-1),n.clearcoatNormalScale)&&(n.clearcoatNormalScale.y*=-1),this.cache.add(t,n),this.associations.set(n,this.associations.get(r))),r=n),r.aoMap&&void 0===i.attributes.uv2&&void 0!==i.attributes.uv&&i.setAttribute("uv2",i.attributes.uv),e.material=r}},{key:"getMaterialType",value:function(){return ic}},{key:"loadMaterial",value:function(t){var n,i=this,e=this.json,r=this.extensions,a=e.materials[t],o={},e=a.extensions||{},s=[],l=(e[Zb.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]?(l=r[Zb.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS],n=Jb,s.push(l.extendParams(o,a,i))):e[Zb.KHR_MATERIALS_UNLIT]?(l=r[Zb.KHR_MATERIALS_UNLIT],n=Jb,s.push(l.extendParams(o,a,i))):(e=a.pbrMetallicRoughness||{},o.color=new Me(1,1,1),o.opacity=1,Array.isArray(e.baseColorFactor)&&(l=e.baseColorFactor,o.color.fromArray(l),o.opacity=l[3]),void 0!==e.baseColorTexture&&s.push(i.assignTexture(o,"map",e.baseColorTexture,Ln)),o.metalness=void 0!==e.metallicFactor?e.metallicFactor:1,o.roughness=void 0!==e.roughnessFactor?e.roughnessFactor:1,void 0!==e.metallicRoughnessTexture&&(s.push(i.assignTexture(o,"metalnessMap",e.metallicRoughnessTexture)),s.push(i.assignTexture(o,"roughnessMap",e.metallicRoughnessTexture))),n=this._invokeOne(function(e){return Jb}),s.push(Promise.all(this._invokeAll(function(e){return e.extendMaterialParams&&e.extendMaterialParams(t,o)})))),!0===a.doubleSided&&(o.side=ve),a.alphaMode||Dx);return l===kx?(o.transparent=!0,o.depthWrite=!1):(o.transparent=!1,l===Px&&(o.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&n!==L&&(s.push(i.assignTexture(o,"normalMap",a.normalTexture)),o.normalScale=new Le(1,1),void 0!==a.normalTexture.scale)&&(e=a.normalTexture.scale,o.normalScale.set(e,e)),void 0!==a.occlusionTexture&&n!==L&&(s.push(i.assignTexture(o,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength)&&(o.aoMapIntensity=a.occlusionTexture.strength),void 0!==a.emissiveFactor&&n!==L&&(o.emissive=(new Me).fromArray(a.emissiveFactor)),void 0!==a.emissiveTexture&&n!==L&&s.push(i.assignTexture(o,"emissiveMap",a.emissiveTexture,Ln)),Promise.all(s).then(function(){var e=n===yx?r[Zb.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(o):new n(o);return a.name&&(e.name=a.name),Rx(e,a),i.associations.set(e,{materials:t}),a.extensions&&Lx(r,e,a),e})}},{key:"createUniqueName",value:function(e){for(var t=hd.sanitizeNodeName(e||""),n=t,i=1;this.nodeNamesUsed[n];++i)n=t+"_"+i;return this.nodeNamesUsed[n]=!0,n}},{key:"loadGeometries",value:function(e){var n=this,i=this.extensions,t=this.primitiveCache;for(var r=[],a=0,o=e.length;a<o;a++){var s=e[a],l=(u=void 0,u=(u=(l=s).extensions&&l.extensions[Zb.KHR_DRACO_MESH_COMPRESSION])?"draco:"+u.bufferView+":"+u.indices+":"+Fx(u.attributes):l.indices+":"+Fx(l.attributes)+":"+l.mode),u=t[l];u?r.push(u.promise):(u=void 0,u=s.extensions&&s.extensions[Zb.KHR_DRACO_MESH_COMPRESSION]?function(t){return i[Zb.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(t,n).then(function(e){return Gx(e,t,n)})}(s):Gx(new j,s,n),t[l]={primitive:s,promise:u},r.push(u))}return Promise.all(r)}},{key:"loadMesh",value:function(x){for(var E=this,e=this.json,C=this.extensions,B=e.meshes[x],_=B.primitives,t=[],n=0,i=_.length;n<i;n++){var r=void 0===_[n].material?(void 0===(r=this.cache).DefaultMaterial&&(r.DefaultMaterial=new ic({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:fe})),r.DefaultMaterial):this.getDependency("material",_[n].material);t.push(r)}return t.push(E.loadGeometries(_)),Promise.all(t).then(function(e){for(var t=e.slice(0,e.length-1),n=e[e.length-1],i=[],r=0,a=n.length;r<a;r++){var o=n[r],s=_[r],l=void 0,u=t[r];if(s.mode===Bx.TRIANGLES||s.mode===Bx.TRIANGLE_STRIP||s.mode===Bx.TRIANGLE_FAN||void 0===s.mode)!0!==(l=new(!0===B.isSkinnedMesh?ol:Z)(o,u)).isSkinnedMesh||l.geometry.attributes.skinWeight.normalized||l.normalizeSkinWeights(),s.mode===Bx.TRIANGLE_STRIP?l.geometry=Ux(l.geometry,1):s.mode===Bx.TRIANGLE_FAN&&(l.geometry=Ux(l.geometry,2));else if(s.mode===Bx.LINES)l=new Bl(o,u);else if(s.mode===Bx.LINE_STRIP)l=new xl(o,u);else if(s.mode===Bx.LINE_LOOP)l=new _l(o,u);else{if(s.mode!==Bx.POINTS)throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+s.mode);l=new Pl(o,u)}if(0<Object.keys(l.geometry.morphAttributes).length){v=m=f=p=d=h=c=void 0;var c=l,h=B;if(c.updateMorphTargets(),void 0!==h.weights)for(var d=0,p=h.weights.length;d<p;d++)c.morphTargetInfluences[d]=h.weights[d];if(h.extras&&Array.isArray(h.extras.targetNames)){var f=h.extras.targetNames;if(c.morphTargetInfluences.length===f.length){c.morphTargetDictionary={};for(var m=0,v=f.length;m<v;m++)c.morphTargetDictionary[f[m]]=m}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}l.name=E.createUniqueName(B.name||"mesh_"+x),Rx(l,B),s.extensions&&Lx(C,l,s),E.assignFinalMaterial(l),i.push(l)}for(var g=0,A=i.length;g<A;g++)E.associations.set(i[g],{meshes:x,primitives:g});if(1===i.length)return i[0];var y=new Cs;E.associations.set(y,{meshes:x});for(var w=0,b=i.length;w<b;w++)y.add(i[w]);return y})}},{key:"loadCamera",value:function(e){var t,e=this.json.cameras[e],n=e[e.type];if(n)return"perspective"===e.type?t=new ma(Be.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===e.type&&(t=new mh(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),e.name&&(t.name=this.createUniqueName(e.name)),Rx(t,e),Promise.resolve(t);console.warn("THREE.GLTFLoader: Missing camera parameters.")}},{key:"loadSkin",value:function(e){var e=this.json.skins[e],t={joints:e.joints};return void 0===e.inverseBindMatrices?Promise.resolve(t):this.getDependency("accessor",e.inverseBindMatrices).then(function(e){return t.inverseBindMatrices=e,t})}},{key:"loadAnimation",value:function(i){for(var r=this.json.animations[i],e=[],t=[],n=[],a=[],o=[],s=0,l=r.channels.length;s<l;s++){var u=r.channels[s],c=r.samplers[u.sampler],u=u.target,h=u.node,d=void 0!==r.parameters?r.parameters[c.input]:c.input,p=void 0!==r.parameters?r.parameters[c.output]:c.output;e.push(this.getDependency("node",h)),t.push(this.getDependency("accessor",d)),n.push(this.getDependency("accessor",p)),a.push(c),o.push(u)}return Promise.all([Promise.all(e),Promise.all(t),Promise.all(n),Promise.all(a),Promise.all(o)]).then(function(e){for(var g=e[0],A=e[1],y=e[2],w=e[3],b=e[4],x=[],t=0,n=g.length;t<n;t++)!function(e){var t=g[e],n=A[e],i=y[e],r=w[e],a=b[e];if(void 0===t)return;t.updateMatrix();var o=void 0;switch(Sx[a.path]){case Sx.weights:o=wc;break;case Sx.rotation:o=xc;break;default:o=Cc}var e=t.name||t.uuid,s=void 0!==r.interpolation?Ix[r.interpolation]:Sn,l=[],u=(Sx[a.path]===Sx.weights?t.traverse(function(e){e.morphTargetInfluences&&l.push(e.name||e.uuid)}):l.push(e),i.array);if(i.normalized){for(var c=Ox(u.constructor),h=new Float32Array(u.length),d=0,p=u.length;d<p;d++)h[d]=u[d]*c;u=h}for(var f=0,m=l.length;f<m;f++){var v=new o(l[f]+"."+Sx[a.path],n.array,u,s);"CUBICSPLINE"===r.interpolation&&(v.createInterpolant=function(e){return new(this instanceof xc?Cx:xx)(this.times,this.values,this.getValueSize()/3,e)},v.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0),x.push(v)}}(t);return new Bc(r.name||"animation_"+i,void 0,x)})}},{key:"createNodeMesh",value:function(e){var t=this.json,n=this,i=t.nodes[e];return void 0===i.mesh?null:n.getDependency("mesh",i.mesh).then(function(e){e=n._getNodeRef(n.meshCache,i.mesh,e);return void 0!==i.weights&&e.traverse(function(e){if(e.isMesh)for(var t=0,n=i.weights.length;t<n;t++)e.morphTargetInfluences[t]=i.weights[t]}),e})}},{key:"loadNode",value:function(a){var t,e=this.json,o=this.extensions,s=this,l=e.nodes[a],u=l.name?s.createUniqueName(l.name):"";return t=[],(e=s._invokeOne(function(e){return e.createNodeMesh&&e.createNodeMesh(a)}))&&t.push(e),void 0!==l.camera&&t.push(s.getDependency("camera",l.camera).then(function(e){return s._getNodeRef(s.cameraCache,l.camera,e)})),s._invokeAll(function(e){return e.createNodeAttachment&&e.createNodeAttachment(a)}).forEach(function(e){t.push(e)}),Promise.all(t).then(function(e){var t,n=!0===l.isBone?new sl:1<e.length?new Cs:1===e.length?e[0]:new K;if(n!==e[0])for(var i=0,r=e.length;i<r;i++)n.add(e[i]);return l.name&&(n.userData.name=l.name,n.name=u),Rx(n,l),l.extensions&&Lx(o,n,l),void 0!==l.matrix?((t=new _e).fromArray(l.matrix),n.applyMatrix4(t)):(void 0!==l.translation&&n.position.fromArray(l.translation),void 0!==l.rotation&&n.quaternion.fromArray(l.rotation),void 0!==l.scale&&n.scale.fromArray(l.scale)),s.associations.has(n)||s.associations.set(n,{}),s.associations.get(n).nodes=a,n})}},{key:"loadScene",value:function(e){for(var t=this.json,n=this.extensions,e=this.json.scenes[e],s=this,i=new Cs,r=(e.name&&(i.name=s.createUniqueName(e.name)),Rx(i,e),e.extensions&&Lx(n,i,e),e.nodes||[]),a=[],o=0,l=r.length;o<l;o++)a.push(function o(e,s,l,u){var c=l.nodes[e];return u.getDependency("node",e).then(function(e){var s;return void 0===c.skin?e:u.getDependency("skin",c.skin).then(function(e){for(var t=[],n=0,i=(s=e).joints.length;n<i;n++)t.push(u.getDependency("node",s.joints[n]));return Promise.all(t)}).then(function(o){return e.traverse(function(e){if(e.isMesh){for(var t=[],n=[],i=0,r=o.length;i<r;i++){var a=o[i];a?(t.push(a),a=new _e,void 0!==s.inverseBindMatrices&&a.fromArray(s.inverseBindMatrices.array,16*i),n.push(a)):console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',s.joints[i])}e.bind(new cl(t,n),e.matrixWorld)}}),e})}).then(function(e){s.add(e);var t=[];if(c.children)for(var n=c.children,i=0,r=n.length;i<r;i++){var a=n[i];t.push(o(a,e,l,u))}return Promise.all(t)})}(r[o],i,t,s));return Promise.all(a).then(function(){return s.associations=function(e){var t,n=new Map,i=q(s.associations);try{for(i.s();!(t=i.n()).done;){var r=N(t.value,2),a=r[0],o=r[1];(a instanceof yr||a instanceof Xn)&&n.set(a,o)}}catch(e){i.e(e)}finally{i.f()}return e.traverse(function(e){var t=s.associations.get(e);null!=t&&n.set(e,t)}),n}(i),i})}}]),n}();function Gx(v,g,A){var e,t=g.attributes,n=[];for(e in t){var i=Tx[e]||e.toLowerCase();i in v.attributes||n.push(function(e,t){return A.getDependency("accessor",e).then(function(e){v.setAttribute(t,e)})}(t[e],i))}void 0===g.indices||v.index||(r=A.getDependency("accessor",g.indices).then(function(e){v.setIndex(e)}),n.push(r)),Rx(v,g);var r=v,a=g,o=A,s=a.attributes,l=new Y;if(void 0!==s.POSITION){var s=o.json.accessors[s.POSITION],u=s.min,c=s.max;if(void 0===u||void 0===c)console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");else{l.set(new Re(u[0],u[1],u[2]),new Re(c[0],c[1],c[2])),s.normalized&&(u=Ox(_x[s.componentType]),l.min.multiplyScalar(u),l.max.multiplyScalar(u));var h=a.targets;if(void 0!==h){for(var d=new Re,p=new Re,f=0,m=h.length;f<m;f++){var y,w,b=h[f];void 0!==b.POSITION&&(w=(b=o.json.accessors[b.POSITION]).min,y=b.max,void 0!==w&&void 0!==y?(p.setX(Math.max(Math.abs(w[0]),Math.abs(y[0]))),p.setY(Math.max(Math.abs(w[1]),Math.abs(y[1]))),p.setZ(Math.max(Math.abs(w[2]),Math.abs(y[2]))),b.normalized&&(w=Ox(_x[b.componentType]),p.multiplyScalar(w)),d.max(p)):console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION."))}l.expandByVector(d)}r.boundingBox=l;c=new gi;l.getCenter(c.center),c.radius=l.min.distanceTo(l.max)/2,r.boundingSphere=c}}return Promise.all(n).then(function(){if(void 0===g.targets)return v;for(var i=v,e=g.targets,t=A,r=!1,a=!1,o=!1,n=0,s=e.length;n<s;n++){var l=e[n];if(void 0!==l.POSITION&&(r=!0),void 0!==l.NORMAL&&(a=!0),void 0!==l.COLOR_0&&(o=!0),r&&a&&o)break}if(!r&&!a&&!o)return Promise.resolve(i);for(var u=[],c=[],h=[],d=0,p=e.length;d<p;d++){var f,m=e[d];r&&(f=void 0!==m.POSITION?t.getDependency("accessor",m.POSITION):i.attributes.position,u.push(f)),a&&(f=void 0!==m.NORMAL?t.getDependency("accessor",m.NORMAL):i.attributes.normal,c.push(f)),o&&(m=void 0!==m.COLOR_0?t.getDependency("accessor",m.COLOR_0):i.attributes.color,h.push(m))}return Promise.all([Promise.all(u),Promise.all(c),Promise.all(h)]).then(function(e){var t=e[0],n=e[1],e=e[2];return r&&(i.morphAttributes.position=t),a&&(i.morphAttributes.normal=n),o&&(i.morphAttributes.color=e),i.morphTargetsRelative=!0,i})})}function Ux(e,t){var n=e.getIndex();if(null===n){var i=[],r=e.getAttribute("position");if(void 0===r)return console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(var a=0;a<r.count;a++)i.push(a);e.setIndex(i),n=e.getIndex()}var o=n.count-2,s=[];if(2===t)for(var l=1;l<=o;l++)s.push(n.getX(0)),s.push(n.getX(l)),s.push(n.getX(l+1));else for(var u=0;u<o;u++)u%2==0?(s.push(n.getX(u)),s.push(n.getX(u+1)),s.push(n.getX(u+2))):(s.push(n.getX(u+2)),s.push(n.getX(u+1)),s.push(n.getX(u)));s.length/3!=o&&console.error("THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");t=e.clone();return t.setIndex(s),t}var zx=V().mark(HC),Hx=V().mark(oD);function Qx(e,o,s,l){return new(s=s||Promise)(function(n,t){function i(e){try{a(l.next(e))}catch(e){t(e)}}function r(e){try{a(l.throw(e))}catch(e){t(e)}}function a(e){var t;e.done?n(e.value):((t=e.value)instanceof s?t:new s(function(e){e(t)})).then(i,r)}a((l=l.apply(e,o||[])).next())})}function Vx(e,t){if(!e)throw new Error(t||"loader assertion failed.")}var jx=Boolean("object"!==("undefined"==typeof process?"undefined":v(process))||"[object process]"!==String(process)||process.browser),Yd="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);Yd&&parseFloat(Yd[1]);function Wx(e,t){if(!e)throw new Error(t||"loaders.gl assertion failed.")}var ql={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document},Jx=ql.global||ql.self||ql.window||{},qx="object"!==("undefined"==typeof process?"undefined":v(process))||"[object process]"!==String(process)||process.browser,Xx="function"==typeof importScripts,Yx="undefined"!=typeof window&&void 0!==window.orientation,nd="undefined"!=typeof process&&process.version&&/v([0-9]*)/.exec(process.version);function l(e,t,n){t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}nd&&parseFloat(nd[1]);var Kx=function(){function i(e,t){var n=this;te(this,i),l(this,"name",void 0),l(this,"workerThread",void 0),l(this,"isRunning",void 0),l(this,"result",void 0),l(this,"_resolve",void 0),l(this,"_reject",void 0),this.name=e,this.workerThread=t,this.isRunning=!0,this._resolve=function(){},this._reject=function(){},this.result=new Promise(function(e,t){n._resolve=e,n._reject=t})}return A(i,[{key:"postMessage",value:function(e,t){this.workerThread.postMessage({source:"loaders.gl",type:e,payload:t})}},{key:"done",value:function(e){Wx(this.isRunning),this.isRunning=!1,this._resolve(e)}},{key:"error",value:function(e){Wx(this.isRunning),this.isRunning=!1,this._reject(e)}}]),i}(),Zx=new Map;function $x(e){Wx(e.source&&!e.url||!e.source&&e.url);var t,n=Zx.get(e.source||e.url);return n||(e.url&&(n=(t=e.url).startsWith("http")?eE("try {\n importScripts('".concat(t,"');\n} catch (error) {\n console.error(error);\n throw error;\n}")):t,Zx.set(e.url,n)),e.source&&(n=eE(e.source),Zx.set(e.source,n))),Wx(n),n}function eE(e){e=new Blob([e],{type:"application/javascript"});return URL.createObjectURL(e)}function tE(e){return e&&(e instanceof ArrayBuffer||"undefined"!=typeof MessagePort&&e instanceof MessagePort||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas)}function nE(){}var iE=function(){function i(e){te(this,i),l(this,"name",void 0),l(this,"source",void 0),l(this,"url",void 0),l(this,"terminated",!1),l(this,"worker",void 0),l(this,"onMessage",void 0),l(this,"onError",void 0),l(this,"_loadableURL","");var t=e.name,n=e.source,e=e.url;Wx(n||e),this.name=t,this.source=n,this.url=e,this.onMessage=nE,this.onError=function(e){return console.log(e)},this.worker=this._createBrowserWorker()}return A(i,[{key:"destroy",value:function(){this.onMessage=nE,this.onError=nE,this.worker.terminate(),this.terminated=!0}},{key:"isRunning",get:function(){return Boolean(this.onMessage)}},{key:"postMessage",value:function(e,t){t=t||function e(t,n,i){var r=!(1<arguments.length&&void 0!==n)||n,n=2<arguments.length?i:void 0,a=n||new Set;if(t)if(tE(t))a.add(t);else if(tE(t.buffer))a.add(t.buffer);else if(!ArrayBuffer.isView(t)&&r&&"object"===v(t))for(var o in t)e(t[o],r,a);return void 0===n?Array.from(a):[]}(e),this.worker.postMessage(e,t)}},{key:"_getErrorFromErrorEvent",value:function(e){var t="Failed to load ";return t+="worker ".concat(this.name," from ").concat(this.url,". "),e.message&&(t+="".concat(e.message," in ")),e.lineno&&(t+=":".concat(e.lineno,":").concat(e.colno)),new Error(t)}},{key:"_createBrowserWorker",value:function(){var t=this,e=(this._loadableURL=$x({source:this.source,url:this.url}),new Worker(this._loadableURL,{name:this.name}));return e.onmessage=function(e){e.data?t.onMessage(e.data):t.onError(new Error("No data received"))},e.onerror=function(e){t.onError(t._getErrorFromErrorEvent(e)),t.terminated=!0},e.onmessageerror=function(e){return console.error(e)},e}}],[{key:"isSupported",value:function(){return"undefined"!=typeof Worker}}]),i}(),rE=function(){function t(e){te(this,t),l(this,"name","unnamed"),l(this,"source",void 0),l(this,"url",void 0),l(this,"maxConcurrency",1),l(this,"maxMobileConcurrency",1),l(this,"onDebug",function(){}),l(this,"reuseWorkers",!0),l(this,"props",{}),l(this,"jobQueue",[]),l(this,"idleQueue",[]),l(this,"count",0),l(this,"isDestroyed",!1),this.source=e.source,this.url=e.url,this.setProps(e)}var e,n;return A(t,[{key:"destroy",value:function(){this.idleQueue.forEach(function(e){return e.destroy()}),this.isDestroyed=!0}},{key:"setProps",value:function(e){this.props=g(g({},this.props),e),void 0!==e.name&&(this.name=e.name),void 0!==e.maxConcurrency&&(this.maxConcurrency=e.maxConcurrency),void 0!==e.maxMobileConcurrency&&(this.maxMobileConcurrency=e.maxMobileConcurrency),void 0!==e.reuseWorkers&&(this.reuseWorkers=e.reuseWorkers),void 0!==e.onDebug&&(this.onDebug=e.onDebug)}},{key:"startJob",value:(n=d(V().mark(function e(t){var n,i,r,a=this,o=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=1<o.length&&void 0!==o[1]?o[1]:function(e,t,n){return e.done(n)},i=2<o.length&&void 0!==o[2]?o[2]:function(e,t){return e.error(t)},r=new Promise(function(e){return a.jobQueue.push({name:t,onMessage:n,onError:i,onStart:e}),a}),this._startQueuedJob(),e.next=6,r;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e,this)})),function(e){return n.apply(this,arguments)})},{key:"_startQueuedJob",value:(e=d(V().mark(function e(){var t,n,i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.jobQueue.length){e.next=2;break}return e.abrupt("return");case 2:if(t=this._getAvailableWorker()){e.next=5;break}return e.abrupt("return");case 5:if(n=this.jobQueue.shift())return this.onDebug({message:"Starting job",name:n.name,workerThread:t,backlog:this.jobQueue.length}),i=new Kx(n.name,t),t.onMessage=function(e){return n.onMessage(i,e.type,e.payload)},t.onError=function(e){return n.onError(i,e)},n.onStart(i),e.prev=12,e.next=15,i.result;e.next=18;break;case 15:return e.prev=15,this.returnWorkerToQueue(t),e.finish(15);case 18:case"end":return e.stop()}},e,this,[[12,,15,18]])})),function(){return e.apply(this,arguments)})},{key:"returnWorkerToQueue",value:function(e){this.isDestroyed||!this.reuseWorkers||this.count>this._getMaxConcurrency()?(e.destroy(),this.count--):this.idleQueue.push(e),this.isDestroyed||this._startQueuedJob()}},{key:"_getAvailableWorker",value:function(){var e;return 0<this.idleQueue.length?this.idleQueue.shift()||null:this.count<this._getMaxConcurrency()?(this.count++,e="".concat(this.name.toLowerCase()," (#").concat(this.count," of ").concat(this.maxConcurrency,")"),new iE({name:e,source:this.source,url:this.url})):null}},{key:"_getMaxConcurrency",value:function(){return Yx?this.maxMobileConcurrency:this.maxConcurrency}}]),t}(),aE={maxConcurrency:3,maxMobileConcurrency:1,onDebug:function(){},reuseWorkers:!0},oE=function(){function t(e){te(this,t),l(this,"props",void 0),l(this,"workerPools",new Map),this.props=g({},aE),this.setProps(e),this.workerPools=new Map}return A(t,[{key:"destroy",value:function(){var e,t=q(this.workerPools.values());try{for(t.s();!(e=t.n()).done;)e.value.destroy()}catch(e){t.e(e)}finally{t.f()}}},{key:"setProps",value:function(e){this.props=g(g({},this.props),e);var t,n=q(this.workerPools.values());try{for(n.s();!(t=n.n()).done;)t.value.setProps(this._getWorkerPoolProps())}catch(e){n.e(e)}finally{n.f()}}},{key:"getWorkerPool",value:function(e){var t=e.name,n=e.source,e=e.url,i=this.workerPools.get(t);return i||((i=new rE({name:t,source:n,url:e})).setProps(this._getWorkerPoolProps()),this.workerPools.set(t,i)),i}},{key:"_getWorkerPoolProps",value:function(){return{maxConcurrency:this.props.maxConcurrency,maxMobileConcurrency:this.props.maxMobileConcurrency,reuseWorkers:this.props.reuseWorkers,onDebug:this.props.onDebug}}}],[{key:"isSupported",value:function(){return iE.isSupported()}},{key:"getWorkerFarm",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};return(t._workerFarm=t._workerFarm||new t({})).setProps(e),t._workerFarm}}]),t}(),sE=(l(oE,"_workerFarm",void 0),"latest");var lE={},uE=Object.freeze(Object.assign(Object.create(null),lE,{default:lE})),cE="3.1.4",hE={};function dE(){return pE.apply(this,arguments)}function pE(){return(pE=d(V().mark(function e(t){var n,i,r=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=2<r.length&&void 0!==r[2]?r[2]:{},(n=1<r.length&&void 0!==r[1]?r[1]:null)&&(t=function(e,t,n){if(e.startsWith("http"))return e;var i=n.modules||{};if(i[e])return i[e];if(!qx)return"modules/".concat(t,"/dist/libs/").concat(e);if(n.CDN)return Wx(n.CDN.startsWith("http")),"".concat(n.CDN,"/").concat(t,"@").concat(cE,"/dist/libs/").concat(e);if(Xx)return"../src/libs/".concat(e);return"modules/".concat(t,"/src/libs/").concat(e)}(t,n,i)),hE[t]=hE[t]||function(){return fE.apply(this,arguments)}(t),e.next=6,hE[t];case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function fE(){return(fE=d(V().mark(function e(t){var n,i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.endsWith("wasm"))return e.next=3,fetch(t);e.next=7;break;case 3:return n=e.sent,e.next=6,n.arrayBuffer();case 6:return e.abrupt("return",e.sent);case 7:if(qx)e.next=20;else{if(e.prev=8,e.t0=uE&&lE.requireFromFile,e.t0)return e.next=13,lE.requireFromFile(t);e.next=14}break;case 13:e.t0=e.sent;case 14:return e.abrupt("return",e.t0);case 17:return e.prev=17,e.t1=e.catch(8),e.abrupt("return",null);case 20:if(Xx)return e.abrupt("return",importScripts(t));e.next=22;break;case 22:return e.next=24,fetch(t);case 24:return n=e.sent,e.next=27,n.text();case 27:return i=e.sent,e.abrupt("return",function(t,e){if(!qx)return lE.requireFromString&&lE.requireFromString(t,e);if(Xx)eval.call(Jx,t);else{var n=document.createElement("script");n.id=e;try{n.appendChild(document.createTextNode(t))}catch(e){n.text=t}document.body.appendChild(n)}return null}(i,t));case 29:case"end":return e.stop()}},e,null,[[8,17]])}))).apply(this,arguments)}function mE(){return(mE=d(V().mark(function e(t,n,i,r,a){var o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return s=t.id,l=function(e,t){var t=1<arguments.length&&void 0!==t?t:{},n=t[e.id]||{},i="".concat(e.id,"-worker.js");return(n=n.workerUrl)||"compression"!==e.id||(n=t.workerUrl),(n="test"===t._workerType?"modules/".concat(e.module,"/dist/").concat(i):n)||(t=(t="latest"===(t=e.version)?sE:t)?"@".concat(t):"",n="https://unpkg.com/@loaders.gl/".concat(e.module).concat(t,"/dist/").concat(i)),Wx(n),n}(t,i),o=oE.getWorkerFarm(i),o=o.getWorkerPool({name:s,url:l}),i=JSON.parse(JSON.stringify(i)),e.next=7,o.startJob("process-on-worker",vE.bind(null,a));case 7:return(s=e.sent).postMessage("process",{input:n,options:i}),e.next=11,s.result;case 11:return l=e.sent,e.next=14,l.result;case 14:return e.abrupt("return",e.sent);case 15:case"end":return e.stop()}},e)}))).apply(this,arguments)}function vE(e,t,n,i){return gE.apply(this,arguments)}function gE(){return(gE=d(V().mark(function e(t,n,i,r){var a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=i,e.next="done"===e.t0?3:"error"===e.t0?5:"process"===e.t0?7:20;break;case 3:return n.done(r),e.abrupt("break",21);case 5:return n.error(new Error(r.error)),e.abrupt("break",21);case 7:return a=r.id,o=r.input,s=r.options,e.prev=8,e.next=11,t(o,s);case 11:o=e.sent,n.postMessage("done",{id:a,result:o}),e.next=19;break;case 15:e.prev=15,e.t1=e.catch(8),s=e.t1 instanceof Error?e.t1.message:"unknown error",n.postMessage("error",{id:a,error:s});case 19:return e.abrupt("break",21);case 20:console.warn("parse-with-worker unknown message ".concat(i));case 21:case"end":return e.stop()}},e,null,[[8,15]])}))).apply(this,arguments)}function AE(e,t,n){if(e.byteLength<=t+n)return"";for(var i=new DataView(e),r="",a=0;a<n;a++)r+=String.fromCharCode(i.getUint8(t+a));return r}function yE(t){try{return JSON.parse(t)}catch(e){throw new Error('Failed to parse JSON from data starting with "'.concat(function(e,t){return t=1<arguments.length&&void 0!==t?t:5,"string"==typeof e?e.slice(0,t):ArrayBuffer.isView(e)?AE(e.buffer,e.byteOffset,t):e instanceof ArrayBuffer?AE(e,0,t):""}(t),'"'))}}function wE(e){return e&&"object"===v(e)&&e.isBuffer}function bE(e){if(wE(e))return wE(t=e)?new Uint8Array(t.buffer,t.byteOffset,t.length).slice().buffer:t;var t;if(e instanceof ArrayBuffer)return e;if(ArrayBuffer.isView(e))return 0===e.byteOffset&&e.byteLength===e.buffer.byteLength?e.buffer:e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);if("string"==typeof e)return t=e,(new TextEncoder).encode(t).buffer;if(e&&"object"===v(e)&&e._toArrayBuffer)return e._toArrayBuffer();throw new Error("toArrayBuffer")}function xE(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];var i,r=t.map(function(e){return e instanceof ArrayBuffer?new Uint8Array(e):e}),a=r.reduce(function(e,t){return e+t.byteLength},0),o=new Uint8Array(a),s=0,l=q(r);try{for(l.s();!(i=l.n()).done;){var u=i.value;o.set(u,s),s+=u.byteLength}}catch(e){l.e(e)}finally{l.f()}return o.buffer}function EE(e,t,n){n=void 0!==n?new Uint8Array(e).subarray(t,t+n):new Uint8Array(e).subarray(t);return new Uint8Array(n).buffer}function CE(e,t){return Vx(0<=e),Vx(0<t),e+(t-1)&~(t-1)}function BE(){return(BE=d(V().mark(function e(t){var n,i,r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=i=!(n=[]),e.prev=3,o=c(t);case 5:return e.next=7,o.next();case 7:if(!(i=!(s=e.sent).done)){e.next=13;break}s=s.value,n.push(s);case 10:i=!1,e.next=5;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(3),r=!0,a=e.t0;case 19:if(e.prev=19,e.prev=20,i&&null!=o.return)return e.next=24,o.return();e.next=24;break;case 24:if(e.prev=24,r)throw a;e.next=27;break;case 27:return e.finish(24);case 28:return e.finish(19);case 29:return e.abrupt("return",xE.apply(void 0,n));case 30:case"end":return e.stop()}},e,null,[[3,15,19,29],[20,,24,28]])}))).apply(this,arguments)}function _E(){var e;return"undefined"!=typeof window&&window.performance?window.performance.now():"undefined"!=typeof process&&process.hrtime?1e3*(e=process.hrtime())[0]+e[1]/1e6:Date.now()}var ME=function(){function n(e,t){te(this,n),l(this,"name",void 0),l(this,"type",void 0),l(this,"sampleSize",1),l(this,"time",void 0),l(this,"count",void 0),l(this,"samples",void 0),l(this,"lastTiming",void 0),l(this,"lastSampleTime",void 0),l(this,"lastSampleCount",void 0),l(this,"_count",0),l(this,"_time",0),l(this,"_samples",0),l(this,"_startTime",0),l(this,"_timerPending",!1),this.name=e,this.type=t,this.reset()}return A(n,[{key:"setSampleSize",value:function(e){return this.sampleSize=e,this}},{key:"incrementCount",value:function(){return this.addCount(1),this}},{key:"decrementCount",value:function(){return this.subtractCount(1),this}},{key:"addCount",value:function(e){return this._count+=e,this._samples++,this._checkSampling(),this}},{key:"subtractCount",value:function(e){return this._count-=e,this._samples++,this._checkSampling(),this}},{key:"addTime",value:function(e){return this._time+=e,this.lastTiming=e,this._samples++,this._checkSampling(),this}},{key:"timeStart",value:function(){return this._startTime=_E(),this._timerPending=!0,this}},{key:"timeEnd",value:function(){return this._timerPending&&(this.addTime(_E()-this._startTime),this._timerPending=!1,this._checkSampling()),this}},{key:"getSampleAverageCount",value:function(){return 0<this.sampleSize?this.lastSampleCount/this.sampleSize:0}},{key:"getSampleAverageTime",value:function(){return 0<this.sampleSize?this.lastSampleTime/this.sampleSize:0}},{key:"getSampleHz",value:function(){return 0<this.lastSampleTime?this.sampleSize/(this.lastSampleTime/1e3):0}},{key:"getAverageCount",value:function(){return 0<this.samples?this.count/this.samples:0}},{key:"getAverageTime",value:function(){return 0<this.samples?this.time/this.samples:0}},{key:"getHz",value:function(){return 0<this.time?this.samples/(this.time/1e3):0}},{key:"reset",value:function(){return this.time=0,this.count=0,this.samples=0,this.lastTiming=0,this.lastSampleTime=0,this.lastSampleCount=0,this._count=0,this._time=0,this._samples=0,this._startTime=0,this._timerPending=!1,this}},{key:"_checkSampling",value:function(){this._samples===this.sampleSize&&(this.lastSampleTime=this._time,this.lastSampleCount=this._count,this.count+=this._count,this.time+=this._time,this.samples+=this._samples,this._time=0,this._count=0,this._samples=0)}}]),n}(),TE=function(){function t(e){te(this,t),l(this,"id",void 0),l(this,"stats",{}),this.id=e.id,this.stats={},this._initializeStats(e.stats),Object.seal(this)}return A(t,[{key:"get",value:function(e){return this._getOrCreate({name:e,type:1<arguments.length&&void 0!==arguments[1]?arguments[1]:"count"})}},{key:"size",get:function(){return Object.keys(this.stats).length}},{key:"reset",value:function(){for(var e in this.stats)this.stats[e].reset();return this}},{key:"forEach",value:function(e){for(var t in this.stats)e(this.stats[t])}},{key:"getTable",value:function(){var t={};return this.forEach(function(e){t[e.name]={time:e.time||0,count:e.count||0,average:e.getAverageTime()||0,hz:e.getHz()||0}}),t}},{key:"_initializeStats",value:function(){var t=this;(0<arguments.length&&void 0!==arguments[0]?arguments[0]:[]).forEach(function(e){return t._getOrCreate(e)})}},{key:"_getOrCreate",value:function(e){var t,n;return e&&e.name?(t=e.name,n=e.type,this.stats[t]||(e instanceof ME?this.stats[t]=e:this.stats[t]=new ME(t,n)),this.stats[t]):null}}]),t}(),SE={id:"request-scheduler",throttleRequests:!0,maxRequests:6},IE=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};te(this,t),l(this,"props",void 0),l(this,"stats",void 0),l(this,"activeRequestCount",0),l(this,"requestQueue",[]),l(this,"requestMap",new Map),l(this,"deferredUpdate",null),this.props=g(g({},SE),e),this.stats=new TE({id:this.props.id}),this.stats.get("Queued Requests"),this.stats.get("Active Requests"),this.stats.get("Cancelled Requests"),this.stats.get("Queued Requests Ever"),this.stats.get("Active Requests Ever")}return A(t,[{key:"scheduleRequest",value:function(e){var t,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:function(){return 0};return this.props.throttleRequests?this.requestMap.has(e)?this.requestMap.get(e):(t={handle:e,priority:0,getPriority:n},n=new Promise(function(e){return t.resolve=e,t}),this.requestQueue.push(t),this.requestMap.set(e,n),this._issueNewRequests(),n):Promise.resolve({done:function(){}})}},{key:"_issueRequest",value:function(e){function t(){r||(r=!0,n.requestMap.delete(i),n.activeRequestCount--,n._issueNewRequests())}var n=this,i=e.handle,e=e.resolve,r=!1;return this.activeRequestCount++,e?e({done:t}):Promise.resolve({done:t})}},{key:"_issueNewRequests",value:function(){var e=this;this.deferredUpdate||(this.deferredUpdate=setTimeout(function(){return e._issueNewRequestsAsync()},0))}},{key:"_issueNewRequestsAsync",value:function(){this.deferredUpdate=null;var e=Math.max(this.props.maxRequests-this.activeRequestCount,0);if(0!==e){this._updateAllRequests();for(var t=0;t<e;++t){var n=this.requestQueue.shift();n&&this._issueRequest(n)}}}},{key:"_updateAllRequests",value:function(){for(var e=this.requestQueue,t=0;t<e.length;++t){var n=e[t];this._updateRequest(n)||(e.splice(t,1),this.requestMap.delete(n.handle),t--)}e.sort(function(e,t){return e.priority-t.priority})}},{key:"_updateRequest",value:function(e){return e.priority=e.getPriority(e.handle),!(e.priority<0&&(e.resolve(null),1))}}]),t}(),DE="",PE={};function kE(e){var t=e&&e.lastIndexOf("/");return 0<=t?e.substr(0,t):""}function LE(e){return"function"==typeof e}function RE(e){return OE(e)&&e.constructor==={}.constructor}function FE(e){return e&&"object"===v(e)&&e.isBuffer}var OE=function(e){return null!==e&&"object"===v(e)},NE=function(e){return e&&"function"==typeof e[Symbol.iterator]},GE=function(e){return e&&"function"==typeof e[Symbol.asyncIterator]},UE=function(e){return"undefined"!=typeof Response&&e instanceof Response||e&&e.arrayBuffer&&e.text&&e.json},zE=function(e){return"undefined"!=typeof Blob&&e instanceof Blob},HE=function(e){return"undefined"!=typeof ReadableStream&&e instanceof ReadableStream||OE(e)&&LE(e.tee)&&LE(e.cancel)&&LE(e.getReader)},QE=function(e){return OE(e)&&LE(e.read)&&LE(e.pipe)&&"boolean"==typeof e.readable},VE=function(e){return HE(e)||QE(e)},jE=/^data:([-\w.]+\/[-\w.+]+)(;|,)/,WE=/^([-\w.]+\/[-\w.+]+)/;function JE(e){e=jE.exec(e);return e?e[1]:""}var qE=/\?.*/;function XE(e){var t,n,i;return UE(e)?(t=YE(e.url||""),n=e.headers.get("content-type")||"",{url:t,type:(n=n,((i=WE.exec(n))?i[1]:n)||JE(t))}):zE(e)?{url:YE(e.name||""),type:e.type||""}:"string"==typeof e?{url:YE(e),type:JE(e)}:{url:"",type:""}}function YE(e){return e.replace(qE,"")}function KE(){return ZE.apply(this,arguments)}function ZE(){return(ZE=d(V().mark(function e(n){var i,r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(UE(n))return e.abrupt("return",n);e.next=2;break;case 2:return i={},0<=(a=UE(t=n)?t.headers["content-length"]||-1:zE(t)?t.size:"string"==typeof t?t.length:t instanceof ArrayBuffer||ArrayBuffer.isView(t)?t.byteLength:-1)&&(i["content-length"]=String(a)),a=XE(n),r=a.url,(a=a.type)&&(i["content-type"]=a),e.next=9,function(){return tC.apply(this,arguments)}(n);case 9:return(a=e.sent)&&(i["x-first-bytes"]=a),"string"==typeof n&&(n=(new TextEncoder).encode(n)),o=new Response(n,{headers:i}),Object.defineProperty(o,"url",{value:r}),e.abrupt("return",o);case 15:case"end":return e.stop()}var t},e)}))).apply(this,arguments)}function $E(){return($E=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.ok){e.next=5;break}return e.next=3,function(){return eC.apply(this,arguments)}(t);case 3:throw n=e.sent,new Error(n);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function eC(){return(eC=d(V().mark(function e(t){var n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n="Failed to fetch resource ".concat(t.url," (").concat(t.status,"): "),e.prev=1,i=t.headers.get("Content-Type"),r=t.statusText,i.includes("application/json"))return e.t0=r,e.t1=" ",e.next=9,t.text();e.next=11;break;case 9:e.t2=e.sent,r=e.t0+=e.t1.concat.call(e.t1,e.t2);case 11:n=60<(n+=r).length?"".concat(n.slice(60),"..."):n,e.next=17;break;case 15:e.prev=15,e.t3=e.catch(1);case 17:return e.abrupt("return",n);case 18:case"end":return e.stop()}},e,null,[[1,15]])}))).apply(this,arguments)}function tC(){return(tC=d(V().mark(function e(t){var n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=5,"string"==typeof t)return e.abrupt("return","data:,".concat(t.slice(0,n)));e.next=3;break;case 3:if(t instanceof Blob)return i=t.slice(0,5),e.next=7,new Promise(function(t){var e=new FileReader;e.onload=function(e){return t(null==e||null==(e=e.target)?void 0:e.result)},e.readAsDataURL(i)});e.next=8;break;case 7:return e.abrupt("return",e.sent);case 8:if(t instanceof ArrayBuffer)return r=t.slice(0,n),r=function(e){for(var t="",n=new Uint8Array(e),i=0;i<n.byteLength;i++)t+=String.fromCharCode(n[i]);return btoa(t)}(r),e.abrupt("return","data:base64,".concat(r));e.next=12;break;case 12:return e.abrupt("return",null);case 13:case"end":return e.stop()}},e)}))).apply(this,arguments)}function nC(e,t){return iC.apply(this,arguments)}function iC(){return(iC=d(V().mark(function e(t,n){var i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("string"==typeof t)return t=function(e){for(var t in PE){var n;e.startsWith(t)&&(n=PE[t],e=e.replace(t,n))}return e=e.startsWith("http://")||e.startsWith("https://")?e:"".concat(DE).concat(e)}(t),null!=(i=n)&&n.fetch&&"function"!=typeof(null==n?void 0:n.fetch)&&(i=n.fetch),e.next=6,fetch(t,i);e.next=7;break;case 6:return e.abrupt("return",e.sent);case 7:return e.next=9,KE(t);case 9:return e.abrupt("return",e.sent);case 10:case"end":return e.stop()}},e)}))).apply(this,arguments)}function rC(){var e,t;return!("object"===("undefined"==typeof process?"undefined":v(process))&&"[object process]"===String(process)&&!process.browser)||"undefined"!=typeof window&&"object"===v(window.process)&&"renderer"===window.process.type||!("undefined"==typeof process||"object"!==v(process.versions)||!Boolean(process.versions.electron))||(t="object"===("undefined"==typeof navigator?"undefined":v(navigator))&&"string"==typeof navigator.userAgent&&navigator.userAgent,!!((e=e||t)&&0<=e.indexOf("Electron")))}var od={self:"undefined"!=typeof self&&self,window:"undefined"!=typeof window&&window,global:"undefined"!=typeof global&&global,document:"undefined"!=typeof document&&document,process:"object"===("undefined"==typeof process?"undefined":v(process))&&process},aC=od.window||od.self||od.global,oC=od.process||{},sC="undefined"!=typeof __VERSION__?__VERSION__:"untranspiled source";rC();var lC=function(){function i(e){te(this,i);var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:"sessionStorage";l(this,"storage",void 0),l(this,"id",void 0),l(this,"config",{}),this.storage=function(e){try{var t=window[e],n="__storage_test__";return t.setItem(n,n),t.removeItem(n),t}catch(e){return null}}(n),this.id=e,this.config={},Object.assign(this.config,t),this._loadConfiguration()}return A(i,[{key:"getConfiguration",value:function(){return this.config}},{key:"setConfiguration",value:function(e){return this.config={},this.updateConfiguration(e)}},{key:"updateConfiguration",value:function(e){return Object.assign(this.config,e),this.storage&&(e=JSON.stringify(this.config),this.storage.setItem(this.id,e)),this}},{key:"_loadConfiguration",value:function(){var e,t={};return this.storage&&(t=(e=this.storage.getItem(this.id))?JSON.parse(e):{}),Object.assign(this.config,t),this}}]),i}();function uC(e,t,n,i){var i=3<arguments.length&&void 0!==i?i:600,r=e.src.replace(/\(/g,"%28").replace(/\)/g,"%29"),i=(e.width>i&&(n=Math.min(n,i/e.width)),e.width*n),e=e.height*n,n=["font-size:1px;","padding:".concat(Math.floor(e/2),"px ").concat(Math.floor(i/2),"px;"),"line-height:".concat(e,"px;"),"background:url(".concat(r,");"),"background-size:".concat(i,"px ").concat(e,"px;"),"color:transparent;"].join("");return["".concat(t," %c+"),n]}function cC(e,t){var n,i=1<arguments.length&&void 0!==t?t:["constructor"],t=Object.getPrototypeOf(e),r=q(Object.getOwnPropertyNames(t));try{for(r.s();!(n=r.n()).done;)!function(){var t=n.value;"function"!=typeof e[t]||i.find(function(e){return t===e})||(e[t]=e[t].bind(e))}()}catch(e){r.e(e)}finally{r.f()}}function hC(e,t){if(!e)throw new Error(t||"Assertion failed")}function dC(){var e,t;return"performance"in aC?null==aC||null==(t=aC.performance)||null==(e=t.now)?void 0:e.call(t):"hrtime"in oC?1e3*(t=null==oC||null==(e=oC.hrtime)?void 0:e.call(oC))[0]+t[1]/1e6:Date.now()}(Xh=CD=CD||{})[Xh.BLACK=30]="BLACK",Xh[Xh.RED=31]="RED",Xh[Xh.GREEN=32]="GREEN",Xh[Xh.YELLOW=33]="YELLOW",Xh[Xh.BLUE=34]="BLUE",Xh[Xh.MAGENTA=35]="MAGENTA",Xh[Xh.CYAN=36]="CYAN",Xh[Xh.WHITE=37]="WHITE",Xh[Xh.BRIGHT_BLACK=90]="BRIGHT_BLACK",Xh[Xh.BRIGHT_RED=91]="BRIGHT_RED",Xh[Xh.BRIGHT_GREEN=92]="BRIGHT_GREEN",Xh[Xh.BRIGHT_YELLOW=93]="BRIGHT_YELLOW",Xh[Xh.BRIGHT_BLUE=94]="BRIGHT_BLUE",Xh[Xh.BRIGHT_MAGENTA=95]="BRIGHT_MAGENTA",Xh[Xh.BRIGHT_CYAN=96]="BRIGHT_CYAN",Xh[Xh.BRIGHT_WHITE=97]="BRIGHT_WHITE";var pC={debug:console.debug||console.log,log:console.log,info:console.info,warn:console.warn,error:console.error},fC={enabled:!0,level:0};function mC(){}var vC={},gC={once:!0},Vd=function(){function t(){te(this,t);var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{id:""}).id;l(this,"id",void 0),l(this,"VERSION",sC),l(this,"_startTs",dC()),l(this,"_deltaTs",dC()),l(this,"_storage",void 0),l(this,"userData",{}),l(this,"LOG_THROTTLE_TIMEOUT",0),this.id=e,this._storage=new lC("__probe-".concat(this.id,"__"),fC),this.userData={},this.timeStamp("".concat(this.id," started")),cC(this),Object.seal(this)}return A(t,[{key:"level",get:function(){return this.getLevel()},set:function(e){this.setLevel(e)}},{key:"isEnabled",value:function(){return this._storage.config.enabled}},{key:"getLevel",value:function(){return this._storage.config.level}},{key:"getTotal",value:function(){return Number((dC()-this._startTs).toPrecision(10))}},{key:"getDelta",value:function(){return Number((dC()-this._deltaTs).toPrecision(10))}},{key:"priority",get:function(){return this.level},set:function(e){this.level=e}},{key:"getPriority",value:function(){return this.level}},{key:"enable",value:function(){return this._storage.updateConfiguration({enabled:!(0<arguments.length&&void 0!==arguments[0])||arguments[0]}),this}},{key:"setLevel",value:function(e){return this._storage.updateConfiguration({level:e}),this}},{key:"get",value:function(e){return this._storage.config[e]}},{key:"set",value:function(e,t){this._storage.updateConfiguration(z({},e,t))}},{key:"settings",value:function(){console.table?console.table(this._storage.config):console.log(this._storage.config)}},{key:"assert",value:function(e,t){hC(e,t)}},{key:"warn",value:function(e){return this._getLogFunction(0,e,pC.warn,arguments,gC)}},{key:"error",value:function(e){return this._getLogFunction(0,e,pC.error,arguments)}},{key:"deprecated",value:function(e,t){return this.warn("`".concat(e,"` is deprecated and will be removed in a later version. Use `").concat(t,"` instead"))}},{key:"removed",value:function(e,t){return this.error("`".concat(e,"` has been removed. Use `").concat(t,"` instead"))}},{key:"probe",value:function(e,t){return this._getLogFunction(e,t,pC.log,arguments,{time:!0,once:!0})}},{key:"log",value:function(e,t){return this._getLogFunction(e,t,pC.debug,arguments)}},{key:"info",value:function(e,t){return this._getLogFunction(e,t,console.info,arguments)}},{key:"once",value:function(e,t){for(var n=arguments.length,i=new Array(2<n?n-2:0),r=2;r<n;r++)i[r-2]=arguments[r];return this._getLogFunction(e,t,pC.debug||pC.info,arguments,gC)}},{key:"table",value:function(e,t,n){return t?this._getLogFunction(e,t,console.table||mC,n&&[n],{tag:function(e){for(var t in e)for(var n in e[t])return n||"untitled";return"empty"}(t)}):mC}},{key:"image",value:function(e){var n,t,i,r,a=e.logLevel,o=e.priority,s=e.image,l=e.message,l=void 0===l?"":l,e=e.scale,e=void 0===e?1:e;return this._shouldLog(a||o)&&(o=(a={image:s,message:l,scale:e}).image,s=a.message,i=void 0===s?"":s,s=a.scale,r=void 0===s?1:s,"string"==typeof o?((n=new Image).onload=function(){var e,t=uC(n,i,r);(e=console).log.apply(e,J(t))},n.src=o):"img"===(a=o.nodeName||"").toLowerCase()?(s=console).log.apply(s,J(uC(o,i,r))):"canvas"===a.toLowerCase()&&((t=new Image).onload=function(){var e;return(e=console).log.apply(e,J(uC(t,i,r)))},t.src=o.toDataURL())),mC}},{key:"time",value:function(e,t){return this._getLogFunction(e,t,console.time||console.info)}},{key:"timeEnd",value:function(e,t){return this._getLogFunction(e,t,console.timeEnd||console.info)}},{key:"timeStamp",value:function(e,t){return this._getLogFunction(e,t,console.timeStamp||mC)}},{key:"group",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{collapsed:!1},e=yC({logLevel:e,message:t,opts:n}),t=n.collapsed;return e.method=(t?console.groupCollapsed:console.group)||console.info,this._getLogFunction(e)}},{key:"groupCollapsed",value:function(e,t){return this.group(e,t,Object.assign({},2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},{collapsed:!0}))}},{key:"groupEnd",value:function(e){return this._getLogFunction(e,"",console.groupEnd||mC)}},{key:"withGroup",value:function(e,t,n){this.group(e,t)();try{n()}finally{this.groupEnd(e)()}}},{key:"trace",value:function(){console.trace&&console.trace()}},{key:"_shouldLog",value:function(e){return this.isEnabled()&&this.getLevel()>=AC(e)}},{key:"_getLogFunction",value:function(e,t,n,i,r){if(this._shouldLog(e)){r=yC({logLevel:e,message:t,args:i,opts:r}),hC(n=n||r.method),r.total=this.getTotal(),r.delta=this.getDelta(),this._deltaTs=dC();e=r.tag||r.message;if(r.once){if(vC[e])return mC;vC[e]=dC()}return t=function(e,t,n){{var i;"string"==typeof t&&(i=n.time?function(e,t){return t=Math.max((1<arguments.length&&void 0!==t?t:8)-e.length,0),"".concat(" ".repeat(t)).concat(e)}(function(e){return e=e<10?"".concat(e.toFixed(2),"ms"):e<100?"".concat(e.toFixed(1),"ms"):e<1e3?"".concat(e.toFixed(0),"ms"):"".concat((e/1e3).toFixed(2),"s")}(n.total)):"",t=function(e){return e}(t=(n.time?"".concat(e,": ").concat(i," "):"".concat(e,": ")).concat(t),(n.color,n.background)))}return t}(this.id,r.message,r),n.bind.apply(n,[console,t].concat(J(r.args)))}return mC}}]),t}();function AC(e){if(!e)return 0;var t;switch(v(e)){case"number":t=e;break;case"object":t=e.logLevel||e.priority||0;break;default:return 0}return hC(Number.isFinite(t)&&0<=t),t}function yC(e){for(var t=e.logLevel,n=e.message,i=(e.logLevel=AC(t),e.args?Array.from(e.args):[]);i.length&&i.shift()!==n;);switch(v(t)){case"string":case"function":void 0!==n&&i.unshift(n),e.message=t;break;case"object":Object.assign(e,t)}"function"==typeof e.message&&(e.message=e.message());var r=v(e.message);return hC("string"===r||"object"===r),Object.assign(e,{args:i},e.opts)}l(Vd,"VERSION",sC);var wC=new Vd({id:"loaders.gl"}),bC=function(){function e(){te(this,e)}return A(e,[{key:"log",value:function(){return function(){}}},{key:"info",value:function(){return function(){}}},{key:"warn",value:function(){return function(){}}},{key:"error",value:function(){return function(){}}}]),e}(),xC={fetch:null,mimeType:void 0,nothrow:!1,log:new(function(){function e(){te(this,e),l(this,"console",void 0),this.console=console}return A(e,[{key:"log",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.log).bind.apply(e,[this.console].concat(n))}},{key:"info",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.info).bind.apply(e,[this.console].concat(n))}},{key:"warn",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.warn).bind.apply(e,[this.console].concat(n))}},{key:"error",value:function(){for(var e,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return(e=this.console.error).bind.apply(e,[this.console].concat(n))}}]),e}()),CDN:"https://unpkg.com/@loaders.gl",worker:!0,maxConcurrency:3,maxMobileConcurrency:1,reuseWorkers:!0,_workerType:"",limit:0,_limitMB:0,batchSize:"auto",batchDebounceMs:0,metadata:!1,transforms:[]},EC={throws:"nothrow",dataType:"(no longer used)",uri:"baseUri",method:"fetch.method",headers:"fetch.headers",body:"fetch.body",mode:"fetch.mode",credentials:"fetch.credentials",cache:"fetch.cache",redirect:"fetch.redirect",referrer:"fetch.referrer",referrerPolicy:"fetch.referrerPolicy",integrity:"fetch.integrity",keepalive:"fetch.keepalive",signal:"fetch.signal"};function CC(){globalThis.loaders=globalThis.loaders||{};var e=globalThis.loaders;return e._state=e._state||{},e._state}var BC=function(){var e=CC();return e.globalOptions=e.globalOptions||g({},xC),e.globalOptions};function _C(e,t,n,i){n=n||[],n=Array.isArray(n)?n:[n];var r=e,a=n;TC(r,null,xC,EC,a);var o,s=q(a);try{for(s.s();!(o=s.n()).done;){var l=o.value,u=r&&r[l.id]||{},c=l.options&&l.options[l.id]||{},h=l.deprecatedOptions&&l.deprecatedOptions[l.id]||{};TC(u,l.id,c,h,a)}}catch(e){s.e(e)}finally{s.f()}n=t,t=e,e=i,i=n=g({},n.options||{});return!e||"baseUri"in i||(i.baseUri=e),null===n.log&&(n.log=new bC),SC(n,BC()),SC(n,t),n}function MC(e,t){var n=BC(),i=e||n;return"function"==typeof i.fetch?i.fetch:OE(i.fetch)?function(e){return nC(e,i)}:null!=t&&t.fetch?null==t?void 0:t.fetch:nC}function TC(e,t,n,i,r){var a,o=t||"Top level",s=t?"".concat(t,"."):"";for(a in e){var l=!t&&OE(e[a]),u="baseUri"===a&&!t,c="workerUrl"===a&&t;a in n||u||c||(a in i?wC.warn("".concat(o," loader option '").concat(s).concat(a,"' no longer supported, use '").concat(i[a],"'"))():l||(u=function(e,t){var n,i=e.toLowerCase(),r="",a=q(t);try{for(a.s();!(n=a.n()).done;){var o,s=n.value;for(o in s.options){if(e===o)return"Did you mean '".concat(s.id,".").concat(o,"'?");var l=o.toLowerCase();(i.startsWith(l)||l.startsWith(i))&&(r=r||"Did you mean '".concat(s.id,".").concat(o,"'?"))}}}catch(e){a.e(e)}finally{a.f()}return r}(a,r),wC.warn("".concat(o," loader option '").concat(s).concat(a,"' not recognized. ").concat(u))()))}}function SC(e,t){for(var n in t){var i;n in t&&(i=t[n],RE(i)&&RE(e[n])?e[n]=g(g({},e[n]),t[n]):e[n]=t[n])}}function IC(e){return!!e&&(Array.isArray(e)&&(e=e[0]),Array.isArray(null==(e=e)?void 0:e.extensions))}function DC(e){var t;return Vx(e,"null loader"),Vx(IC(e),"invalid loader"),Array.isArray(e)&&(t=e[1],e=g(g({},e=e[0]),{},{options:g(g({},e.options),t)})),(null!=(t=e)&&t.parseTextSync||null!=(t=e)&&t.parseText)&&(e.text=!0),e.text||(e.binary=!0),e}function PC(){return(e=CC()).loaderRegistry=e.loaderRegistry||[],e.loaderRegistry;var e}var kC=/\.([^.]+)$/;function LC(){return(LC=d(V().mark(function e(t){var n,i,r,a,o=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=1<o.length&&void 0!==o[1]?o[1]:[],i=2<o.length?o[2]:void 0,r=3<o.length?o[3]:void 0,FC(t)){e.next=5;break}return e.abrupt("return",null);case 5:if(a=RC(t,n,g(g({},i),{},{nothrow:!0}),r))return e.abrupt("return",a);e.next=8;break;case 8:if(zE(t))return e.next=11,t.slice(0,10).arrayBuffer();e.next=13;break;case 11:t=e.sent,a=RC(t,n,i,r);case 13:if(a||null!=i&&i.nothrow){e.next=15;break}throw new Error(OC(t));case 15:return e.abrupt("return",a);case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}function RC(e,t,n,i){t=1<arguments.length&&void 0!==t?t:[],n=2<arguments.length?n:void 0,i=3<arguments.length?i:void 0;if(!FC(e))return null;if(t&&!Array.isArray(t))return DC(t);var r,a=[],t=(t&&(a=a.concat(t)),null!=n&&n.ignoreRegisteredLoaders||a.push.apply(a,J(PC())),a),o=q(t);try{for(o.s();!(r=o.n()).done;)DC(r.value)}catch(e){o.e(e)}finally{o.f()}t=function(e,t,n,i){var r=XE(e),a=r.url,r=r.type,a=a||(null==i?void 0:i.url),i=null;null!=n&&n.mimeType&&(i=NC(t,null==n?void 0:n.mimeType));return i=(i=(i=(i=i||function(e,t){t=t&&kC.exec(t),t=t&&t[1];return t?function(e,t){t=t.toLowerCase();var n,i=q(e);try{for(i.s();!(n=i.n()).done;){var r,a=n.value,o=q(a.extensions);try{for(o.s();!(r=o.n()).done;)if(r.value.toLowerCase()===t)return a}catch(e){o.e(e)}finally{o.f()}}}catch(e){i.e(e)}finally{i.f()}return null}(e,t):null}(t,a))||NC(t,r))||function(e,t){if(t){var n,i=q(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if("string"==typeof t){if(function(t,e){if(e.testText)return e.testText(t);return(Array.isArray(e.tests)?e.tests:[e.tests]).some(function(e){return t.startsWith(e)})}(t,r))return r}else if(ArrayBuffer.isView(t)){if(GC(t.buffer,t.byteOffset,r))return r}else if(t instanceof ArrayBuffer)if(GC(t,0,r))return r}}catch(e){i.e(e)}finally{i.f()}}return null}(t,e))||NC(t,null==n?void 0:n.fallbackMimeType)}(e,a,n,i);if(t||null!=n&&n.nothrow)return t;throw new Error(OC(e))}function FC(e){return!(e instanceof Response&&204===e.status)}function OC(e){var t,n=XE(e),i=n.url,n=n.type,r="No valid loader found (",i=(r=(r+=i?"".concat(0<=(t=(i=i)&&i.lastIndexOf("/"))?i.substr(t+1):"",", "):"no url provided, ")+"MIME type: ".concat(n?'"'.concat(n,'"'):"not provided",", "),e?function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:5;{if("string"==typeof e)return e.slice(0,t);if(ArrayBuffer.isView(e))return UC(e.buffer,e.byteOffset,t);if(e instanceof ArrayBuffer)return UC(e,0,t)}return""}(e):"");return r=r+(i?' first bytes: "'.concat(i,'"'):"first bytes: not available")+")"}function NC(e,t){var n,i=q(e);try{for(i.s();!(n=i.n()).done;){var r=n.value;if(r.mimeTypes&&r.mimeTypes.includes(t))return r;if(t==="application/x.".concat(r.id))return r}}catch(e){i.e(e)}finally{i.f()}return null}function GC(h,d,p){return(Array.isArray(p.tests)?p.tests:[p.tests]).some(function(e){var t=h,n=d,i=p,r=e;if(r instanceof ArrayBuffer){var e=r,a=t,o=r.byteLength;if(o=o||e.byteLength,e.byteLength<o||a.byteLength<o)return!1;for(var s=new Uint8Array(e),l=new Uint8Array(a),u=0;u<s.length;++u)if(s[u]!==l[u])return!1;return!0}switch(v(r)){case"function":return r(t,i);case"string":var c=UC(t,n,r.length);return r===c;default:return!1}})}function UC(e,t,n){if(e.byteLength<t+n)return"";for(var i=new DataView(e),r="",a=0;a<n;a++)r+=String.fromCharCode(i.getUint8(t+a));return r}var zC=262144;function HC(t,n){var i,r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=(null==n?void 0:n.chunkSize)||zC,r=0,a=new TextEncoder;case 3:if(r<t.length)return o=Math.min(t.length-r,i),s=t.slice(r,r+o),r+=o,e.next=9,a.encode(s);e.next=11;break;case 9:e.next=3;break;case 11:case"end":return e.stop()}},zx)}var QC=1048576;function VC(){return(VC=p(V().mark(function e(t,n){var i,r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=(null==n?void 0:n.chunkSize)||QC,r=0;case 2:if(r<t.size)return a=r+i,e.next=6,h(t.slice(r,a).arrayBuffer());e.next=12;break;case 6:return o=e.sent,r=a,e.next=10,o;case 10:e.next=2;break;case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function jC(e,t){return jx?function(){return WC.apply(this,arguments)}(e,t):function(){return JC.apply(this,arguments)}(e)}function WC(){return(WC=p(V().mark(function e(t,n){var i,r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=t.getReader(),e.prev=1;case 2:return a=r||i.read(),null!=n&&n._streamReadAhead&&(r=i.read()),e.next=7,h(a);case 7:if(a=e.sent,o=a.done,s=a.value,o)return e.abrupt("return");e.next=12;break;case 12:return e.next=14,bE(s);case 14:e.next=2;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(1),i.releaseLock();case 21:case"end":return e.stop()}},e,null,[[1,18]])}))).apply(this,arguments)}function JC(){return(JC=p(V().mark(function e(t,n){var i,r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=i=!1,e.prev=2,o=c(t);case 4:return e.next=6,h(o.next());case 6:if(i=!(s=e.sent).done)return s=s.value,e.next=10,bE(s);e.next=13;break;case 10:i=!1,e.next=4;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(2),r=!0,a=e.t0;case 19:if(e.prev=19,e.prev=20,i&&null!=o.return)return e.next=24,h(o.return());e.next=24;break;case 24:if(e.prev=24,r)throw a;e.next=27;break;case 27:return e.finish(24);case 28:return e.finish(19);case 29:case"end":return e.stop()}},e,null,[[2,15,19,29],[20,,24,28]])}))).apply(this,arguments)}function qC(e,t){if("string"==typeof e)return HC(e,t);if(e instanceof ArrayBuffer)return function(o,e){var s=1<arguments.length&&void 0!==e?e:{};return V().mark(function e(){var t,n,i,r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=s.chunkSize,t=void 0===t?262144:t,n=0;case 2:if(n<o.byteLength)return i=Math.min(o.byteLength-n,t),r=new ArrayBuffer(i),a=new Uint8Array(o,n,i),new Uint8Array(r).set(a),n+=i,e.next=11,r;e.next=13;break;case 11:e.next=2;break;case 13:case"end":return e.stop()}},e)})()}(e,t);if(zE(e))return function(){return VC.apply(this,arguments)}(e,t);if(VE(e))return jC(e,t);if(UE(e))return jC(e.body,t);throw new Error("makeIterator")}var XC="Cannot convert supplied data type";function YC(){return(YC=d(V().mark(function e(t,n,i){var r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t instanceof ArrayBuffer||ArrayBuffer.isView(t),"string"==typeof t||r)return e.abrupt("return",function(e,t){if(t.text&&"string"==typeof e)return e;var n;if((e=FE(e)?e.buffer:e)instanceof ArrayBuffer)return n=e,t.text&&!t.binary?new TextDecoder("utf8").decode(n):n;if(ArrayBuffer.isView(e))return t.text&&!t.binary?new TextDecoder("utf8").decode(e):(n=e.buffer,t=e.byteLength||e.length,0===e.byteOffset&&t===n.byteLength?n:n.slice(e.byteOffset,e.byteOffset+t));throw new Error(XC)}(t,n));e.next=3;break;case 3:if(zE(t))return e.next=6,KE(t);e.next=7;break;case 6:t=e.sent;case 7:if(UE(t))return a=t,e.next=11,function(){return $E.apply(this,arguments)}(a);e.next=21;break;case 11:if(n.binary)return e.next=14,a.arrayBuffer();e.next=17;break;case 14:e.t0=e.sent,e.next=20;break;case 17:return e.next=19,a.text();case 19:e.t0=e.sent;case 20:return e.abrupt("return",e.t0);case 21:if(VE(t)&&(t=qC(t,i)),NE(t)||GE(t))return e.abrupt("return",function(){return BE.apply(this,arguments)}(t));e.next=24;break;case 24:throw new Error(XC);case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}function KC(e,t,n,i){return ZC.apply(this,arguments)}function ZC(){return(ZC=d(V().mark(function e(r,a,o,s){var l,u,c;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Wx(!s||"object"===v(s)),!a||Array.isArray(a)||IC(a)||(o=a,a=s=void 0),e.next=4,r;case 4:return r=e.sent,o=o||{},l=XE(r),l=l.url,t=a,i=void 0,u=(n=s)||!t||Array.isArray(t)?(t&&(i=Array.isArray(t)?t:[t]),n&&n.loaders&&(n=Array.isArray(n.loaders)?n.loaders:[n.loaders],i=i?[].concat(J(i),J(n)):n),i&&i.length?i:null):t,e.next=11,function(){return LC.apply(this,arguments)}(r,u,o);case 11:if(c=e.sent){e.next=14;break}return e.abrupt("return",null);case 14:return o=_C(o,c,u,l),s=function(e,t,n){var n=2<arguments.length&&void 0!==n?n:null;return n||(n=g({fetch:MC(t,e)},e),Array.isArray(n.loaders)||(n.loaders=null),n)}({url:l,parse:KC,loaders:u},o,s),e.next=18,function(){return $C.apply(this,arguments)}(c,r,o,s);case 18:return e.abrupt("return",e.sent);case 19:case"end":return e.stop()}var t,n,i},e)}))).apply(this,arguments)}function $C(){return($C=d(V().mark(function e(i,r,a,o){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return function(e){Wx(e,"no worker provided"),e.version}(i),e.next=3,function(){return YC.apply(this,arguments)}(r,i,a);case 3:if(r=e.sent,i.parseTextSync&&"string"==typeof r)return a.dataType="text",e.abrupt("return",i.parseTextSync(r,a,o,i));e.next=7;break;case 7:if(t=i,n=a,oE.isSupported()&&t.worker&&null!=n&&n.worker)return e.next=10,function(){return mE.apply(this,arguments)}(i,r,a,o,KC);e.next=11;break;case 10:return e.abrupt("return",e.sent);case 11:if(i.parseText&&"string"==typeof r)return e.next=14,i.parseText(r,a,o,i);e.next=15;break;case 14:return e.abrupt("return",e.sent);case 15:if(i.parse)return e.next=18,i.parse(r,a,o,i);e.next=19;break;case 18:return e.abrupt("return",e.sent);case 19:throw Wx(!i.parseSync),new Error("".concat(i.id," loader - no parser found and worker is disabled"));case 21:case"end":return e.stop()}var t,n},e)}))).apply(this,arguments)}function eB(){return tB.apply(this,arguments)}function tB(){return(tB=d(V().mark(function e(t,n,i,r){var a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(Array.isArray(n)||IC(n)||(i=n,n=void 0),a=MC(i),"string"==typeof(o=t))return e.next=6,a(t);e.next=7;break;case 6:o=e.sent;case 7:if(zE(t))return e.next=10,a(t);e.next=11;break;case 10:o=e.sent;case 11:return e.next=13,KC(o,n,i);case 13:return e.abrupt("return",e.sent);case 14:case"end":return e.stop()}},e)}))).apply(this,arguments)}function nB(e,t){if(!e)throw new Error("math.gl assertion ".concat(t))}var iB=1/Math.PI*180,rB=1/180*Math.PI,aB={};function oB(e,t){var n,t=(1<arguments.length&&void 0!==t?t:{}).precision,t=void 0===t?aB.precision||4:t;return n=e,e=Math.round(n/aB.EPSILON)*aB.EPSILON,"".concat(parseFloat(e.toPrecision(t)))}function sB(e){return Array.isArray(e)||ArrayBuffer.isView(e)&&!(e instanceof DataView)}function lB(e,t,n){if(sB(e)){n=n||((r=e).clone?r.clone():new Array(r.length));for(var i=0;i<n.length&&i<e.length;++i)n[i]=t(e[i],i,n);return n}var r;return t(e)}function uB(e){return lB(e,function(e){return e*rB},t);var t}function cB(e){return hB(e)}function hB(e,t){return lB(e,function(e){return e*iB},t)}function dB(e,t,n){var i=aB.EPSILON;n&&(aB.EPSILON=n);try{if(e===t)return!0;if(sB(e)&&sB(t)){if(e.length!==t.length)return!1;for(var r=0;r<e.length;++r)if(!dB(e[r],t[r]))return!1;return!0}return e&&e.equals?e.equals(t):t&&t.equals?t.equals(e):!(!Number.isFinite(e)||!Number.isFinite(t))&&Math.abs(e-t)<=aB.EPSILON*Math.max(1,Math.abs(e),Math.abs(t))}finally{aB.EPSILON=i}}function pB(t){function e(){var e=Reflect.construct(t,Array.from(arguments));return Object.setPrototypeOf(e,Object.getPrototypeOf(this)),e}return e.prototype=Object.create(t.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t,e}aB.EPSILON=1e-12,aB.debug=!1,aB.precision=4,aB.printTypes=!1,aB.printDegrees=!1,aB.printRowMajor=!0;var fB=function(){y(t,pB(Array));var e=C(t);function t(){return te(this,t),e.apply(this,arguments)}return A(t,[{key:"ELEMENTS",get:function(){return nB(!1),0}},{key:"clone",value:function(){return(new this.constructor).copy(this)}},{key:"from",value:function(e){return Array.isArray(e)?this.copy(e):this.fromObject(e)}},{key:"fromArray",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<this.ELEMENTS;++n)this[n]=e[n+t];return this.check()}},{key:"to",value:function(e){return e===this?this:sB(e)?this.toArray(e):this.toObject(e)}},{key:"toTarget",value:function(e){return e?this.to(e):this}},{key:"toArray",value:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=0;n<this.ELEMENTS;++n)e[t+n]=this[n];return e}},{key:"toFloat32Array",value:function(){return new Float32Array(this)}},{key:"toString",value:function(){return this.formatString(aB)}},{key:"formatString",value:function(e){for(var t="",n=0;n<this.ELEMENTS;++n)t+=(0<n?", ":"")+oB(this[n],e);return"".concat(e.printTypes?this.constructor.name:"","[").concat(t,"]")}},{key:"equals",value:function(e){if(!e||this.length!==e.length)return!1;for(var t=0;t<this.ELEMENTS;++t)if(!dB(this[t],e[t]))return!1;return!0}},{key:"exactEquals",value:function(e){if(!e||this.length!==e.length)return!1;for(var t=0;t<this.ELEMENTS;++t)if(this[t]!==e[t])return!1;return!0}},{key:"negate",value:function(){for(var e=0;e<this.ELEMENTS;++e)this[e]=-this[e];return this.check()}},{key:"lerp",value:function(e,t,n){void 0===n&&(n=t,t=e,e=this);for(var i=0;i<this.ELEMENTS;++i){var r=e[i];this[i]=r+n*(t[i]-r)}return this.check()}},{key:"min",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]=Math.min(e[t],this[t]);return this.check()}},{key:"max",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]=Math.max(e[t],this[t]);return this.check()}},{key:"clamp",value:function(e,t){for(var n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e[n]),t[n]);return this.check()}},{key:"add",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]+=a[o];return this.check()}},{key:"subtract",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]-=a[o];return this.check()}},{key:"scale",value:function(e){if(Array.isArray(e))return this.multiply(e);for(var t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}},{key:"sub",value:function(e){return this.subtract(e)}},{key:"setScalar",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]=e;return this.check()}},{key:"addScalar",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]+=e;return this.check()}},{key:"subScalar",value:function(e){return this.addScalar(-e)}},{key:"multiplyScalar",value:function(e){for(var t=0;t<this.ELEMENTS;++t)this[t]*=e;return this.check()}},{key:"divideScalar",value:function(e){return this.scale(1/e)}},{key:"clampScalar",value:function(e,t){for(var n=0;n<this.ELEMENTS;++n)this[n]=Math.min(Math.max(this[n],e),t);return this.check()}},{key:"multiplyByScalar",value:function(e){return this.scale(e)}},{key:"elements",get:function(){return this}},{key:"check",value:function(){if(aB.debug&&!this.validate())throw new Error("math.gl: ".concat(this.constructor.name," some fields set to invalid numbers'"));return this}},{key:"validate",value:function(){for(var e=this.length===this.ELEMENTS,t=0;t<this.ELEMENTS;++t)e=e&&Number.isFinite(this[t]);return e}}]),t}();function mB(e){if(Number.isFinite(e))return e;throw new Error("Invalid number ".concat(e))}function vB(e,t,n){n=2<arguments.length&&void 0!==n?n:"";if(aB.debug&&!function(e,t){if(e.length===t){for(var n=0;n<e.length;++n)if(!Number.isFinite(e[n]))return;return 1}}(e,t))throw new Error("math.gl: ".concat(n," some fields set to invalid numbers'"));return e}var gB={};function AB(e,t){gB[e]||(gB[e]=!0,console.warn("".concat(e," has been removed in version ").concat(t,", see upgrade guide for more information")))}var yB=function(){y(t,fB);var e=C(t);function t(){return te(this,t),e.apply(this,arguments)}return A(t,[{key:"ELEMENTS",get:function(){return nB(!1),0}},{key:"copy",value:function(e){return nB(!1),this}},{key:"x",get:function(){return this[0]},set:function(e){this[0]=mB(e)}},{key:"y",get:function(){return this[1]},set:function(e){this[1]=mB(e)}},{key:"len",value:function(){return Math.sqrt(this.lengthSquared())}},{key:"magnitude",value:function(){return this.len()}},{key:"lengthSquared",value:function(){for(var e=0,t=0;t<this.ELEMENTS;++t)e+=this[t]*this[t];return e}},{key:"magnitudeSquared",value:function(){return this.lengthSquared()}},{key:"distance",value:function(e){return Math.sqrt(this.distanceSquared(e))}},{key:"distanceSquared",value:function(e){for(var t=0,n=0;n<this.ELEMENTS;++n){var i=this[n]-e[n];t+=i*i}return mB(t)}},{key:"dot",value:function(e){for(var t=0,n=0;n<this.ELEMENTS;++n)t+=this[n]*e[n];return mB(t)}},{key:"normalize",value:function(){var e=this.magnitude();if(0!==e)for(var t=0;t<this.ELEMENTS;++t)this[t]/=e;return this.check()}},{key:"multiply",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]*=a[o];return this.check()}},{key:"divide",value:function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=0,r=t;i<r.length;i++)for(var a=r[i],o=0;o<this.ELEMENTS;++o)this[o]/=a[o];return this.check()}},{key:"lengthSq",value:function(){return this.lengthSquared()}},{key:"distanceTo",value:function(e){return this.distance(e)}},{key:"distanceToSquared",value:function(e){return this.distanceSquared(e)}},{key:"getComponent",value:function(e){return nB(0<=e&&e<this.ELEMENTS,"index is out of range"),mB(this[e])}},{key:"setComponent",value:function(e,t){return nB(0<=e&&e<this.ELEMENTS,"index is out of range"),this[e]=t,this.check()}},{key:"addVectors",value:function(e,t){return this.copy(e).add(t)}},{key:"subVectors",value:function(e,t){return this.copy(e).subtract(t)}},{key:"multiplyVectors",value:function(e,t){return this.copy(e).multiply(t)}},{key:"addScaledVector",value:function(e,t){return this.add(new this.constructor(e).multiplyScalar(t))}}]),t}(),wB=1e-6,bB="undefined"!=typeof Float32Array?Float32Array:Array;function xB(e,t,n){var i=t[0],t=t[1];return e[0]=n[0]*i+n[3]*t+n[6],e[1]=n[1]*i+n[4]*t+n[7],e}function EB(e,t,n){var i=t[0],t=t[1];return e[0]=n[0]*i+n[4]*t+n[12],e[1]=n[1]*i+n[5]*t+n[13],e}function CB(e,t,n){var i=t[0],t=t[1],r=n[3]*i+n[7]*t||1;return e[0]=(n[0]*i+n[4]*t)/r,e[1]=(n[1]*i+n[5]*t)/r,e}function BB(e,t,n){var i=t[0],r=t[1],t=t[2],a=n[3]*i+n[7]*r+n[11]*t||1;return e[0]=(n[0]*i+n[4]*r+n[8]*t)/a,e[1]=(n[1]*i+n[5]*r+n[9]*t)/a,e[2]=(n[2]*i+n[6]*r+n[10]*t)/a,e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)}),Fu=new bB(2),bB!=Float32Array&&(Fu[0]=0,Fu[1]=0);Od=function(){y(r,yB);var i=C(r);function r(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;return te(this,r),e=i.call(this,2),sB(t)&&1===arguments.length?e.copy(t):(aB.debug&&(mB(t),mB(n)),e[0]=t,e[1]=n),e}return A(r,[{key:"set",value:function(e,t){return this[0]=e,this[1]=t,this.check()}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this.check()}},{key:"fromObject",value:function(e){return aB.debug&&(mB(e.x),mB(e.y)),this[0]=e.x,this[1]=e.y,this.check()}},{key:"toObject",value:function(e){return e.x=this[0],e.y=this[1],e}},{key:"ELEMENTS",get:function(){return 2}},{key:"horizontalAngle",value:function(){return Math.atan2(this.y,this.x)}},{key:"verticalAngle",value:function(){return Math.atan2(this.x,this.y)}},{key:"transform",value:function(e){return this.transformAsPoint(e)}},{key:"transformAsPoint",value:function(e){return EB(this,this,e),this.check()}},{key:"transformAsVector",value:function(e){return CB(this,this,e),this.check()}},{key:"transformByMatrix3",value:function(e){return xB(this,this,e),this.check()}},{key:"transformByMatrix2x3",value:function(e){var t,n,i;return e=e,i=(n=t=this)[0],n=n[1],t[0]=e[0]*i+e[2]*n+e[4],t[1]=e[1]*i+e[3]*n+e[5],this.check()}},{key:"transformByMatrix2",value:function(e){var t,n,i;return e=e,i=(n=t=this)[0],n=n[1],t[0]=e[0]*i+e[2]*n,t[1]=e[1]*i+e[3]*n,this.check()}}]),r}();function _B(){var e=new bB(3);return bB!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function MB(e){var t=e[0],n=e[1],e=e[2];return Math.hypot(t,n,e)}function TB(e,t,n){var i=new bB(3);return i[0]=e,i[1]=t,i[2]=n,i}function SB(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function IB(e,t,n){var i=t[0],r=t[1],t=t[2],a=n[0],o=n[1],n=n[2];e[0]=r*n-t*o,e[1]=t*a-i*n,e[2]=i*o-r*a}function DB(e,t,n){var i=t[0],r=t[1],t=t[2],a=n[3]*i+n[7]*r+n[11]*t+n[15];return e[0]=(n[0]*i+n[4]*r+n[8]*t+n[12])/(a=a||1),e[1]=(n[1]*i+n[5]*r+n[9]*t+n[13])/a,e[2]=(n[2]*i+n[6]*r+n[10]*t+n[14])/a,e}function PB(e,t,n){var i=t[0],r=t[1],t=t[2];return e[0]=i*n[0]+r*n[3]+t*n[6],e[1]=i*n[1]+r*n[4]+t*n[7],e[2]=i*n[2]+r*n[5]+t*n[8],e}var kB=MB,LB=(_B(),[0,0,0]),RB={},B=function(){y(a,yB);var r=C(a);function a(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;return te(this,a),e=r.call(this,-0,-0,-0),1===arguments.length&&sB(t)?e.copy(t):(aB.debug&&(mB(t),mB(n),mB(i)),e[0]=t,e[1]=n,e[2]=i),e}return A(a,[{key:"set",value:function(e,t,n){return this[0]=e,this[1]=t,this[2]=n,this.check()}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this.check()}},{key:"fromObject",value:function(e){return aB.debug&&(mB(e.x),mB(e.y),mB(e.z)),this[0]=e.x,this[1]=e.y,this[2]=e.z,this.check()}},{key:"toObject",value:function(e){return e.x=this[0],e.y=this[1],e.z=this[2],e}},{key:"ELEMENTS",get:function(){return 3}},{key:"z",get:function(){return this[2]},set:function(e){this[2]=mB(e)}},{key:"angle",value:function(e){return e=e,n=(t=this)[0],i=t[1],r=t[2],a=e[0],o=e[1],s=e[2],i=(n=Math.sqrt(n*n+i*i+r*r)*Math.sqrt(a*a+o*o+s*s))&&SB(t,e)/n,Math.acos(Math.min(Math.max(i,-1),1));var t,n,i,r,a,o,s}},{key:"cross",value:function(e){return IB(this,this,e),this.check()}},{key:"rotateX",value:function(e){var t,n,i,r,a=e.radians,e=e.origin;return e=void 0===e?LB:e,a=a,r=[],(i=[])[0]=(n=t=this)[0]-e[0],i[1]=n[1]-e[1],i[2]=n[2]-e[2],r[0]=i[0],r[1]=i[1]*Math.cos(a)-i[2]*Math.sin(a),r[2]=i[1]*Math.sin(a)+i[2]*Math.cos(a),t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],this.check()}},{key:"rotateY",value:function(e){var t,n,i,r,a=e.radians,e=e.origin;return e=void 0===e?LB:e,a=a,r=[],(i=[])[0]=(n=t=this)[0]-e[0],i[1]=n[1]-e[1],i[2]=n[2]-e[2],r[0]=i[2]*Math.sin(a)+i[0]*Math.cos(a),r[1]=i[1],r[2]=i[2]*Math.cos(a)-i[0]*Math.sin(a),t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],this.check()}},{key:"rotateZ",value:function(e){var t,n,i,r,a=e.radians,e=e.origin;return e=void 0===e?LB:e,a=a,r=[],(i=[])[0]=(n=t=this)[0]-e[0],i[1]=n[1]-e[1],i[2]=n[2]-e[2],r[0]=i[0]*Math.cos(a)-i[1]*Math.sin(a),r[1]=i[0]*Math.sin(a)+i[1]*Math.cos(a),r[2]=i[2],t[0]=r[0]+e[0],t[1]=r[1]+e[1],t[2]=r[2]+e[2],this.check()}},{key:"transform",value:function(e){return this.transformAsPoint(e)}},{key:"transformAsPoint",value:function(e){return DB(this,this,e),this.check()}},{key:"transformAsVector",value:function(e){return BB(this,this,e),this.check()}},{key:"transformByMatrix3",value:function(e){return PB(this,this,e),this.check()}},{key:"transformByMatrix2",value:function(e){var t,n,i,r;return e=e,i=(n=t=this)[0],r=n[1],t[0]=e[0]*i+e[2]*r,t[1]=e[1]*i+e[3]*r,t[2]=n[2],this.check()}},{key:"transformByQuaternion",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;return n=t=this,r=(i=e)[0],a=e[1],o=e[2],i=e[3],e=n[0],s=n[1],n=n[2],h=a*(c=r*s-a*e)-o*(u=o*e-r*n),o=o*(l=a*n-o*s)-r*c,r=r*u-a*l,u*=a=2*i,c*=a,o*=2,r*=2,t[0]=e+(l*=a)+(h*=2),t[1]=s+u+o,t[2]=n+c+r,this.check()}}],[{key:"ZERO",get:function(){return RB.ZERO=RB.ZERO||Object.freeze(new a(0,0,0,0))}}]),a}(),FB=function(){y(t,fB);var e=C(t);function t(){return te(this,t),e.apply(this,arguments)}return A(t,[{key:"ELEMENTS",get:function(){return nB(!1),0}},{key:"RANK",get:function(){return nB(!1),0}},{key:"toString",value:function(){var e="[";if(aB.printRowMajor){e+="row-major:";for(var t=0;t<this.RANK;++t)for(var n=0;n<this.RANK;++n)e+=" ".concat(this[n*this.RANK+t])}else{e+="column-major:";for(var i=0;i<this.ELEMENTS;++i)e+=" ".concat(this[i])}return e+="]"}},{key:"getElementIndex",value:function(e,t){return t*this.RANK+e}},{key:"getElement",value:function(e,t){return this[t*this.RANK+e]}},{key:"setElement",value:function(e,t,n){return this[t*this.RANK+e]=mB(n),this}},{key:"getColumn",value:function(e){for(var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:new Array(this.RANK).fill(-0),n=e*this.RANK,i=0;i<this.RANK;++i)t[i]=this[n+i];return t}},{key:"setColumn",value:function(e,t){for(var n=e*this.RANK,i=0;i<this.RANK;++i)this[n+i]=t[i];return this}}]),t}();function OB(e,t,n){var i=t[0],r=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],t=t[8],h=n[0],d=n[1],p=n[2],f=n[3],m=n[4],v=n[5],g=n[6],A=n[7],n=n[8];e[0]=h*i+d*o+p*u,e[1]=h*r+d*s+p*c,e[2]=h*a+d*l+p*t,e[3]=f*i+m*o+v*u,e[4]=f*r+m*s+v*c,e[5]=f*a+m*l+v*t,e[6]=g*i+A*o+n*u,e[7]=g*r+A*s+n*c,e[8]=g*a+A*l+n*t}function NB(e,t,n){var i=n[0],n=n[1];e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=n*t[3],e[4]=n*t[4],e[5]=n*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8]}var GB=Object.freeze([1,0,0,0,1,0,0,0,1]),UB=Object.freeze([0,0,0,0,0,0,0,0,0]),zB=Object.freeze({COL0ROW0:0,COL0ROW1:1,COL0ROW2:2,COL1ROW0:3,COL1ROW1:4,COL1ROW2:5,COL2ROW0:6,COL2ROW1:7,COL2ROW2:8}),HB={},QB=function(){y(i,FB);var n=C(i);function i(e){var t;return te(this,i),t=n.call(this,-0,-0,-0,-0,-0,-0,-0,-0,-0),1===arguments.length&&Array.isArray(e)?t.copy(e):t.identity(),t}return A(i,[{key:"ELEMENTS",get:function(){return 9}},{key:"RANK",get:function(){return 3}},{key:"INDICES",get:function(){return zB}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this.check()}},{key:"set",value:function(e,t,n,i,r,a,o,s,l){return this[0]=e,this[1]=t,this[2]=n,this[3]=i,this[4]=r,this[5]=a,this[6]=o,this[7]=s,this[8]=l,this.check()}},{key:"setRowMajor",value:function(e,t,n,i,r,a,o,s,l){return this[0]=e,this[1]=i,this[2]=o,this[3]=t,this[4]=r,this[5]=s,this[6]=n,this[7]=a,this[8]=l,this.check()}},{key:"determinant",value:function(){return t=(e=this)[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],e=e[8],t*(e*a-o*l)+n*(-e*r+o*s)+i*(l*r-a*s);var e,t,n,i,r,a,o,s,l}},{key:"identity",value:function(){return this.copy(GB)}},{key:"fromQuaternion",value:function(e){var t,n,i,r,a,o,s,l,u,c;return t=this,n=(e=e)[0],i=e[1],r=e[2],e=e[3],n*=u=n+n,o=i*u,i*=c=i+i,s=r*u,l=r*c,r*=a=r+r,u*=e,c*=e,e*=a,t[0]=1-i-r,t[3]=o-e,t[6]=s+c,t[1]=o+e,t[4]=1-n-r,t[7]=l-u,t[2]=s-c,t[5]=l+u,t[8]=1-n-i,this.check()}},{key:"transpose",value:function(){var e,t,n,i,r;return(e=this)===(t=this)?(n=t[1],i=t[2],r=t[5],e[1]=t[3],e[2]=t[6],e[3]=n,e[5]=t[7],e[6]=i,e[7]=r):(e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8]),this.check()}},{key:"invert",value:function(){var e,t,n,i,r,a,o,s,l,u,c,h,d,p;return n=(t=e=this)[0],i=t[1],r=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=(t=t[8])*o-s*u,(p=n*c+i*(h=-t*a+s*l)+r*(d=u*a-o*l))&&(e[0]=c*(p=1/p),e[1]=(-t*i+r*u)*p,e[2]=(s*i-r*o)*p,e[3]=h*p,e[4]=(t*n-r*l)*p,e[5]=(-s*n+r*a)*p,e[6]=d*p,e[7]=(-u*n+i*l)*p,e[8]=(o*n-i*a)*p),this.check()}},{key:"multiplyLeft",value:function(e){return OB(this,e,this),this.check()}},{key:"multiplyRight",value:function(e){return OB(this,this,e),this.check()}},{key:"rotate",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;return e=e,i=(n=t=this)[0],r=n[1],a=n[2],o=n[3],s=n[4],l=n[5],u=n[6],c=n[7],n=n[8],h=Math.sin(e),e=Math.cos(e),t[0]=e*i+h*o,t[1]=e*r+h*s,t[2]=e*a+h*l,t[3]=e*o-h*i,t[4]=e*s-h*r,t[5]=e*l-h*a,t[6]=u,t[7]=c,t[8]=n,this.check()}},{key:"scale",value:function(e){return Array.isArray(e)?NB(this,this,e):NB(this,this,[e,e,e]),this.check()}},{key:"translate",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;return e=e,i=(n=t=this)[0],r=n[1],a=n[2],o=n[3],s=n[4],l=n[5],u=n[6],c=n[7],n=n[8],h=e[0],e=e[1],t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=h*i+e*o+u,t[7]=h*r+e*s+c,t[8]=h*a+e*l+n,this.check()}},{key:"transform",value:function(e,t){switch(e.length){case 2:t=xB(t||[-0,-0],e,this);break;case 3:t=PB(t||[-0,-0,-0],e,this);break;case 4:n=t||[-0,-0,-0,-0],r=this,a=(i=e)[0],o=i[1],s=i[2],n[0]=r[0]*a+r[3]*o+r[6]*s,n[1]=r[1]*a+r[4]*o+r[7]*s,n[2]=r[2]*a+r[5]*o+r[8]*s,n[3]=i[3],t=n;break;default:throw new Error("Illegal vector")}var n,i,r,a,o,s;return vB(t,e.length),t}},{key:"transformVector",value:function(e,t){return AB("Matrix3.transformVector"),this.transform(e,t)}},{key:"transformVector2",value:function(e,t){return AB("Matrix3.transformVector"),this.transform(e,t)}},{key:"transformVector3",value:function(e,t){return AB("Matrix3.transformVector"),this.transform(e,t)}}],[{key:"IDENTITY",get:function(){return HB.IDENTITY=HB.IDENTITY||Object.freeze(new i(GB)),HB.IDENTITY}},{key:"ZERO",get:function(){return HB.ZERO=HB.ZERO||Object.freeze(new i(UB)),HB.ZERO}}]),i}();function VB(e,t,n){var i=t[0],r=t[1],a=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],h=t[8],d=t[9],p=t[10],f=t[11],m=t[12],v=t[13],g=t[14],t=t[15],A=n[0],y=n[1],w=n[2],b=n[3];e[0]=A*i+y*s+w*h+b*m,e[1]=A*r+y*l+w*d+b*v,e[2]=A*a+y*u+w*p+b*g,e[3]=A*o+y*c+w*f+b*t,A=n[4],y=n[5],w=n[6],b=n[7],e[4]=A*i+y*s+w*h+b*m,e[5]=A*r+y*l+w*d+b*v,e[6]=A*a+y*u+w*p+b*g,e[7]=A*o+y*c+w*f+b*t,A=n[8],y=n[9],w=n[10],b=n[11],e[8]=A*i+y*s+w*h+b*m,e[9]=A*r+y*l+w*d+b*v,e[10]=A*a+y*u+w*p+b*g,e[11]=A*o+y*c+w*f+b*t,A=n[12],y=n[13],w=n[14],b=n[15],e[12]=A*i+y*s+w*h+b*m,e[13]=A*r+y*l+w*d+b*v,e[14]=A*a+y*u+w*p+b*g,e[15]=A*o+y*c+w*f+b*t}function jB(e,t,n){var i=n[0],r=n[1],n=n[2];e[0]=t[0]*i,e[1]=t[1]*i,e[2]=t[2]*i,e[3]=t[3]*i,e[4]=t[4]*r,e[5]=t[5]*r,e[6]=t[6]*r,e[7]=t[7]*r,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]}td=new bB(4),bB!=Float32Array&&(td[0]=0,td[1]=0,td[2]=0,td[3]=0);var WB=Object.freeze([1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),JB=Object.freeze([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),qB=Object.freeze({COL0ROW0:0,COL0ROW1:1,COL0ROW2:2,COL0ROW3:3,COL1ROW0:4,COL1ROW1:5,COL1ROW2:6,COL1ROW3:7,COL2ROW0:8,COL2ROW1:9,COL2ROW2:10,COL2ROW3:11,COL3ROW0:12,COL3ROW1:13,COL3ROW2:14,COL3ROW3:15}),XB={},YB=function(){y(c,FB);var n=C(c);function c(e){var t;return te(this,c),t=n.call(this,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0),1===arguments.length&&Array.isArray(e)?t.copy(e):t.identity(),t}return A(c,[{key:"INDICES",get:function(){return qB}},{key:"ELEMENTS",get:function(){return 16}},{key:"RANK",get:function(){return 4}},{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this[4]=e[4],this[5]=e[5],this[6]=e[6],this[7]=e[7],this[8]=e[8],this[9]=e[9],this[10]=e[10],this[11]=e[11],this[12]=e[12],this[13]=e[13],this[14]=e[14],this[15]=e[15],this.check()}},{key:"set",value:function(e,t,n,i,r,a,o,s,l,u,c,h,d,p,f,m){return this[0]=e,this[1]=t,this[2]=n,this[3]=i,this[4]=r,this[5]=a,this[6]=o,this[7]=s,this[8]=l,this[9]=u,this[10]=c,this[11]=h,this[12]=d,this[13]=p,this[14]=f,this[15]=m,this.check()}},{key:"setRowMajor",value:function(e,t,n,i,r,a,o,s,l,u,c,h,d,p,f,m){return this[0]=e,this[1]=r,this[2]=l,this[3]=d,this[4]=t,this[5]=a,this[6]=u,this[7]=p,this[8]=n,this[9]=o,this[10]=c,this[11]=f,this[12]=i,this[13]=s,this[14]=h,this[15]=m,this.check()}},{key:"toRowMajor",value:function(e){return e[0]=this[0],e[1]=this[4],e[2]=this[8],e[3]=this[12],e[4]=this[1],e[5]=this[5],e[6]=this[9],e[7]=this[13],e[8]=this[2],e[9]=this[6],e[10]=this[10],e[11]=this[14],e[12]=this[3],e[13]=this[7],e[14]=this[11],e[15]=this[15],e}},{key:"identity",value:function(){return this.copy(WB)}},{key:"fromQuaternion",value:function(e){var t,n,i,r,a,o,s,l,u,c;return t=this,n=(e=e)[0],i=e[1],r=e[2],e=e[3],n*=u=n+n,o=i*u,i*=c=i+i,s=r*u,l=r*c,r*=a=r+r,u*=e,c*=e,e*=a,t[0]=1-i-r,t[1]=o+e,t[2]=s-c,t[3]=0,t[4]=o-e,t[5]=1-n-r,t[6]=l+u,t[7]=0,t[8]=s+c,t[9]=l-u,t[10]=1-n-i,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this.check()}},{key:"frustum",value:function(e){var t,n,i,r,a=e.left,o=e.right,s=e.bottom,l=e.top,u=e.near,e=e.far;return e===1/0?c._computeInfinitePerspectiveOffCenter(this,a,o,s,l,u):(n=1/((o=o)-(a=a)),i=1/((l=l)-(s=s)),r=1/((u=u)-(e=e)),(t=this)[0]=2*u*n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=2*u*i,t[6]=0,t[7]=0,t[8]=(o+a)*n,t[9]=(l+s)*i,t[10]=(e+u)*r,t[11]=-1,t[12]=0,t[13]=0,t[14]=e*u*2*r,t[15]=0),this.check()}},{key:"lookAt",value:function(e,t,n){var i;return 1===arguments.length&&(e=(i=e).eye,t=i.center,n=i.up),function(e,t,n,i){var r,a,o,s,l=t[0],u=t[1],t=t[2],c=i[0],h=i[1],i=i[2],d=n[0],p=n[1],n=n[2];if(Math.abs(l-d)<wB&&Math.abs(u-p)<wB&&Math.abs(t-n)<wB)return(s=e)[0]=1,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=1,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=1,s[11]=0,s[12]=0,s[13]=0,s[14]=0,s[15]=1;s=l-d,d=u-p,p=t-n,r=h*(p*=n=1/Math.hypot(s,d,p))-i*(d*=n),i=i*(s*=n)-c*p,c=c*d-h*s,(n=Math.hypot(r,i,c))?(r*=n=1/n,i*=n,c*=n):c=i=r=0,h=d*c-p*i,a=p*r-s*c,o=s*i-d*r,(n=Math.hypot(h,a,o))?(h*=n=1/n,a*=n,o*=n):o=a=h=0,e[0]=r,e[1]=h,e[2]=s,e[3]=0,e[4]=i,e[5]=a,e[6]=d,e[7]=0,e[8]=c,e[9]=o,e[10]=p,e[11]=0,e[12]=-(r*l+i*u+c*t),e[13]=-(h*l+a*u+o*t),e[14]=-(s*l+d*u+p*t),e[15]=1}(this,e,t=t||[0,0,0],n=n||[0,1,0]),this.check()}},{key:"ortho",value:function(e){var t,n,i,r,a=e.left,o=e.right,s=e.bottom,l=e.top,u=e.near,e=e.far;return n=1/((a=a)-(o=o)),i=1/((s=s)-(l=l)),r=1/((u=void 0===u?.1:u)-(e=void 0===e?500:e)),(t=this)[0]=-2*n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*i,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*r,t[11]=0,t[12]=(a+o)*n,t[13]=(l+s)*i,t[14]=(e+u)*r,t[15]=1,this.check()}},{key:"orthographic",value:function(e){var t=e.fovy,t=void 0===t?45*Math.PI/180:t,n=e.aspect,n=void 0===n?1:n,i=e.focalDistance,i=void 0===i?1:i,r=e.near,r=void 0===r?.1:r,e=e.far,e=void 0===e?500:e;if(t>2*Math.PI)throw Error("radians");i*=Math.tan(t/2),t=i*n;return(new c).ortho({left:-t,right:t,bottom:-i,top:i,near:r,far:e})}},{key:"perspective",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.fovy,t=void 0===t?void 0:t,n=e.fov,n=void 0===n?45*Math.PI/180:n,i=e.aspect,i=void 0===i?1:i,r=e.near,r=void 0===r?.1:r,e=e.far,e=void 0===e?500:e;if((t=t||n)>2*Math.PI)throw Error("radians");return n=this,t=t,i=i,r=r,e=e,t=1/Math.tan(t/2),n[0]=t/i,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=t,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[11]=-1,n[12]=0,n[13]=0,n[15]=0,null!=e&&e!==1/0?(n[10]=(e+r)*(i=1/(r-e)),n[14]=2*e*r*i):(n[10]=-1,n[14]=-2*r),this.check()}},{key:"determinant",value:function(){return t=(e=this)[0],n=e[1],i=e[2],r=e[3],a=e[4],o=e[5],s=e[6],l=e[7],u=e[8],c=e[9],h=e[10],d=e[11],p=e[12],f=e[13],m=e[14],e=e[15],(t*o-n*a)*(h*e-d*m)-(t*s-i*a)*(c*e-d*f)+(t*l-r*a)*(c*m-h*f)+(n*s-i*o)*(u*e-d*p)-(n*l-r*o)*(u*m-h*p)+(i*l-r*s)*(u*f-c*p);var e,t,n,i,r,a,o,s,l,u,c,h,d,p,f,m}},{key:"getScale",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0];return e[0]=Math.sqrt(this[0]*this[0]+this[1]*this[1]+this[2]*this[2]),e[1]=Math.sqrt(this[4]*this[4]+this[5]*this[5]+this[6]*this[6]),e[2]=Math.sqrt(this[8]*this[8]+this[9]*this[9]+this[10]*this[10]),e}},{key:"getTranslation",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0];return e[0]=this[12],e[1]=this[13],e[2]=this[14],e}},{key:"getRotation",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0,-0],t=this.getScale((1<arguments.length&&void 0!==arguments[1]?arguments[1]:null)||[-0,-0,-0]),n=1/t[0],i=1/t[1],t=1/t[2];return e[0]=this[0]*n,e[1]=this[1]*i,e[2]=this[2]*t,e[3]=0,e[4]=this[4]*n,e[5]=this[5]*i,e[6]=this[6]*t,e[7]=0,e[8]=this[8]*n,e[9]=this[9]*i,e[10]=this[10]*t,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}},{key:"getRotationMatrix3",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[-0,-0,-0,-0,-0,-0,-0,-0,-0],t=this.getScale((1<arguments.length&&void 0!==arguments[1]?arguments[1]:null)||[-0,-0,-0]),n=1/t[0],i=1/t[1],t=1/t[2];return e[0]=this[0]*n,e[1]=this[1]*i,e[2]=this[2]*t,e[3]=this[4]*n,e[4]=this[5]*i,e[5]=this[6]*t,e[6]=this[8]*n,e[7]=this[9]*i,e[8]=this[10]*t,e}},{key:"transpose",value:function(){var e,t,n,i,r,a,o,s;return(e=this)===(t=this)?(n=t[1],i=t[2],r=t[3],a=t[6],o=t[7],s=t[11],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=i,e[9]=a,e[11]=t[14],e[12]=r,e[13]=o,e[14]=s):(e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15]),this.check()}},{key:"invert",value:function(){var e,t,n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B,_,M,T,S;return n=(t=e=this)[0],i=t[1],r=t[2],a=t[3],o=t[4],s=t[5],l=t[6],u=t[7],c=t[8],h=t[9],d=t[10],p=t[11],f=t[12],m=t[13],v=t[14],t=t[15],(S=(g=n*s-i*o)*(T=d*t-p*v)-(A=n*l-r*o)*(M=h*t-p*m)+(y=n*u-a*o)*(_=h*v-d*m)+(w=i*l-r*s)*(B=c*t-p*f)-(b=i*u-a*s)*(C=c*v-d*f)+(x=r*u-a*l)*(E=c*m-h*f))&&(e[0]=(s*T-l*M+u*_)*(S=1/S),e[1]=(r*M-i*T-a*_)*S,e[2]=(m*x-v*b+t*w)*S,e[3]=(d*b-h*x-p*w)*S,e[4]=(l*B-o*T-u*C)*S,e[5]=(n*T-r*B+a*C)*S,e[6]=(v*y-f*x-t*A)*S,e[7]=(c*x-d*y+p*A)*S,e[8]=(o*M-s*B+u*E)*S,e[9]=(i*B-n*M-a*E)*S,e[10]=(f*b-m*y+t*g)*S,e[11]=(h*y-c*b-p*g)*S,e[12]=(s*C-o*_-l*E)*S,e[13]=(n*_-i*C+r*E)*S,e[14]=(m*A-f*w-v*g)*S,e[15]=(c*w-h*A+d*g)*S),this.check()}},{key:"multiplyLeft",value:function(e){return VB(this,e,this),this.check()}},{key:"multiplyRight",value:function(e){return VB(this,this,e),this.check()}},{key:"rotateX",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;return n=t=this,e=e,i=Math.sin(e),e=Math.cos(e),r=n[4],a=n[5],o=n[6],s=n[7],l=n[8],u=n[9],c=n[10],h=n[11],n!==t&&(t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[4]=r*e+l*i,t[5]=a*e+u*i,t[6]=o*e+c*i,t[7]=s*e+h*i,t[8]=l*e-r*i,t[9]=u*e-a*i,t[10]=c*e-o*i,t[11]=h*e-s*i,this.check()}},{key:"rotateY",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;return n=t=this,e=e,i=Math.sin(e),e=Math.cos(e),r=n[0],a=n[1],o=n[2],s=n[3],l=n[8],u=n[9],c=n[10],h=n[11],n!==t&&(t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=r*e-l*i,t[1]=a*e-u*i,t[2]=o*e-c*i,t[3]=s*e-h*i,t[8]=r*i+l*e,t[9]=a*i+u*e,t[10]=o*i+c*e,t[11]=s*i+h*e,this.check()}},{key:"rotateZ",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;return n=t=this,e=e,i=Math.sin(e),e=Math.cos(e),r=n[0],a=n[1],o=n[2],s=n[3],l=n[4],u=n[5],c=n[6],h=n[7],n!==t&&(t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15]),t[0]=r*e+l*i,t[1]=a*e+u*i,t[2]=o*e+c*i,t[3]=s*e+h*i,t[4]=l*e-r*i,t[5]=u*e-a*i,t[6]=c*e-o*i,t[7]=h*e-s*i,this.check()}},{key:"rotateXYZ",value:function(e){var e=N(e,3),t=e[0],n=e[1],e=e[2];return this.rotateX(t).rotateY(n).rotateZ(e)}},{key:"rotateAxis",value:function(e,t){var n,i,r,a,o,s,l,u,c,h,d,p,f,m,v,g,A,y,w,b,x,E,C,B,_;return i=n=this,e=e,C=(t=t)[0],B=t[1],t=t[2],(_=Math.hypot(C,B,t))<wB||(C*=_=1/_,B*=_,t*=_,_=Math.sin(e),e=Math.cos(e),a=i[0],o=i[1],s=i[2],l=i[3],u=i[4],c=i[5],h=i[6],d=i[7],p=i[8],f=i[9],m=i[10],v=i[11],A=C*B*(r=1-e)-t*_,y=B*B*r+e,w=t*B*r+C*_,b=C*t*r+B*_,x=B*t*r-C*_,E=t*t*r+e,n[0]=a*(e=C*C*r+e)+u*(g=B*C*r+t*_)+p*(t=t*C*r-B*_),n[1]=o*e+c*g+f*t,n[2]=s*e+h*g+m*t,n[3]=l*e+d*g+v*t,n[4]=a*A+u*y+p*w,n[5]=o*A+c*y+f*w,n[6]=s*A+h*y+m*w,n[7]=l*A+d*y+v*w,n[8]=a*b+u*x+p*E,n[9]=o*b+c*x+f*E,n[10]=s*b+h*x+m*E,n[11]=l*b+d*x+v*E,i!==n&&(n[12]=i[12],n[13]=i[13],n[14]=i[14],n[15]=i[15])),this.check()}},{key:"scale",value:function(e){return Array.isArray(e)?jB(this,this,e):jB(this,this,[e,e,e]),this.check()}},{key:"translate",value:function(e){var t,n,i,r,a,o,s,l,u,c,h,d,p,f,m,v;return n=t=this,m=(e=e)[0],v=e[1],e=e[2],n===t?(t[12]=n[0]*m+n[4]*v+n[8]*e+n[12],t[13]=n[1]*m+n[5]*v+n[9]*e+n[13],t[14]=n[2]*m+n[6]*v+n[10]*e+n[14],t[15]=n[3]*m+n[7]*v+n[11]*e+n[15]):(i=n[0],r=n[1],a=n[2],o=n[3],s=n[4],l=n[5],u=n[6],c=n[7],h=n[8],d=n[9],p=n[10],f=n[11],t[0]=i,t[1]=r,t[2]=a,t[3]=o,t[4]=s,t[5]=l,t[6]=u,t[7]=c,t[8]=h,t[9]=d,t[10]=p,t[11]=f,t[12]=i*m+s*v+h*e+n[12],t[13]=r*m+l*v+d*e+n[13],t[14]=a*m+u*v+p*e+n[14],t[15]=o*m+c*v+f*e+n[15]),this.check()}},{key:"transform",value:function(e,t){var n,i,r,a,o,s;return 4===e.length?(n=t||[-0,-0,-0,-0],r=this,a=(i=e)[0],o=i[1],s=i[2],i=i[3],n[0]=r[0]*a+r[4]*o+r[8]*s+r[12]*i,n[1]=r[1]*a+r[5]*o+r[9]*s+r[13]*i,n[2]=r[2]*a+r[6]*o+r[10]*s+r[14]*i,n[3]=r[3]*a+r[7]*o+r[11]*s+r[15]*i,vB(t=n,4),t):this.transformAsPoint(e,t)}},{key:"transformAsPoint",value:function(e,t){switch(e.length){case 2:t=EB(t||[-0,-0],e,this);break;case 3:t=DB(t||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return vB(t,e.length),t}},{key:"transformAsVector",value:function(e,t){switch(e.length){case 2:t=CB(t||[-0,-0],e,this);break;case 3:t=BB(t||[-0,-0,-0],e,this);break;default:throw new Error("Illegal vector")}return vB(t,e.length),t}},{key:"makeRotationX",value:function(e){return this.identity().rotateX(e)}},{key:"makeTranslation",value:function(e,t,n){return this.identity().translate([e,t,n])}},{key:"transformPoint",value:function(e,t){return AB("Matrix4.transformPoint","3.0"),this.transformAsPoint(e,t)}},{key:"transformVector",value:function(e,t){return AB("Matrix4.transformVector","3.0"),this.transformAsPoint(e,t)}},{key:"transformDirection",value:function(e,t){return AB("Matrix4.transformDirection","3.0"),this.transformAsVector(e,t)}}],[{key:"IDENTITY",get:function(){return XB.IDENTITY=XB.IDENTITY||Object.freeze(new c(WB)),XB.IDENTITY}},{key:"ZERO",get:function(){return XB.ZERO=XB.ZERO||Object.freeze(new c(JB)),XB.ZERO}},{key:"_computeInfinitePerspectiveOffCenter",value:function(e,t,n,i,r,a){var o=2*a/(r-i),s=(n+t)/(n-t),r=(r+i)/(r-i),i=-2*a;return e[0]=2*a/(n-t),e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=o,e[6]=0,e[7]=0,e[8]=s,e[9]=r,e[10]=-1,e[11]=-1,e[12]=0,e[13]=0,e[14]=i,e[15]=0,e}}]),c}();function KB(){var e=new bB(4);return bB!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e[3]=1,e}function ZB(e,t,n){n*=.5;var i=Math.sin(n);e[0]=i*t[0],e[1]=i*t[1],e[2]=i*t[2],e[3]=Math.cos(n)}function $B(e,t,n){var i=t[0],r=t[1],a=t[2],t=t[3],o=n[0],s=n[1],l=n[2],n=n[3];e[0]=i*n+t*o+r*l-a*s,e[1]=r*n+t*s+a*o-i*l,e[2]=a*n+t*l+i*s-r*o,e[3]=t*n-i*o-r*s-a*l}function e_(e,t,n,i){var r,a,o=t[0],s=t[1],l=t[2],t=t[3],u=n[0],c=n[1],h=n[2],n=n[3],d=o*u+s*c+l*h+t*n;d<0&&(d=-d,u=-u,c=-c,h=-h,n=-n),d=wB<1-d?(d=Math.acos(d),r=Math.sin(d),a=Math.sin((1-i)*d)/r,Math.sin(i*d)/r):(a=1-i,i),e[0]=a*o+d*u,e[1]=a*s+d*c,e[2]=a*l+d*h,e[3]=a*t+d*n}function t_(e,t){var n,i,r,a=t[0]+t[4]+t[8];return 0<a?(r=Math.sqrt(a+1),e[3]=.5*r,e[0]=(t[5]-t[7])*(r=.5/r),e[1]=(t[6]-t[2])*r,e[2]=(t[1]-t[3])*r):(t[4]>t[a=0]&&(a=1),n=((a=t[8]>t[3*a+a]?2:a)+1)%3,i=(a+2)%3,r=Math.sqrt(t[3*a+a]-t[3*n+n]-t[3*i+i]+1),e[a]=.5*r,e[3]=(t[3*n+i]-t[3*i+n])*(r=.5/r),e[n]=(t[3*n+a]+t[3*a+n])*r,e[i]=(t[3*i+a]+t[3*a+i])*r),e}var n_,i_,r_,a_=function(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e},o_=function(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e},s_=function(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3]},l_=function(e,t,n,i){var r=t[0],a=t[1],o=t[2],t=t[3];return e[0]=r+i*(n[0]-r),e[1]=a+i*(n[1]-a),e[2]=o+i*(n[2]-o),e[3]=t+i*(n[3]-t),e},u_=function(e){var t=e[0],n=e[1],i=e[2],e=e[3];return Math.hypot(t,n,i,e)},c_=function(e){var t=e[0],n=e[1],i=e[2],e=e[3];return t*t+n*n+i*i+e*e},h_=function(e,t){var n=t[0],i=t[1],r=t[2],t=t[3],a=n*n+i*i+r*r+t*t;return 0<a&&(a=1/Math.sqrt(a)),e[0]=n*a,e[1]=i*a,e[2]=r*a,e[3]=t*a,e},d_=(n_=_B(),i_=TB(1,0,0),r_=TB(0,1,0),function(e,t,n){var i,r,a,o,s,l=SB(t,n);return l<-.999999?(IB(n_,i_,t),kB(n_)<1e-6&&IB(n_,r_,t),a=(r=i=n_)[0],o=r[1],s=r[2],0<(a=a*a+o*o+s*s)&&(a=1/Math.sqrt(a)),i[0]=r[0]*a,i[1]=r[1]*a,i[2]=r[2]*a,ZB(e,n_,Math.PI),e):.999999<l?(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e):(IB(n_,t,n),e[0]=n_[0],e[1]=n_[1],e[2]=n_[2],e[3]=1+l,h_(e,e))}),p_=(KB(),KB(),jl=new bB(9),bB!=Float32Array&&(jl[1]=0,jl[2]=0,jl[3]=0,jl[5]=0,jl[6]=0,jl[7]=0),jl[0]=1,jl[4]=1,[0,0,0,jl[8]=1]),f_=function(){y(o,fB);var a=C(o);function o(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:1;return te(this,o),e=a.call(this,-0,-0,-0,-0),Array.isArray(t)&&1===arguments.length?e.copy(t):e.set(t,n,i,r),e}return A(o,[{key:"copy",value:function(e){return this[0]=e[0],this[1]=e[1],this[2]=e[2],this[3]=e[3],this.check()}},{key:"set",value:function(e,t,n,i){return this[0]=e,this[1]=t,this[2]=n,this[3]=i,this.check()}},{key:"fromMatrix3",value:function(e){return t_(this,e),this.check()}},{key:"identity",value:function(){var e;return(e=this)[0]=0,e[1]=0,e[2]=0,e[3]=1,this.check()}},{key:"fromAxisRotation",value:function(e,t){return ZB(this,e,t),this.check()}},{key:"setAxisAngle",value:function(e,t){return this.fromAxisRotation(e,t)}},{key:"ELEMENTS",get:function(){return 4}},{key:"x",get:function(){return this[0]},set:function(e){this[0]=mB(e)}},{key:"y",get:function(){return this[1]},set:function(e){this[1]=mB(e)}},{key:"z",get:function(){return this[2]},set:function(e){this[2]=mB(e)}},{key:"w",get:function(){return this[3]},set:function(e){this[3]=mB(e)}},{key:"len",value:function(){return u_(this)}},{key:"lengthSquared",value:function(){return c_(this)}},{key:"dot",value:function(e,t){if(void 0!==t)throw new Error("Quaternion.dot only takes one argument");return s_(this,e)}},{key:"rotationTo",value:function(e,t){return d_(this,e,t),this.check()}},{key:"add",value:function(e,t){if(void 0!==t)throw new Error("Quaternion.add only takes one argument");return a_(this,this,e),this.check()}},{key:"calculateW",value:function(){var e,t,n,i;return n=(t=e=this)[0],i=t[1],t=t[2],e[0]=n,e[1]=i,e[2]=t,e[3]=Math.sqrt(Math.abs(1-n*n-i*i-t*t)),this.check()}},{key:"conjugate",value:function(){var e,t;return t=e=this,e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e[3]=t[3],this.check()}},{key:"invert",value:function(){var e,t,n,i,r,a;return n=(t=e=this)[0],i=t[1],r=t[2],t=t[3],a=(a=n*n+i*i+r*r+t*t)?1/a:0,e[0]=-n*a,e[1]=-i*a,e[2]=-r*a,e[3]=t*a,this.check()}},{key:"lerp",value:function(e,t,n){return l_(this,e,t,n),this.check()}},{key:"multiplyRight",value:function(e,t){return nB(!t),$B(this,this,e),this.check()}},{key:"multiplyLeft",value:function(e,t){return nB(!t),$B(this,e,this),this.check()}},{key:"normalize",value:function(){var e=this.len(),t=0<e?1/e:0;return this[0]=this[0]*t,this[1]=this[1]*t,this[2]=this[2]*t,this[3]=this[3]*t,0===e&&(this[3]=1),this.check()}},{key:"rotateX",value:function(e){var t,n,i,r,a,o;return e=e,e*=.5,i=(n=t=this)[0],r=n[1],a=n[2],n=n[3],o=Math.sin(e),e=Math.cos(e),t[0]=i*e+n*o,t[1]=r*e+a*o,t[2]=a*e-r*o,t[3]=n*e-i*o,this.check()}},{key:"rotateY",value:function(e){var t,n,i,r,a,o;return e=e,e*=.5,i=(n=t=this)[0],r=n[1],a=n[2],n=n[3],o=Math.sin(e),e=Math.cos(e),t[0]=i*e-a*o,t[1]=r*e+n*o,t[2]=a*e+i*o,t[3]=n*e-r*o,this.check()}},{key:"rotateZ",value:function(e){var t,n,i,r,a,o;return e=e,e*=.5,i=(n=t=this)[0],r=n[1],a=n[2],n=n[3],o=Math.sin(e),e=Math.cos(e),t[0]=i*e+r*o,t[1]=r*e-i*o,t[2]=a*e+n*o,t[3]=n*e-a*o,this.check()}},{key:"scale",value:function(e){return o_(this,this,e),this.check()}},{key:"slerp",value:function(e,t,n){switch(arguments.length){case 1:var i=arguments[0],r=i.start;e=void 0===r?p_:r,t=i.target,n=i.ratio;break;case 2:r=Array.prototype.slice.call(arguments);t=r[0],n=r[1],e=this}return e_(this,e,t,n),this.check()}},{key:"transformVector4",value:function(e){var t,n,i,r,a,o,s,l,u,c,h,d=1<arguments.length&&void 0!==arguments[1]?arguments[1]:e;return t=d,n=this,i=(e=e)[0],r=e[1],a=e[2],o=n[0],s=n[1],l=n[2],u=(n=n[3])*i+s*a-l*r,c=n*r+l*i-o*a,h=n*a+o*r-s*i,i=-o*i-s*r-l*a,t[0]=u*n+i*-o+c*-l-h*-s,t[1]=c*n+i*-s+h*-o-u*-l,t[2]=h*n+i*-l+u*-s-c*-o,t[3]=e[3],vB(d,4)}},{key:"lengthSq",value:function(){return this.lengthSquared()}},{key:"setFromAxisAngle",value:function(e,t){return this.setAxisAngle(e,t)}},{key:"premultiply",value:function(e,t){return this.multiplyLeft(e,t)}},{key:"multiply",value:function(e,t){return this.multiplyRight(e,t)}}]),o}(),m_=.1,v_=1e-12,g_=1e-15,A_=(Math.PI,Math.PI,Math.PI,Math.PI,function(e){return e}),y_=new B;function w_(e,t){return function(e,t,n){return n=2<arguments.length&&void 0!==n?n:A_,sB(e)?(t[0]=n(e[0]),t[1]=n(e[1]),t[2]=e[2]):"longitude"in e?(t[0]=n(e.longitude),t[1]=n(e.latitude),t[2]=e.height):(t[0]=n(e.x),t[1]=n(e.y),t[2]=e.z),t}(e,1<arguments.length&&void 0!==t?t:y_,aB._cartographicRadians?A_:uB)}function b_(e,t){return function(e,t,n){return n=2<arguments.length&&void 0!==n?n:A_,sB(t)?(t[0]=n(e[0]),t[1]=n(e[1]),t[2]=e[2]):"longitude"in t?(t.longitude=n(e[0]),t.latitude=n(e[1]),t.height=e[2]):(t.x=n(e[0]),t.y=n(e[1]),t.z=e[2]),t}(e,t,aB._cartographicRadians?A_:cB)}var x_=new B,E_=new B,C_=new B;var B_=new B,__={up:{south:"east",north:"west",west:"south",east:"north"},down:{south:"west",north:"east",west:"north",east:"south"},south:{up:"west",down:"east",west:"down",east:"up"},north:{up:"east",down:"west",west:"up",east:"down"},west:{up:"north",down:"south",north:"down",south:"up"},east:{up:"south",down:"north",north:"up",south:"down"}},M_={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},T_={east:new B,north:new B,up:new B,west:new B,south:new B,down:new B},S_=new B,I_=new B,D_=new B;function P_(e,t,n,i,r,a){var o,s,l,u,c,h,d=__[t]&&__[t][n],d=(nB(d&&(!i||i===d)),B_.copy(r));return dB(d.x,0,1e-14)&&dB(d.y,0,1e-14)?(r=Math.sign(d.z),l=S_.fromArray(M_[t]),"east"!==t&&"west"!==t&&l.scale(r),o=I_.fromArray(M_[n]),"east"!==n&&"west"!==n&&o.scale(r),s=D_.fromArray(M_[i]),"east"!==i&&"west"!==i&&s.scale(r)):(r=T_.up,c=T_.north,(u=T_.east).set(-d.y,d.x,0).normalize(),e.geodeticSurfaceNormal(d,r),c.copy(r).cross(u),e=T_.west,h=T_.south,T_.down.copy(r).scale(-1),e.copy(u).scale(-1),h.copy(c).scale(-1),l=T_[t],o=T_[n],s=T_[i]),a[0]=l.x,a[1]=l.y,a[2]=l.z,a[3]=0,a[4]=o.x,a[5]=o.y,a[6]=o.z,a[7]=0,a[8]=s.x,a[9]=s.y,a[10]=s.z,a[11]=0,a[12]=d.x,a[13]=d.y,a[14]=d.z,a[15]=1,a}var k_,L_=new B,R_=new B,F_=new B,O_=new B,N_=new B,G_=new B,U_=function(){function i(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;te(this,i),nB(0<=e),nB(0<=t),nB(0<=n),this.radii=new B(e,t,n),this.radiiSquared=new B(e*e,t*t,n*n),this.radiiToTheFourth=new B(e*e*e*e,t*t*t*t,n*n*n*n),this.oneOverRadii=new B(0===e?0:1/e,0===t?0:1/t,0===n?0:1/n),this.oneOverRadiiSquared=new B(0===e?0:1/(e*e),0===t?0:1/(t*t),0===n?0:1/(n*n)),this.minimumRadius=Math.min(e,t,n),this.maximumRadius=Math.max(e,t,n),this.centerToleranceSquared=m_,0!==this.radiiSquared.z&&(this.squaredXOverSquaredZ=this.radiiSquared.x/this.radiiSquared.z),Object.freeze(this)}return A(i,[{key:"equals",value:function(e){return this===e||Boolean(e&&this.radii.equals(e.radii))}},{key:"toString",value:function(){return this.radii.toString()}},{key:"cartographicToCartesian",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],n=R_,i=F_,r=N(e,3)[2],e=(this.geodeticSurfaceNormalCartographic(e,n),i.copy(this.radiiSquared).scale(n),Math.sqrt(n.dot(i)));return i.scale(1/e),n.scale(r),i.add(n),i.to(t)}},{key:"cartesianToCartographic",value:function(e){var t,n,i=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],e=(G_.from(e),this.scaleToGeodeticSurface(G_,O_));if(e)return t=this.geodeticSurfaceNormal(e,R_),(n=N_).copy(G_).subtract(e),b_([Math.atan2(t.y,t.x),Math.asin(t.z),Math.sign(SB(n,G_))*MB(n)],i)}},{key:"eastNorthUpToFixedFrame",value:function(e){return P_(this,"east","north","up",e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:new YB)}},{key:"localFrameToFixedFrame",value:function(e,t,n,i){return P_(this,e,t,n,i,4<arguments.length&&void 0!==arguments[4]?arguments[4]:new YB)}},{key:"geocentricSurfaceNormal",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return L_.from(e).normalize().to(t)}},{key:"geodeticSurfaceNormalCartographic",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],e=w_(e),n=e[0],e=e[1],i=Math.cos(e);return L_.set(i*Math.cos(n),i*Math.sin(n),Math.sin(e)).normalize(),L_.to(t)}},{key:"geodeticSurfaceNormal",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return L_.from(e).scale(this.oneOverRadiiSquared).normalize().to(t)}},{key:"scaleToGeodeticSurface",value:function(e,t){return function(e,t,n){var n=2<arguments.length&&void 0!==n?n:new B,i=t.oneOverRadii,r=t.oneOverRadiiSquared,t=t.centerToleranceSquared,a=(x_.from(e),e.x),o=e.y,s=e.z,l=i.x,u=i.y,i=i.z,c=a*a*l*l,h=o*o*u*u,d=s*s*i*i,a=c+h+d,l=Math.sqrt(1/a);if(Number.isFinite(l)){o=E_;if(o.copy(e).scale(l),a<t)return o.to(n);var p=r.x,f=r.y,m=r.z,u=C_,v=(u.set(o.x*p*2,o.y*f*2,o.z*m*2),(1-l)*e.len()/(.5*u.len())),g=0;do{var A,y,w,b,x=(A=1/(1+(v-=g)*p))*A,E=(y=1/(1+v*f))*y,C=(w=1/(1+v*m))*w,g=(b=c*x+h*E+d*C-1)/(-2*(c*(x*A)*p+h*(E*y)*f+d*(C*w)*m))}while(Math.abs(b)>v_);return x_.scale([A,y,w]).to(n)}}(e,this,t)}},{key:"scaleToGeocentricSurface",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],e=(O_.from(e),O_.x),n=O_.y,i=O_.z,r=this.oneOverRadiiSquared,e=1/Math.sqrt(e*e*r.x+n*n*r.y+i*i*r.z);return O_.multiplyScalar(e).to(t)}},{key:"transformPositionToScaledSpace",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return O_.from(e).scale(this.oneOverRadii).to(t)}},{key:"transformPositionFromScaledSpace",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0];return O_.from(e).scale(this.radii).to(t)}},{key:"getSurfaceNormalIntersectionWithZAxis",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[0,0,0],e=(nB(dB(this.radii.x,this.radii.y,g_)),nB(0<this.radii.z),O_.from(e),O_.z*(1-this.squaredXOverSquaredZ));if(!(Math.abs(e)>=this.radii.z-t))return O_.set(0,0,e).to(n)}}],[{key:"WGS84",get:function(){return k_=k_||new i(6378137,6378137,6356752.314245179)}}]),i}(),z_=A(function e(t,n,i){te(this,e),l(this,"item",void 0),l(this,"previous",void 0),l(this,"next",void 0),this.item=t,this.previous=n,this.next=i}),H_=function(){function e(){te(this,e),l(this,"head",null),l(this,"tail",null),l(this,"_length",0)}return A(e,[{key:"length",get:function(){return this._length}},{key:"add",value:function(e){e=new z_(e,this.tail,null);return this.tail?this.tail.next=e:this.head=e,this.tail=e,++this._length,e}},{key:"remove",value:function(e){e&&(e.previous&&e.next?(e.previous.next=e.next,e.next.previous=e.previous):e.previous?(e.previous.next=null,this.tail=e.previous):e.next?(e.next.previous=null,this.head=e.next):(this.head=null,this.tail=null),e.next=null,e.previous=null,--this._length)}},{key:"splice",value:function(e,t){e!==t&&(this.remove(t),this._insert(e,t))}},{key:"_insert",value:function(e,t){var n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e,++this._length}}]),e}();function Q_(e){return null!=e}var V_=function(){function e(){te(this,e),l(this,"_list",void 0),l(this,"_sentinel",void 0),l(this,"_trimTiles",void 0),this._list=new H_,this._sentinel=this._list.add("sentinel"),this._trimTiles=!1}return A(e,[{key:"reset",value:function(){this._list.splice(this._list.tail,this._sentinel)}},{key:"touch",value:function(e){e=e._cacheNode;Q_(e)&&this._list.splice(this._sentinel,e)}},{key:"add",value:function(e,t,n){Q_(t._cacheNode)||(t._cacheNode=this._list.add(t),n&&n(e,t))}},{key:"unloadTile",value:function(e,t,n){var i=t._cacheNode;Q_(i)&&(this._list.remove(i),t._cacheNode=void 0,n)&&n(e,t)}},{key:"unloadTiles",value:function(e,t){for(var n=this._trimTiles,i=(this._trimTiles=!1,this._list),r=1024*e.maximumMemoryUsage*1024,a=this._sentinel,o=i.head;o!==a&&(e.gpuMemoryUsageInBytes>r||n);){var s=o.item,o=o.next;this.unloadTile(e,s,t)}}},{key:"trim",value:function(){this._trimTiles=!0}}]),e}();var j_=Object.freeze({OUTSIDE:-1,INTERSECTING:0,INSIDE:1}),W_=(new B,new B,new B),J_=new B,q_=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[0,0,0],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;te(this,n),this.radius=-0,this.center=new B,this.fromCenterRadius(e,t)}return A(n,[{key:"fromCenterRadius",value:function(e,t){return this.center.from(e),this.radius=t,this}},{key:"fromCornerPoints",value:function(e,t){return t=W_.from(t),this.center=(new B).from(e).add(t).scale(.5),this.radius=this.center.distance(t),this}},{key:"equals",value:function(e){return this===e||Boolean(e)&&this.center.equals(e.center)&&this.radius===e.radius}},{key:"clone",value:function(){return new n(this.center,this.radius)}},{key:"union",value:function(e){var t=this.center,n=this.radius,i=e.center,r=e.radius,i=W_.copy(i).subtract(t),a=i.magnitude();return a+r<=n?this.clone():a+n<=r?e.clone():(e=.5*(n+a+r),J_.copy(i).scale((e-n)/a).add(t),this.center.copy(J_),this.radius=e,this)}},{key:"expand",value:function(e){e=(e=W_.from(e)).subtract(this.center).magnitude();return e>this.radius&&(this.radius=e),this}},{key:"transform",value:function(e){this.center.transform(e);t=W_,i=(n=e)[0],r=e[1],a=e[2],o=e[4],s=e[5],l=e[6],u=e[8],c=e[9],n=e[10],t[0]=Math.hypot(i,r,a),t[1]=Math.hypot(o,s,l),t[2]=Math.hypot(u,c,n);var t,n,i,r,a,o,s,l,u,c,e=t;return this.radius=Math.max(e[0],Math.max(e[1],e[2]))*this.radius,this}},{key:"distanceSquaredTo",value:function(e){e=this.distanceTo(e);return e*e}},{key:"distanceTo",value:function(e){e=(e=W_.from(e)).subtract(this.center);return Math.max(0,e.len()-this.radius)}},{key:"intersectPlane",value:function(e){var t=this.center,n=this.radius,t=e.normal.dot(t)+e.distance;return t<-n?j_.OUTSIDE:t<n?j_.INTERSECTING:j_.INSIDE}}]),n}(),X_=new B,Y_=new B,K_=new B,Z_=new B,$_=new B,eM=new B,tM=new B,nM=0,iM=1,rM=2,aM=3,oM=4,sM=5,lM=6,uM=7,cM=8,hM=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[0,0,0],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0,0,0,0,0,0,0];te(this,n),this.center=(new B).from(e),this.halfAxes=new QB(t)}return A(n,[{key:"halfSize",get:function(){var e=this.halfAxes.getColumn(0),t=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2);return[new B(e).len(),new B(t).len(),new B(n).len()]}},{key:"quaternion",get:function(){var e=this.halfAxes.getColumn(0),t=this.halfAxes.getColumn(1),n=this.halfAxes.getColumn(2),e=new B(e).normalize(),t=new B(t).normalize(),n=new B(n).normalize();return(new f_).fromMatrix3(new QB([].concat(J(e),J(t),J(n))))}},{key:"fromCenterHalfSizeQuaternion",value:function(e,t,n){n=new f_(n),n=(new QB).fromQuaternion(n);return n[0]=n[0]*t[0],n[1]=n[1]*t[0],n[2]=n[2]*t[0],n[3]=n[3]*t[1],n[4]=n[4]*t[1],n[5]=n[5]*t[1],n[6]=n[6]*t[2],n[7]=n[7]*t[2],n[8]=n[8]*t[2],this.center=(new B).from(e),this.halfAxes=n,this}},{key:"clone",value:function(){return new n(this.center,this.halfAxes)}},{key:"equals",value:function(e){return this===e||Boolean(e)&&this.center.equals(e.center)&&this.halfAxes.equals(e.halfAxes)}},{key:"getBoundingSphere",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:new q_,t=this.halfAxes,n=t.getColumn(0,K_),i=t.getColumn(1,Z_),t=t.getColumn(2,$_),n=X_.copy(n).add(i).add(t);return e.center.copy(this.center),e.radius=n.magnitude(),e}},{key:"intersectPlane",value:function(e){var t=this.center,n=e.normal,i=this.halfAxes,r=n.x,a=n.y,o=n.z,r=Math.abs(r*i[nM]+a*i[iM]+o*i[rM])+Math.abs(r*i[aM]+a*i[oM]+o*i[sM])+Math.abs(r*i[lM]+a*i[uM]+o*i[cM]),a=n.dot(t)+e.distance;return a<=-r?j_.OUTSIDE:r<=a?j_.INSIDE:j_.INTERSECTING}},{key:"distanceTo",value:function(e){return Math.sqrt(this.distanceSquaredTo(e))}},{key:"distanceSquaredTo",value:function(e){var e=Y_.from(e).subtract(this.center),t=this.halfAxes,n=t.getColumn(0,K_),i=t.getColumn(1,Z_),t=t.getColumn(2,$_),r=n.magnitude(),a=i.magnitude(),o=t.magnitude(),s=(n.normalize(),i.normalize(),t.normalize(),0),n=Math.abs(e.dot(n))-r;return 0<n&&(s+=n*n),0<(n=Math.abs(e.dot(i))-a)&&(s+=n*n),0<(n=Math.abs(e.dot(t))-o)&&(s+=n*n),s}},{key:"computePlaneDistances",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[-0,-0],i=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,a=this.center,o=this.halfAxes,s=o.getColumn(0,K_),l=o.getColumn(1,Z_),o=o.getColumn(2,$_),u=eM.copy(s).add(l).add(o).add(a),c=tM.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r);return u.copy(a).add(s).add(l).subtract(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),u.copy(a).add(s).subtract(l).add(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),u.copy(a).add(s).subtract(l).subtract(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),a.copy(u).subtract(s).add(l).add(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),a.copy(u).subtract(s).add(l).subtract(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),a.copy(u).subtract(s).subtract(l).add(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),a.copy(u).subtract(s).subtract(l).subtract(o),c.copy(u).subtract(e),h=t.dot(c),i=Math.min(h,i),r=Math.max(h,r),n[0]=i,n[1]=r,n}},{key:"transform",value:function(e){this.center.transformAsPoint(e);var t=this.halfAxes.getColumn(0,K_),n=(t.transformAsPoint(e),this.halfAxes.getColumn(1,Z_)),i=(n.transformAsPoint(e),this.halfAxes.getColumn(2,$_));return i.transformAsPoint(e),this.halfAxes=new QB([].concat(J(t),J(n),J(i))),this}},{key:"getTransform",value:function(){throw new Error("not implemented")}}]),n}(),dM=new B,pM=new B,fM=function(){function n(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[0,0,1],t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0;te(this,n),this.normal=new B,this.distance=-0,this.fromNormalDistance(e,t)}return A(n,[{key:"fromNormalDistance",value:function(e,t){return nB(Number.isFinite(t)),this.normal.from(e).normalize(),this.distance=t,this}},{key:"fromPointNormal",value:function(e,t){e=dM.from(e),this.normal.from(t).normalize();t=-this.normal.dot(e);return this.distance=t,this}},{key:"fromCoefficients",value:function(e,t,n,i){return this.normal.set(e,t,n),nB(dB(this.normal.len(),1)),this.distance=i,this}},{key:"clone",value:function(e){return new n(this.normal,this.distance)}},{key:"equals",value:function(e){return dB(this.distance,e.distance)&&dB(this.normal,e.normal)}},{key:"getPointDistance",value:function(e){return this.normal.dot(e)+this.distance}},{key:"transform",value:function(e){var t=pM.copy(this.normal).transformAsVector(e).normalize(),e=this.normal.scale(-this.distance).transform(e);return this.fromPointNormal(e,t)}},{key:"projectPointOntoPlane",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:[0,0,0],n=(e=dM.from(e),this.getPointDistance(e)),n=pM.copy(this.normal).scale(n);return e.subtract(n).to(t)}}]),n}(),mM=[new B([1,0,0]),new B([0,1,0]),new B([0,0,1])],vM=new B,gM=new B,AM=(new fM(new B(1,0,0),0),function(){function s(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:[];te(this,s),this.planes=e,nB(this.planes.every(function(e){return e instanceof fM}))}return A(s,[{key:"fromBoundingSphere",value:function(e){this.planes.length=2*mM.length;var t,n=e.center,i=e.radius,r=0,a=q(mM);try{for(a.s();!(t=a.n()).done;){var o=t.value,s=this.planes[r],l=this.planes[r+1],s=s||(this.planes[r]=new fM),l=l||(this.planes[r+1]=new fM),u=vM.copy(o).scale(-i).add(n),c=(o.dot(u),s.fromPointNormal(u,o),vM.copy(o).scale(i).add(n)),h=gM.copy(o).negate();h.dot(c),l.fromPointNormal(c,h),r+=2}}catch(e){a.e(e)}finally{a.f()}return this}},{key:"computeVisibility",value:function(e){nB(e);var t,n=j_.INSIDE,i=q(this.planes);try{for(i.s();!(t=i.n()).done;){var r=t.value;switch(e.intersectPlane(r)){case j_.OUTSIDE:return j_.OUTSIDE;case j_.INTERSECTING:n=j_.INTERSECTING}}}catch(e){i.e(e)}finally{i.f()}return n}},{key:"computeVisibilityWithPlaneMask",value:function(e,t){if(nB(e,"boundingVolume is required."),nB(Number.isFinite(t),"parentPlaneMask is required."),t===s.MASK_OUTSIDE||t===s.MASK_INSIDE)return t;for(var n=s.MASK_INSIDE,i=this.planes,r=0;r<this.planes.length;++r){var a=r<31?1<<r:0;if(!(r<31&&0==(t&a))){var o=i[r],o=e.intersectPlane(o);if(o===j_.OUTSIDE)return s.MASK_OUTSIDE;o===j_.INTERSECTING&&(n|=a)}}return n}}],[{key:"MASK_OUTSIDE",get:function(){return 4294967295}},{key:"MASK_INSIDE",get:function(){return 0}},{key:"MASK_INDETERMINATE",get:function(){return 2147483647}}]),s}()),yM=new B,wM=new B,bM=new B,xM=new B,EM=new B,CM=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};te(this,t),e=g({near:1,far:5e8},e),this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near,this._near=this.near,this.far=e.far,this._far=this.far,this._cullingVolume=new AM([new fM,new fM,new fM,new fM,new fM,new fM]),this._perspectiveMatrix=new YB,this._infinitePerspective=new YB}return A(t,[{key:"clone",value:function(){return new t({right:this.right,left:this.left,top:this.top,bottom:this.bottom,near:this.near,far:this.far})}},{key:"equals",value:function(e){return e&&e instanceof t&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far}},{key:"projectionMatrix",get:function(){return BM(this),this._perspectiveMatrix}},{key:"infiniteProjectionMatrix",get:function(){return BM(this),this._infinitePerspective}},{key:"computeCullingVolume",value:function(e,t,n){nB(e,"position is required."),nB(t,"direction is required."),nB(n,"up is required.");var i=this._cullingVolume.planes,r=(n=yM.copy(n).normalize(),wM.copy(t).cross(n).normalize()),a=bM.copy(t).multiplyByScalar(this.near).add(e),o=xM.copy(t).multiplyByScalar(this.far).add(e),s=EM;return s.copy(r).multiplyByScalar(this.left).add(a).subtract(e).cross(n),i[0].fromPointNormal(e,s),s.copy(r).multiplyByScalar(this.right).add(a).subtract(e).cross(n).negate(),i[1].fromPointNormal(e,s),s.copy(n).multiplyByScalar(this.bottom).add(a).subtract(e).cross(r).negate(),i[2].fromPointNormal(e,s),s.copy(n).multiplyByScalar(this.top).add(a).subtract(e).cross(r),i[3].fromPointNormal(e,s),s=(new B).copy(t),i[4].fromPointNormal(a,s),s.negate(),i[5].fromPointNormal(o,s),this._cullingVolume}},{key:"getPixelDimensions",value:function(e,t,n,i){BM(this),nB(Number.isFinite(e)&&Number.isFinite(t)),nB(0<e),nB(0<t),nB(0<n),nB(i);var r=1/this.near,t=2*n*(this.top*r)/t,r=this.right*r;return i.x=2*n*r/e,i.y=t,i}}]),t}();function BM(e){nB(Number.isFinite(e.right)&&Number.isFinite(e.left)&&Number.isFinite(e.top)&&Number.isFinite(e.bottom)&&Number.isFinite(e.near)&&Number.isFinite(e.far));var t=e.top,n=e.bottom,i=e.right,r=e.left,a=e.near,o=e.far;t===e._top&&n===e._bottom&&r===e._left&&i===e._right&&a===e._near&&o===e._far||(nB(0<e.near&&e.near<e.far,"near must be greater than zero and less than far."),e._left=r,e._right=i,e._top=t,e._bottom=n,e._near=a,e._far=o,e._perspectiveMatrix=(new YB).frustum({left:r,right:i,bottom:n,top:t,near:a,far:o}),e._infinitePerspective=(new YB).frustum({left:r,right:i,bottom:n,top:t,near:a,far:1/0}))}var _M=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};te(this,t),e=g({near:1,far:5e8,xOffset:0,yOffset:0},e),this._offCenterFrustum=new CM,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near,this._near=this.near,this.far=e.far,this._far=this.far,this.xOffset=e.xOffset,this._xOffset=this.xOffset,this.yOffset=e.yOffset,this._yOffset=this.yOffset}return A(t,[{key:"clone",value:function(){return new t({aspectRatio:this.aspectRatio,fov:this.fov,near:this.near,far:this.far})}},{key:"equals",value:function(e){return null!=e&&e instanceof t&&(MM(this),MM(e),this.fov===e.fov)&&this.aspectRatio===e.aspectRatio&&this.near===e.near&&this.far===e.far&&this._offCenterFrustum.equals(e._offCenterFrustum)}},{key:"projectionMatrix",get:function(){return MM(this),this._offCenterFrustum.projectionMatrix}},{key:"infiniteProjectionMatrix",get:function(){return MM(this),this._offCenterFrustum.infiniteProjectionMatrix}},{key:"fovy",get:function(){return MM(this),this._fovy}},{key:"sseDenominator",get:function(){return MM(this),this._sseDenominator}},{key:"computeCullingVolume",value:function(e,t,n){return MM(this),this._offCenterFrustum.computeCullingVolume(e,t,n)}},{key:"getPixelDimensions",value:function(e,t,n,i){return MM(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i)}}]),t}();function MM(e){nB(Number.isFinite(e.fov)&&Number.isFinite(e.aspectRatio)&&Number.isFinite(e.near)&&Number.isFinite(e.far));var t=e._offCenterFrustum;e.fov===e._fov&&e.aspectRatio===e._aspectRatio&&e.near===e._near&&e.far===e._far&&e.xOffset===e._xOffset&&e.yOffset===e._yOffset||(nB(0<=e.fov&&e.fov<Math.PI),nB(0<e.aspectRatio),nB(0<=e.near&&e.near<e.far),e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:2*Math.atan(Math.tan(.5*e.fov)/e.aspectRatio),e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset,t.top=e.near*Math.tan(.5*e._fovy),t.bottom=-t.top,t.right=e.aspectRatio*t.top,t.left=-t.right,t.near=e.near,t.far=e.far,t.right+=e.xOffset,t.left+=e.xOffset,t.top+=e.yOffset,t.bottom+=e.yOffset)}new B,new B,new B,new B,new B,new B,new B,new B,new B,new B,new B,new B,new QB,new QB,new QB,new QB,new QB,new B,new B,new B,new B,new B,new QB,new QB,new QB;var TM=new B,SM=new B,IM=new AM([new fM,new fM,new fM,new fM,new fM,new fM]);function DM(e,t){var n,i=e.cameraDirection,r=e.cameraUp,a=e.height,o=e.distanceScales.metersPerUnit,s=e.unprojectPosition(e.center),s=U_.WGS84.cartographicToCartesian(s,new B),l=U_.WGS84.eastNorthUpToFixedFrame(s),u=e.unprojectPosition(e.cameraPosition),u=U_.WGS84.cartographicToCartesian(u,new B),i=new B(l.transformAsVector(new B(i).scale(o))).normalize(),l=new B(l.transformAsVector(new B(r).scale(o))).normalize(),c=e,h=s,d=c.getFrustumPlanes(),p=0;for(n in d){var f=d[n],m=f.normal.dot(c.center),f=(SM.copy(f.normal).scale(f.distance-m).add(c.center),c.unprojectPosition(SM)),m=U_.WGS84.cartographicToCartesian(f,new B);IM.planes[p++].fromPointNormal(m,TM.copy(h).subtract(m))}return{camera:{position:u,direction:i,up:l},viewport:e,height:a,cullingVolume:IM,frameNumber:t,sseDenominator:1.15}}var PM=6356752.314245179,kM=new B;function LM(e){var t,n=e.halfAxes,i=e.radius,r=e.width,e=e.height;return n?((n=n).getColumn(0,kM),t=n.getColumn(1),n=n.getColumn(2),t=kM.add(t).add(n).len(),Math.log2(PM/t)):i?Math.log2(PM/i):e&&r?(Math.log2(6378137/r)+Math.log2(6378137/e))/2:1}var RM=0,FM=1,OM=3,NM=4,GM=5,UM={ADD:1,REPLACE:2},zM={EMPTY:"empty",SCENEGRAPH:"scenegraph",POINTCLOUD:"pointcloud",MESH:"mesh"},HM={I3S:"I3S",TILES3D:"TILES3D"},QM={GEOMETRIC_ERROR:"geometricError",MAX_SCREEN_THRESHOLD:"maxScreenThreshold"},VM=1;function jM(e){return null!=e}var WM=new B,JM=new B,qM=new B;function XM(e,t,n){var i,r,a,o,s,l,u,c,h,d,p;if(Vx(e,"3D Tile: boundingVolume must be defined"),e.box)return r=e.box,a=t,c=n,h=new B(r[0],r[1],r[2]),a.transform(h,h),o=[],o=10===r.length?(l=r.slice(3,6),(s=new f_).fromArray(r,6),u=new B([1,0,0]),d=new B([0,1,0]),i=new B([0,0,1]),u.transformByQuaternion(s),u.scale(l[0]),d.transformByQuaternion(s),d.scale(l[1]),i.transformByQuaternion(s),i.scale(l[2]),[].concat(J(u.toArray()),J(d.toArray()),J(i.toArray()))):[].concat(J(r.slice(3,6)),J(r.slice(6,9)),J(r.slice(9,12))),s=a.transformAsVector(o.slice(0,3)),l=a.transformAsVector(o.slice(3,6)),u=a.transformAsVector(o.slice(6,9)),d=new QB([s[0],s[1],s[2],l[0],l[1],l[2],u[0],u[1],u[2]]),jM(c)?(c.center=h,c.halfAxes=d,c):new hM(h,d);if(e.region)return r=(i=N(e.region,6))[0],a=i[1],o=i[2],s=i[3],l=i[4],u=i[5],c=U_.WGS84.cartographicToCartesian([hB(r),hB(s),l],JM),h=U_.WGS84.cartographicToCartesian([hB(o),hB(a),u],qM),d=(new B).addVectors(c,h).multiplyScalar(.5),p=(new B).subVectors(c,h).len()/2,YM([d[0],d[1],d[2],p],new YB);if(e.sphere)return YM(e.sphere,t,n);throw new Error("3D Tile: boundingVolume must contain a sphere, region, or box")}function YM(e,t,n){var i=new B(e[0],e[1],e[2]),t=(t.transform(i,i),t.getScale(WM)),t=Math.max(Math.max(t[0],t[1]),t[2]),e=e[3]*t;return jM(n)?(n.center=i,n.radius=e,n):new q_(i,e)}function KM(e,t){var n;return e.dynamicScreenSpaceError&&e.dynamicScreenSpaceErrorComputedDensity?(n=e.dynamicScreenSpaceErrorComputedDensity,e=e.dynamicScreenSpaceErrorFactor,t=t,t*=n,(1-Math.exp(-t*t))*e):0}function ZM(e,t){var t=t.viewport,t=new t.constructor({longitude:t.longitude,latitude:t.latitude,height:t.height,width:t.width,bearing:t.bearing,zoom:t.zoom,pitch:0}),n=e.header.mbs[1],i=e.header.mbs[0],r=e.header.mbs[2],a=e.header.mbs[3],e=J(e.boundingVolume.center),o=t.unprojectPosition(t.cameraPosition),o=U_.WGS84.cartographicToCartesian(o,new B),s=new B(o).subtract(e).normalize(),l=new YB,u=(U_.WGS84.eastNorthUpToFixedFrame(e,l),new YB(l).invert()),o=new B(o).transform(u),u=Math.sqrt(o[0]*o[0]+o[1]*o[1]),u=u*u/o[2],o=new B([o[0],o[1],u]).transform(l),u=new B(o).subtract(e).normalize(),l=s.cross(u).normalize().scale(a),o=new B(e).add(l),s=U_.WGS84.cartesianToCartographic(o),u=t.project([i,n,r]),a=t.project(s);return new B(u).subtract(a).magnitude()}new B,new B,new YB,new B,new B,new B;var $M=function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0;te(this,t),l(this,"_map",new Map),l(this,"_array",void 0),l(this,"_length",void 0),this._array=new Array(e),this._length=e}return A(t,[{key:"length",get:function(){return this._length},set:function(e){(this._length=e)>this._array.length&&(this._array.length=e)}},{key:"values",get:function(){return this._array}},{key:"get",value:function(e){return Vx(e<this._array.length),this._array[e]}},{key:"set",value:function(e,t){Vx(0<=e),e>=this.length&&(this.length=e+1),this._map.has(this._array[e])&&this._map.delete(this._array[e]),this._array[e]=t,this._map.set(t,e)}},{key:"delete",value:function(e){var t=this._map.get(e);0<=t&&(this._array.splice(t,1),this._map.delete(e),this.length--)}},{key:"peek",value:function(){return this._array[this._length-1]}},{key:"push",value:function(e){var t;this._map.has(e)||(t=this.length++,this._array[t]=e,this._map.set(e,t))}},{key:"pop",value:function(){var e=this._array[--this.length];return this._map.delete(e),e}},{key:"reserve",value:function(e){Vx(0<=e),e>this._array.length&&(this._array.length=e)}},{key:"resize",value:function(e){Vx(0<=e),this.length=e}},{key:"trim",value:function(e){null==e&&(e=this.length),this._array.length=e}},{key:"reset",value:function(){this._array=[],this._map=new Map,this._length=0}},{key:"find",value:function(e){return this._map.has(e)}}]),t}(),eT={loadSiblings:!1,skipLevelOfDetail:!1,maximumScreenSpaceError:2,updateTransforms:!0,onTraversalEnd:function(){},viewportTraversersMap:{},basePath:""},tT=function(){function t(e){te(this,t),l(this,"options",void 0),l(this,"root",void 0),l(this,"requestedTiles",void 0),l(this,"selectedTiles",void 0),l(this,"emptyTiles",void 0),l(this,"_traversalStack",void 0),l(this,"_emptyTraversalStack",void 0),l(this,"_frameNumber",void 0),this.options=g(g({},eT),e),this._traversalStack=new $M,this._emptyTraversalStack=new $M,this._frameNumber=null,this.root=null,this.selectedTiles={},this.requestedTiles={},this.emptyTiles={}}return A(t,[{key:"traverse",value:function(e,t,n){this.root=e,this.options=g(g({},this.options),n),this.reset(),this.updateTile(e,t),this._frameNumber=t.frameNumber,this.executeTraversal(e,t)}},{key:"reset",value:function(){this.requestedTiles={},this.selectedTiles={},this.emptyTiles={},this._traversalStack.reset(),this._emptyTraversalStack.reset()}},{key:"executeTraversal",value:function(e,t){var n=this._traversalStack;for(e._selectionDepth=1,n.push(e);0<n.length;){var i=n.pop(),r=!1,a=(this.canTraverse(i,t)&&i.depth<this.options.maxDepth&&(this.updateChildTiles(i,t),r=this.updateAndPushChildren(i,t,n,i.hasRenderContent?i._selectionDepth+1:i._selectionDepth)),i.parent),a=Boolean(!a||a._shouldRefine),o=!r;i.hasRenderContent?i.refine===UM.ADD?(this.loadTile(i,t),this.selectTile(i,t)):i.refine===UM.REPLACE&&(this.loadTile(i,t),o)&&this.selectTile(i,t):(this.emptyTiles[i.id]=i,this.loadTile(i,t),o&&this.selectTile(i,t)),this.touchTile(i,t),i._shouldRefine=r&&a}this.options.onTraversalEnd(t)}},{key:"updateChildTiles",value:function(e,t){var n,i=q(e.children);try{for(i.s();!(n=i.n()).done;){var r=n.value;this.updateTile(r,t)}}catch(e){i.e(e)}finally{i.f()}return!0}},{key:"updateAndPushChildren",value:function(e,t,n,i){var r,a=this.options,o=a.loadSiblings,a=a.skipLevelOfDetail,s=e.children,l=(s.sort(this.compareDistanceToCamera.bind(this)),e.refine===UM.REPLACE&&e.hasRenderContent&&!a),u=!1,c=!0,h=q(s);try{for(h.s();!(r=h.n()).done;){var d=r.value;if(d._selectionDepth=i,d.isVisibleAndInRequestVolume?(n.find(d)&&n.delete(d),n.push(d),u=!0):(l||o)&&(this.loadTile(d,t),this.touchTile(d,t)),l){var p=void 0,p=!!d._inRequestVolume&&(d.hasRenderContent?d.contentAvailable:this.executeEmptyTraversal(d,t));if(!(c=c&&p))return!1}}}catch(e){h.e(e)}finally{h.f()}return c=u?c:!1}},{key:"updateTile",value:function(e,t){this.updateTileVisibility(e,t)}},{key:"selectTile",value:function(e,t){this.shouldSelectTile(e)&&(e._selectedFrame=t.frameNumber,this.selectedTiles[e.id]=e)}},{key:"loadTile",value:function(e,t){this.shouldLoadTile(e)&&(e._requestedFrame=t.frameNumber,e._priority=e._getPriority(),this.requestedTiles[e.id]=e)}},{key:"touchTile",value:function(e,t){e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber}},{key:"canTraverse",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2];return!!e.hasChildren&&(e.hasTilesetContent?!e.contentExpired:!!(3<arguments.length&&void 0!==arguments[3]&&arguments[3]||e.isVisibleAndInRequestVolume)&&this.shouldRefine(e,t,n))}},{key:"shouldLoadTile",value:function(e){return e.hasUnloadedContent||e.contentExpired}},{key:"shouldSelectTile",value:function(e){return e.contentAvailable&&!this.options.skipLevelOfDetail}},{key:"shouldRefine",value:function(e,t,n){var i=e._screenSpaceError;return(i=n?e.getScreenSpaceError(t,!0):i)>this.options.maximumScreenSpaceError}},{key:"updateTileVisibility",value:function(e,t){var n=[];if(this.options.viewportTraversersMap)for(var i in this.options.viewportTraversersMap)this.options.viewportTraversersMap[i]===t.viewport.id&&n.push(i);else n.push(t.viewport.id);e.updateVisibility(t,n)}},{key:"compareDistanceToCamera",value:function(e,t){return e._distanceToCamera-t._distanceToCamera}},{key:"anyChildrenVisible",value:function(e,t){var n,i=!1,r=q(e.children);try{for(r.s();!(n=r.n()).done;){var a=n.value;a.updateVisibility(t),i=i||a.isVisibleAndInRequestVolume}}catch(e){r.e(e)}finally{r.f()}return i}},{key:"executeEmptyTraversal",value:function(e,t){var n=!0,i=this._emptyTraversalStack;for(i.push(e);0<i.length&&n;){var r=i.pop();if(this.updateTile(r,t),r.isVisibleAndInRequestVolume||this.loadTile(r,t),this.touchTile(r,t),!r.hasRenderContent&&this.canTraverse(r,t,!1,!0)){var a,o=q(r.children);try{for(o.s();!(a=o.n()).done;){var s=a.value;i.find(s)&&i.delete(s),i.push(s)}}catch(e){o.e(e)}finally{o.f()}}else r.contentAvailable||(n=!1)}return n}}]),t}(),nT=new B;var iT=function(){function r(e,t,n){var i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:"";te(this,r),l(this,"tileset",void 0),l(this,"header",void 0),l(this,"id",void 0),l(this,"url",void 0),l(this,"parent",void 0),l(this,"refine",void 0),l(this,"type",void 0),l(this,"contentUrl",void 0),l(this,"lodMetricType",void 0),l(this,"lodMetricValue",void 0),l(this,"boundingVolume",void 0),l(this,"content",void 0),l(this,"contentState",void 0),l(this,"gpuMemoryUsageInBytes",void 0),l(this,"children",void 0),l(this,"depth",void 0),l(this,"viewportIds",void 0),l(this,"transform",void 0),l(this,"extensions",void 0),l(this,"userData",void 0),l(this,"computedTransform",void 0),l(this,"hasEmptyContent",void 0),l(this,"hasTilesetContent",void 0),l(this,"traverser",void 0),l(this,"_cacheNode",void 0),l(this,"_frameNumber",void 0),l(this,"_lodJudge",void 0),l(this,"_expireDate",void 0),l(this,"_expiredContent",void 0),l(this,"_shouldRefine",void 0),l(this,"_distanceToCamera",void 0),l(this,"_centerZDepth",void 0),l(this,"_screenSpaceError",void 0),l(this,"_visibilityPlaneMask",void 0),l(this,"_visible",void 0),l(this,"_inRequestVolume",void 0),l(this,"_stackLength",void 0),l(this,"_selectionDepth",void 0),l(this,"_touchedFrame",void 0),l(this,"_visitedFrame",void 0),l(this,"_selectedFrame",void 0),l(this,"_requestedFrame",void 0),l(this,"_priority",void 0),l(this,"_contentBoundingVolume",void 0),l(this,"_viewerRequestVolume",void 0),l(this,"_initialTransform",void 0),this.header=t,this.tileset=e,this.id=i||t.id,this.url=t.url,this.parent=n,this.refine=this._getRefine(t.refine),this.type=t.type,this.contentUrl=t.contentUrl,this.lodMetricType="geometricError",this.lodMetricValue=0,this.boundingVolume=null,this.content=null,this.contentState=RM,this.gpuMemoryUsageInBytes=0,this.children=[],this.hasEmptyContent=!1,this.hasTilesetContent=!1,this.depth=0,this.viewportIds=[],this.userData={},this.extensions=null,this._priority=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._screenSpaceError=0,this._cacheNode=null,this._frameNumber=null,this._cacheNode=null,this.traverser=new tT({}),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._initialTransform=new YB,this.transform=new YB,this._initializeLodMetric(t),this._initializeTransforms(t),this._initializeBoundingVolumes(t),this._initializeContent(t),this._initializeRenderingState(t),this._lodJudge=null,this._expireDate=null,this._expiredContent=null,Object.seal(this)}var e;return A(r,[{key:"destroy",value:function(){this.header=null}},{key:"isDestroyed",value:function(){return null===this.header}},{key:"selected",get:function(){return this._selectedFrame===this.tileset._frameNumber}},{key:"isVisible",get:function(){return this._visible}},{key:"isVisibleAndInRequestVolume",get:function(){return this._visible&&this._inRequestVolume}},{key:"hasRenderContent",get:function(){return!this.hasEmptyContent&&!this.hasTilesetContent}},{key:"hasChildren",get:function(){return 0<this.children.length||this.header.children&&0<this.header.children.length}},{key:"contentReady",get:function(){return this.contentState===OM||this.hasEmptyContent}},{key:"contentAvailable",get:function(){return Boolean(this.contentReady&&this.hasRenderContent||this._expiredContent&&!this.contentFailed)}},{key:"hasUnloadedContent",get:function(){return this.hasRenderContent&&this.contentUnloaded}},{key:"contentUnloaded",get:function(){return this.contentState===RM}},{key:"contentExpired",get:function(){return this.contentState===NM}},{key:"contentFailed",get:function(){return this.contentState===GM}},{key:"getScreenSpaceError",value:function(e,t){switch(this.tileset.type){case HM.I3S:return ZM(this,e);case HM.TILES3D:return i=e,r=t,a=(n=this).tileset,o=n.parent&&n.parent.lodMetricValue||n.lodMetricValue,0===(r=t?o:n.lodMetricValue)?0:(o=Math.max(n._distanceToCamera,1e-7),n=i.height,i=i.sseDenominator,r*n*(a.options.viewDistanceScale||1)/(o*i)-KM(a,o));default:throw new Error("Unsupported tileset type")}var n,i,r,a,o}},{key:"_getPriority",value:function(){var e,t=this.tileset._traverser,n=t.options.skipLevelOfDetail,n=this.refine===UM.ADD||n;return n&&!this.isVisible&&void 0!==this._visible||1<=this.tileset._frameNumber-this._touchedFrame||this.contentState===RM?-1:(n=((e=this.parent)&&(!n||0===this._screenSpaceError||e.hasTilesetContent)?e:this)._screenSpaceError,e=t.root?t.root._screenSpaceError:0,Math.max(e-n,0))}},{key:"loadContent",value:(e=d(V().mark(function e(){var t,n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(this.hasEmptyContent)return e.abrupt("return",!1);e.next=2;break;case 2:if(this.content)return e.abrupt("return",!0);e.next=4;break;case 4:return this.contentExpired&&(this._expireDate=null),this.contentState=FM,e.next=9,this.tileset._requestScheduler.scheduleRequest(this.id,this._getPriority.bind(this));case 9:if(t=e.sent){e.next=13;break}return this.contentState=RM,e.abrupt("return",!1);case 13:return e.prev=13,n=this.tileset.getTileUrl(this.contentUrl),i=this.tileset.loader,r=g(g({},this.tileset.loadOptions),{},z({},i.id,g(g({},this.tileset.loadOptions[i.id]),{},{isTileset:"json"===this.type},this._getLoaderSpecificOptions(i.id)))),e.next=19,eB(n,i,r);case 19:if(this.content=e.sent,this.tileset.options.maxDepth<this.depth)return this.unloadContent(),e.abrupt("return",!1);e.next=23;break;case 23:if(this.tileset.options.contentLoader)return e.next=26,this.tileset.options.contentLoader(this);e.next=26;break;case 26:return this._isTileset()&&this.tileset._initializeTileHeaders(this.content,this),this.contentState=OM,this._onContentLoaded(),e.abrupt("return",!0);case 32:throw e.prev=32,e.t0=e.catch(13),this.contentState=GM,e.t0;case 36:return e.prev=36,t.done(),e.finish(36);case 39:case"end":return e.stop()}},e,this,[[13,32,36,39]])})),function(){return e.apply(this,arguments)})},{key:"unloadContent",value:function(){return this.content&&this.content.destroy&&this.content.destroy(),this.content=null,this.header.content&&this.header.content.destroy&&this.header.content.destroy(),this.header.content=null,this.contentState=RM,!0}},{key:"updateVisibility",value:function(e,t){var n,i;this._frameNumber!==e.frameNumber&&(n=(i=this.parent)?i._visibilityPlaneMask:AM.MASK_INDETERMINATE,this.tileset._traverser.options.updateTransforms&&(i=i?i.computedTransform:this.tileset.modelMatrix,this._updateTransform(i)),this._distanceToCamera=this.distanceToTile(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._visibilityPlaneMask=this.visibility(e,n),this._visible=this._visibilityPlaneMask!==AM.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._frameNumber=e.frameNumber,this.viewportIds=t)}},{key:"visibility",value:function(e,t){var e=e.cullingVolume,n=this.boundingVolume;return e.computeVisibilityWithPlaneMask(n,t)}},{key:"contentVisibility",value:function(){return!0}},{key:"distanceToTile",value:function(e){var t=this.boundingVolume;return Math.sqrt(Math.max(t.distanceSquaredTo(e.camera.position),0))}},{key:"cameraSpaceZDepth",value:function(e){var e=e.camera,t=this.boundingVolume;return nT.subVectors(t.center,e.position),e.direction.dot(nT)}},{key:"insideViewerRequestVolume",value:function(e){var t=this._viewerRequestVolume;return!t||t.distanceSquaredTo(e.camera.position)<=0}},{key:"updateExpiration",value:function(){var e;null!=this._expireDate&&this.contentReady&&!this.hasEmptyContent&&(e=Date.now(),Date.lessThan(this._expireDate,e))&&(this.contentState=NM,this._expiredContent=this.content)}},{key:"extras",get:function(){return this.header.extras}},{key:"_initializeLodMetric",value:function(e){"lodMetricType"in e?this.lodMetricType=e.lodMetricType:(this.lodMetricType=this.parent&&this.parent.lodMetricType||this.tileset.lodMetricType,console.warn("3D Tile: Required prop lodMetricType is undefined. Using parent lodMetricType")),"lodMetricValue"in e?this.lodMetricValue=e.lodMetricValue:(this.lodMetricValue=this.parent&&this.parent.lodMetricValue||this.tileset.lodMetricValue,console.warn("3D Tile: Required prop lodMetricValue is undefined. Using parent lodMetricValue"))}},{key:"_initializeTransforms",value:function(e){this.transform=e.transform?new YB(e.transform):new YB;var e=this.parent,t=this.tileset,t=(e&&e.computedTransform?e.computedTransform:t.modelMatrix).clone(),t=(this.computedTransform=new YB(t).multiplyRight(this.transform),e&&e._initialTransform?e._initialTransform.clone():new YB);this._initialTransform=new YB(t).multiplyRight(this.transform)}},{key:"_initializeBoundingVolumes",value:function(e){this._contentBoundingVolume=null,this._viewerRequestVolume=null,this._updateBoundingVolume(e)}},{key:"_initializeContent",value:function(e){this.content={_tileset:this.tileset,_tile:this},this.hasEmptyContent=!0,this.contentState=RM,this.hasTilesetContent=!1,e.contentUrl&&(this.content=null,this.hasEmptyContent=!1)}},{key:"_initializeRenderingState",value:function(e){this.depth=e.level||(this.parent?this.parent.depth+1:0),this._shouldRefine=!1,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._visibilityPlaneMask=AM.MASK_INDETERMINATE,this._visible=void 0,this._inRequestVolume=!1,this._stackLength=0,this._selectionDepth=0,this._frameNumber=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._requestedFrame=0,this._priority=0}},{key:"_getRefine",value:function(e){return e||this.parent&&this.parent.refine||UM.REPLACE}},{key:"_isTileset",value:function(){return-1!==this.contentUrl.indexOf(".json")}},{key:"_onContentLoaded",value:function(){switch(this.content&&this.content.type){case"vctr":case"geom":this.tileset._traverser.disableSkipLevelOfDetail=!0}this._isTileset()&&(this.hasTilesetContent=!0)}},{key:"_updateBoundingVolume",value:function(e){this.boundingVolume=XM(e.boundingVolume,this.computedTransform,this.boundingVolume);var t=e.content;t&&(t.boundingVolume&&(this._contentBoundingVolume=XM(t.boundingVolume,this.computedTransform,this._contentBoundingVolume)),e.viewerRequestVolume)&&(this._viewerRequestVolume=XM(e.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume))}},{key:"_updateTransform",value:function(){var e=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:new YB).clone().multiplyRight(this.transform);e.equals(this.computedTransform)||(this.computedTransform=e,this._updateBoundingVolume(this.header))}},{key:"_getLoaderSpecificOptions",value:function(e){return"i3s"!==e?{assetGltfUpAxis:(e=this.tileset.tileset).asset&&e.asset.gltfUpAxis||"Y"}:g(g({},this.tileset.options.i3s),{},{tile:this.header,tileset:this.tileset.tileset,isTileHeader:!1})}}]),r}(),rT=function(){y(a,tT);var e=C(a);function a(){return te(this,a),e.apply(this,arguments)}return A(a,[{key:"compareDistanceToCamera",value:function(e,t){return 0===t._distanceToCamera&&0===e._distanceToCamera?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera}},{key:"updateTileVisibility",value:function(e,t){var n,i,r;k(_(a.prototype),"updateTileVisibility",this).call(this,e,t),e.isVisibleAndInRequestVolume&&(n=0<e.children.length,e.hasTilesetContent&&n?(i=e.children[0],this.updateTileVisibility(i,t),e._visible=i._visible):this.meetsScreenSpaceErrorEarly(e,t)?e._visible=!1:(i=e.refine===UM.REPLACE,r=e._optimChildrenWithinParent===VM,i&&r&&n&&(this.anyChildrenVisible(e,t)||(e._visible=!1))))}},{key:"meetsScreenSpaceErrorEarly",value:function(e,t){var n=e.parent;return!(!n||n.hasTilesetContent||n.refine!==UM.ADD||this.shouldRefine(e,t,!0))}}]),a}(),aT="REQUESTED",oT="COMPLETED",sT="ERROR",lT=function(){function e(){te(this,e),l(this,"_statusMap",void 0),this._statusMap={}}return A(e,[{key:"add",value:function(e,t,n,i){var r=this;this._statusMap[t]||(this._statusMap[t]={request:e,callback:n,key:t,frameState:i,status:aT},e().then(function(e){r._statusMap[t].status=oT,r._statusMap[t].callback(e,i)}).catch(function(e){r._statusMap[t].status=sT,n(e)}))}},{key:"update",value:function(e,t){this._statusMap[e]&&(this._statusMap[e].frameState=t)}},{key:"find",value:function(e){return this._statusMap[e]}}]),e}(),uT=function(){y(i,tT);var n,t=C(i);function i(e){return te(this,i),l(G(e=t.call(this,e)),"_tileManager",void 0),e._tileManager=new lT,e}return A(i,[{key:"shouldRefine",value:function(e,t){var n;return e._lodJudge=(t=t,0===(n=e).lodMetricValue||isNaN(n.lodMetricValue)?"DIG":(t=2*ZM(n,t))<2?"OUT":!n.header.children||t<=n.lodMetricValue?"DRAW":n.header.children?"DIG":"OUT"),"DIG"===e._lodJudge}},{key:"updateChildTiles",value:function(i,r){var a,o=this,e=i.header.children||[],s=i.children,l=i.tileset,t=q(e);try{for(t.s();!(a=t.n()).done;)!function(){var e=a.value,t="".concat(e.id,"-").concat(r.viewport.id),n=s&&s.find(function(e){return e.id===t});n?o.updateTile(n,r):(n=function(){return o._loadTile(e.id,l)},o._tileManager.find(t)?o._tileManager.update(t,r):(l.tileset.nodePages&&(n=function(){return l.tileset.nodePagesTile.formTileFromNodePages(e.id)}),o._tileManager.add(n,t,function(e){return o._onTileLoad(e,i,t)},r)))}()}catch(e){t.e(e)}finally{t.f()}return!1}},{key:"_loadTile",value:(n=d(V().mark(function e(t,n){var i,r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=n.loader,r=n.getTileUrl("".concat(n.url,"/nodes/").concat(t)),a=g(g({},n.loadOptions),{},{i3s:g(g({},n.loadOptions.i3s),{},{isTileHeader:!0,loadContent:!1})}),e.next=5,eB(r,i,a);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})},{key:"_onTileLoad",value:function(e,t,n){e=new iT(t.tileset,e,t,n),t.children.push(e),n=this._tileManager.find(e.id).frameState;this.updateTile(e,n),this._frameNumber===n.frameNumber&&this.executeTraversal(e,n)}}]),i}(),cT={description:"",ellipsoid:U_.WGS84,modelMatrix:new YB,throttleRequests:!0,maxRequests:64,maximumMemoryUsage:32,onTileLoad:function(){},onTileUnload:function(){},onTileError:function(){},onTraversalComplete:function(e){return e},contentLoader:void 0,viewDistanceScale:1,maximumScreenSpaceError:8,loadTiles:!0,updateTransforms:!0,viewportTraversersMap:null,loadOptions:{fetch:{}},attributions:[],basePath:"",i3s:{}},hT="Tiles In Tileset(s)",dT="Tiles In Memory",pT="Tiles In View",fT="Tiles To Render",mT="Tiles Loaded",vT="Tiles Loading",gT="Tiles Unloaded",AT="Failed Tile Loads",yT="Tile Memory Use",wT=function(){y(r,zn);var t,i=C(r);function r(e,t){var n;return te(this,r),l(G(n=i.call(this)),"options",void 0),l(G(n),"loadOptions",void 0),l(G(n),"type",void 0),l(G(n),"tileset",void 0),l(G(n),"loader",void 0),l(G(n),"url",void 0),l(G(n),"basePath",void 0),l(G(n),"modelMatrix",void 0),l(G(n),"ellipsoid",void 0),l(G(n),"lodMetricType",void 0),l(G(n),"lodMetricValue",void 0),l(G(n),"refine",void 0),l(G(n),"root",void 0),l(G(n),"roots",void 0),l(G(n),"asset",void 0),l(G(n),"description",void 0),l(G(n),"properties",void 0),l(G(n),"extras",void 0),l(G(n),"attributions",void 0),l(G(n),"credits",void 0),l(G(n),"stats",void 0),l(G(n),"traverseCounter",void 0),l(G(n),"geometricError",void 0),l(G(n),"selectedTiles",void 0),l(G(n),"cartographicCenter",void 0),l(G(n),"cartesianCenter",void 0),l(G(n),"zoom",void 0),l(G(n),"boundingVolume",void 0),l(G(n),"gpuMemoryUsageInBytes",void 0),l(G(n),"dynamicScreenSpaceErrorComputedDensity",void 0),l(G(n),"_traverser",void 0),l(G(n),"_cache",void 0),l(G(n),"_requestScheduler",void 0),l(G(n),"_frameNumber",void 0),l(G(n),"_queryParamsString",void 0),l(G(n),"_queryParams",void 0),l(G(n),"_extensionsUsed",void 0),l(G(n),"_tiles",void 0),l(G(n),"_pendingCount",void 0),l(G(n),"lastUpdatedVieports",void 0),l(G(n),"_requestedTiles",void 0),l(G(n),"_emptyTiles",void 0),l(G(n),"frameStateData",void 0),l(G(n),"maximumMemoryUsage",void 0),Vx(e),n.options=g(g({},cT),t),n.tileset=e,n.loader=e.loader,n.type=e.type,n.url=e.url,n.basePath=e.basePath||kE(n.url),n.modelMatrix=n.options.modelMatrix,n.ellipsoid=n.options.ellipsoid,n.lodMetricType=e.lodMetricType,n.lodMetricValue=e.lodMetricValue,n.refine=e.root.refine,n.loadOptions=n.options.loadOptions||{},n.root=null,n.roots={},n.cartographicCenter=null,n.cartesianCenter=null,n.zoom=1,n.boundingVolume=null,n.traverseCounter=0,n.geometricError=0,n._traverser=n._initializeTraverser(),n._cache=new V_,n._requestScheduler=new IE({throttleRequests:n.options.throttleRequests,maxRequests:n.options.maxRequests}),n._frameNumber=0,n._pendingCount=0,n._tiles={},n.selectedTiles=[],n._emptyTiles=[],n._requestedTiles=[],n.frameStateData={},n.lastUpdatedVieports=null,n._queryParams={},n._queryParamsString="",n.maximumMemoryUsage=n.options.maximumMemoryUsage||32,n.gpuMemoryUsageInBytes=0,n.stats=new TE({id:n.url}),n._initializeStats(),n._extensionsUsed=void 0,n.dynamicScreenSpaceErrorComputedDensity=0,n.extras=null,n.asset={},n.credits={},n.description=n.options.description||"",n._initializeTileSet(e),n}return A(r,[{key:"destroy",value:function(){this._destroy()}},{key:"isLoaded",value:function(){return 0===this._pendingCount&&0!==this._frameNumber}},{key:"tiles",get:function(){return Object.values(this._tiles)}},{key:"frameNumber",get:function(){return this._frameNumber}},{key:"queryParams",get:function(){return this._queryParamsString||(this._queryParamsString=function(e){for(var t=[],n=0,i=Object.keys(e);n<i.length;n++){var r=i[n];t.push("".concat(r,"=").concat(e[r]))}switch(t.length){case 0:return"";case 1:return"?".concat(t[0]);default:return"?".concat(t.join("&"))}}(this._queryParams)),this._queryParamsString}},{key:"setProps",value:function(e){this.options=g(g({},this.options),e)}},{key:"setOptions",value:function(e){this.options=g(g({},this.options),e)}},{key:"getTileUrl",value:function(e){return e.startsWith("data:")?e:"".concat(e).concat(this.queryParams)}},{key:"hasExtension",value:function(e){return Boolean(this._extensionsUsed&&-1<this._extensionsUsed.indexOf(e))}},{key:"update",value:function(e){if((!("loadTiles"in this.options)||this.options.loadTiles)&&!(0<this.traverseCounter)){!e&&this.lastUpdatedVieports?e=this.lastUpdatedVieports:this.lastUpdatedVieports=e,e instanceof Array||(e=[e]),this._cache.reset(),this._frameNumber++,this.traverseCounter=e.length;var t,n=[],i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value.id;this._needTraverse(r)?n.push(r):this.traverseCounter--}}catch(e){i.e(e)}finally{i.f()}var a,o=q(e);try{for(o.s();!(a=o.n()).done;){var s,l=a.value,u=l.id;this.roots[u]||(this.roots[u]=this._initializeTileHeaders(this.tileset,null)),n.includes(u)&&(s=DM(l,this._frameNumber),this._traverser.traverse(this.roots[u],s,this.options))}}catch(e){o.e(e)}finally{o.f()}}}},{key:"_needTraverse",value:function(e){var t=e;return(t=this.options.viewportTraversersMap?this.options.viewportTraversersMap[e]:t)===e}},{key:"_onTraversalEnd",value:function(e){var e=e.viewport.id,e=(this.frameStateData[e]||(this.frameStateData[e]={selectedTiles:[],_requestedTiles:[],_emptyTiles:[]}),this.frameStateData[e]),t=Object.values(this._traverser.selectedTiles);e.selectedTiles=t,e._requestedTiles=Object.values(this._traverser.requestedTiles),e._emptyTiles=Object.values(this._traverser.emptyTiles),this.traverseCounter--,0<this.traverseCounter||this._updateTiles()}},{key:"_updateTiles",value:function(){for(var e in this.selectedTiles=[],this._requestedTiles=[],this._emptyTiles=[],this.frameStateData){e=this.frameStateData[e];this.selectedTiles=this.selectedTiles.concat(e.selectedTiles),this._requestedTiles=this._requestedTiles.concat(e._requestedTiles),this._emptyTiles=this._emptyTiles.concat(e._emptyTiles)}this.selectedTiles=this.options.onTraversalComplete(this.selectedTiles);var t,n=q(this.selectedTiles);try{for(n.s();!(t=n.n()).done;){var i=t.value;this._tiles[i.id]=i}}catch(e){n.e(e)}finally{n.f()}this._loadTiles(),this._unloadTiles(),this._updateStats()}},{key:"_tilesChanged",value:function(e,t){var n,i;return e.length!==t.length||(n=new Set(e.map(function(e){return e.id})),i=new Set(t.map(function(e){return e.id})),0<e.filter(function(e){return!i.has(e.id)}).length)||0<t.filter(function(e){return!n.has(e.id)}).length}},{key:"_loadTiles",value:function(){var e,t=q(this._requestedTiles);try{for(t.s();!(e=t.n()).done;){var n=e.value;n.contentUnloaded&&this._loadTile(n)}}catch(e){t.e(e)}finally{t.f()}}},{key:"_unloadTiles",value:function(){this._cache.unloadTiles(this,function(e,t){return e._unloadTile(t)})}},{key:"_updateStats",value:function(){var e,t=0,n=0,i=q(this.selectedTiles);try{for(i.s();!(e=i.n()).done;){var r=e.value;r.contentAvailable&&r.content&&(t++,r.content.pointCount)&&(n+=r.content.pointCount)}}catch(e){i.e(e)}finally{i.f()}this.stats.get(pT).count=this.selectedTiles.length,this.stats.get(fT).count=t,this.stats.get("Points").count=n}},{key:"_initializeTileSet",value:function(e){this.root=this._initializeTileHeaders(e,null),this.type===HM.TILES3D&&this._initializeCesiumTileset(e),this.type===HM.I3S&&this._initializeI3STileset(),this._calculateViewProps()}},{key:"_calculateViewProps",value:function(){var e=this.root,t=(Vx(e),e.boundingVolume.center);t?(this.cartographicCenter=U_.WGS84.cartesianToCartographic(t,new B),this.cartesianCenter=t,this.zoom=LM(e.boundingVolume)):(console.warn("center was not pre-calculated for the root tile"),this.cartographicCenter=new B,this.zoom=1)}},{key:"_initializeStats",value:function(){this.stats.get(hT),this.stats.get(vT),this.stats.get(dT),this.stats.get(pT),this.stats.get(fT),this.stats.get(mT),this.stats.get(gT),this.stats.get(AT),this.stats.get("Points","memory"),this.stats.get(yT,"memory")}},{key:"_initializeTileHeaders",value:function(e,t){e=new iT(this,e.root,t);if(t&&(t.children.push(e),e.depth=t.depth+1),this.type===HM.TILES3D){var n=[];for(n.push(e);0<n.length;){var i=n.pop(),r=(this.stats.get(hT).incrementCount(),i.header.children||[]);if(i.depth<this.options.maxDepth){var a,o=q(r);try{for(o.s();!(a=o.n()).done;){var s=a.value,l=new iT(this,s,i);i.children.push(l),l.depth=i.depth+1,n.push(l)}}catch(e){o.e(e)}finally{o.f()}}window.maxDepth=Math.max(window.maxDepth||0,i.depth)}}return e}},{key:"_initializeTraverser",value:function(){var e;switch(this.type){case HM.TILES3D:e=rT;break;case HM.I3S:e=uT;break;default:e=tT}return new e({basePath:this.basePath,onTraversalEnd:this._onTraversalEnd.bind(this)})}},{key:"_destroyTileHeaders",value:function(e){this._destroySubtree(e)}},{key:"_loadTile",value:(t=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,this._onStartTileLoading(),e.next=4,t.loadContent();case 4:n=e.sent,e.next=10;break;case 7:e.prev=7,e.t0=e.catch(0),this._onTileLoadError(t,e.t0);case 10:return e.prev=10,this._onEndTileLoading(t),this._onTileLoad(t,n),e.finish(10);case 14:case"end":return e.stop()}},e,this,[[0,7,10,14]])})),function(e){return t.apply(this,arguments)})},{key:"_onTileLoadError",value:function(e,t){this.stats.get(AT).incrementCount();var t=t.message||t.toString(),n=e.url;console.error("A 3D tile failed to load: ".concat(e.url," ").concat(t)),this.options.onTileError(e,t,n)}},{key:"_onTileLoad",value:function(e,t){if(t){if(e&&e.content){var t=e,n=e.content,i=(Vx(t),Vx(n),n.rtcCenter),r=n.gltfUpAxis,a=t.computedTransform,t=t.boundingVolume.center,o=new YB(a);switch(i&&o.translate(i),r){case"Z":break;case"Y":var s=(new YB).rotateX(Math.PI/2),o=o.multiplyRight(s);break;case"X":s=(new YB).rotateY(-Math.PI/2);o=o.multiplyRight(s)}n.isQuantized&&o.translate(n.quantizedVolumeOffset).scale(n.quantizedVolumeScale),a=new B(t),n.cartesianModelMatrix=o,n.cartesianOrigin=a,i=U_.WGS84.cartesianToCartographic(a,new B),r=U_.WGS84.eastNorthUpToFixedFrame(a).invert(),n.cartographicModelMatrix=r.multiplyRight(o),n.cartographicOrigin=i,n.coordinateSystem||(n.modelMatrix=n.cartographicModelMatrix)}this._addTileToCache(e),this.options.onTileLoad(e)}}},{key:"_onStartTileLoading",value:function(){this._pendingCount++,this.stats.get(vT).incrementCount()}},{key:"_onEndTileLoading",value:function(e){this._pendingCount--,this.stats.get(vT).decrementCount(),this.dispatchEvent({type:"endTileLoading",tile:e,loadingCount:this._pendingCount})}},{key:"_addTileToCache",value:function(t){this._cache.add(this,t,function(e){return e._updateCacheStats(t)})}},{key:"_updateCacheStats",value:function(e){this.stats.get(mT).incrementCount(),this.stats.get(dT).incrementCount(),this.gpuMemoryUsageInBytes+=e.content.byteLength||0,this.stats.get(yT).count=this.gpuMemoryUsageInBytes}},{key:"_unloadTile",value:function(e){this.gpuMemoryUsageInBytes-=e.content&&e.content.byteLength||0,this.stats.get(dT).decrementCount(),this.stats.get(gT).incrementCount(),this.stats.get(yT).count=this.gpuMemoryUsageInBytes,this.options.onTileUnload(e),e.unloadContent()}},{key:"_destroy",value:function(){var e=[];for(this.root&&e.push(this.root);0<e.length;){var t,n=e.pop(),i=q(n.children);try{for(i.s();!(t=i.n()).done;){var r=t.value;e.push(r)}}catch(e){i.e(e)}finally{i.f()}this._destroyTile(n)}this.root=null}},{key:"_destroySubtree",value:function(e){var t=e,n=[];for(n.push(t);0<n.length;){var i,r=q((e=n.pop()).children);try{for(r.s();!(i=r.n()).done;){var a=i.value;n.push(a)}}catch(e){r.e(e)}finally{r.f()}e!==t&&this._destroyTile(e)}t.children=[]}},{key:"_destroyTile",value:function(e){this._cache.unloadTile(this,e),this._unloadTile(e),e.destroy()}},{key:"_initializeCesiumTileset",value:function(e){if(this.asset=e.asset,!this.asset)throw new Error("Tileset must have an asset property.");if("0.0"!==this.asset.version&&"1.0"!==this.asset.version)throw new Error("The tileset must be 3D Tiles version 0.0 or 1.0.");"tilesetVersion"in this.asset&&(this._queryParams.v=this.asset.tilesetVersion),this.credits={attributions:this.options.attributions||[]},this.description=this.options.description||"",this.properties=e.properties,this.geometricError=e.geometricError,this._extensionsUsed=e.extensionsUsed,this.extras=e.extras}},{key:"_initializeI3STileset",value:function(){this.loadOptions.i3s&&"token"in this.loadOptions.i3s&&(this._queryParams.token=this.loadOptions.i3s.token)}}]),r}();var bT={COMPOSITE:"cmpt",POINT_CLOUD:"pnts",BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",GEOMETRY:"geom",VECTOR:"vect",GLTF:"glTF"};function xT(e,t,n){Vx(e instanceof ArrayBuffer);var i=new TextDecoder("utf8"),e=new Uint8Array(e,t,n);return i.decode(e)}Id={name:"Draco",id:"draco",module:"draco",shapes:["mesh"],version:"3.1.4",worker:!0,extensions:["drc"],mimeTypes:["application/octet-stream"],binary:!0,tests:["DRACO"],options:{draco:{decoderType:"object"===("undefined"==typeof WebAssembly?"undefined":v(WebAssembly))?"wasm":"js",libraryPath:"libs/",extraAttributes:{},attributeNameEntry:void 0}}};var ET=function(){function h(e,t){te(this,h),l(this,"fields",void 0),l(this,"metadata",void 0);var n=Array.isArray(e),i=void 0;if(!n)throw new Error(i||"loader assertion failed.");var r,a={},o=q(e);try{for(o.s();!(r=o.n()).done;){var s=r.value;a[s.name]&&console.warn("Schema: duplicated field name",s.name,s),a[s.name]=!0}}catch(e){o.e(e)}finally{o.f()}this.fields=e,this.metadata=t||new Map}return A(h,[{key:"compareTo",value:function(e){if(this.metadata!==e.metadata)return!1;if(this.fields.length!==e.fields.length)return!1;for(var t=0;t<this.fields.length;++t)if(!this.fields[t].compareTo(e.fields[t]))return!1;return!0}},{key:"select",value:function(){for(var t=Object.create(null),e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];for(var r=0,a=n;r<a.length;r++){var o=a[r];t[o]=!0}return new h(this.fields.filter(function(e){return t[e.name]}),this.metadata)}},{key:"selectAt",value:function(){for(var t=this,e=arguments.length,n=new Array(e),i=0;i<e;i++)n[i]=arguments[i];return new h(n.map(function(e){return t.fields[e]}).filter(Boolean),this.metadata)}},{key:"assign",value:function(e){var t,n,i,r=this.metadata,a=(e instanceof h?(n=(t=e).fields,r=CT(CT(new Map,this.metadata),t.metadata)):n=e,Object.create(null)),o=q(this.fields);try{for(o.s();!(i=o.n()).done;){var s=i.value;a[s.name]=s}}catch(e){o.e(e)}finally{o.f()}var l,u=q(n);try{for(u.s();!(l=u.n()).done;){var c=l.value;a[c.name]=c}}catch(e){u.e(e)}finally{u.f()}return new h(Object.values(a),r)}}]),h}();function CT(e,t){return new Map([].concat(J(e||new Map),J(t||new Map)))}var BT,_T=function(){function r(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2],i=3<arguments.length&&void 0!==arguments[3]?arguments[3]:new Map;te(this,r),l(this,"name",void 0),l(this,"type",void 0),l(this,"nullable",void 0),l(this,"metadata",void 0),this.name=e,this.type=t,this.nullable=n,this.metadata=i}return A(r,[{key:"typeId",get:function(){return this.type&&this.type.typeId}},{key:"clone",value:function(){return new r(this.name,this.type,this.nullable,this.metadata)}},{key:"compareTo",value:function(e){return this.name===e.name&&this.type===e.type&&this.nullable===e.nullable&&this.metadata===e.metadata}},{key:"toString",value:function(){return"".concat(this.type).concat(this.nullable?", nullable":"").concat(this.metadata?", metadata: ".concat(this.metadata):"")}}]),r}(),MT=((t=BT=BT||{})[t.NONE=0]="NONE",t[t.Null=1]="Null",t[t.Int=2]="Int",t[t.Float=3]="Float",t[t.Binary=4]="Binary",t[t.Utf8=5]="Utf8",t[t.Bool=6]="Bool",t[t.Decimal=7]="Decimal",t[t.Date=8]="Date",t[t.Time=9]="Time",t[t.Timestamp=10]="Timestamp",t[t.Interval=11]="Interval",t[t.List=12]="List",t[t.Struct=13]="Struct",t[t.Union=14]="Union",t[t.FixedSizeBinary=15]="FixedSizeBinary",t[t.FixedSizeList=16]="FixedSizeList",t[t.Map=17]="Map",t[t.Dictionary=-1]="Dictionary",t[t.Int8=-2]="Int8",t[t.Int16=-3]="Int16",t[t.Int32=-4]="Int32",t[t.Int64=-5]="Int64",t[t.Uint8=-6]="Uint8",t[t.Uint16=-7]="Uint16",t[t.Uint32=-8]="Uint32",t[t.Uint64=-9]="Uint64",t[t.Float16=-10]="Float16",t[t.Float32=-11]="Float32",t[t.Float64=-12]="Float64",t[t.DateDay=-13]="DateDay",t[t.DateMillisecond=-14]="DateMillisecond",t[t.TimestampSecond=-15]="TimestampSecond",t[t.TimestampMillisecond=-16]="TimestampMillisecond",t[t.TimestampMicrosecond=-17]="TimestampMicrosecond",t[t.TimestampNanosecond=-18]="TimestampNanosecond",t[t.TimeSecond=-19]="TimeSecond",t[t.TimeMillisecond=-20]="TimeMillisecond",t[t.TimeMicrosecond=-21]="TimeMicrosecond",t[t.TimeNanosecond=-22]="TimeNanosecond",t[t.DenseUnion=-23]="DenseUnion",t[t.SparseUnion=-24]="SparseUnion",t[t.IntervalDayTime=-25]="IntervalDayTime",t[t.IntervalYearMonth=-26]="IntervalYearMonth",function(){function e(){te(this,e)}return A(e,[{key:"typeId",get:function(){return BT.NONE}},{key:"compareTo",value:function(e){return this===e}}],[{key:"isNull",value:function(e){return e&&e.typeId===BT.Null}},{key:"isInt",value:function(e){return e&&e.typeId===BT.Int}},{key:"isFloat",value:function(e){return e&&e.typeId===BT.Float}},{key:"isBinary",value:function(e){return e&&e.typeId===BT.Binary}},{key:"isUtf8",value:function(e){return e&&e.typeId===BT.Utf8}},{key:"isBool",value:function(e){return e&&e.typeId===BT.Bool}},{key:"isDecimal",value:function(e){return e&&e.typeId===BT.Decimal}},{key:"isDate",value:function(e){return e&&e.typeId===BT.Date}},{key:"isTime",value:function(e){return e&&e.typeId===BT.Time}},{key:"isTimestamp",value:function(e){return e&&e.typeId===BT.Timestamp}},{key:"isInterval",value:function(e){return e&&e.typeId===BT.Interval}},{key:"isList",value:function(e){return e&&e.typeId===BT.List}},{key:"isStruct",value:function(e){return e&&e.typeId===BT.Struct}},{key:"isUnion",value:function(e){return e&&e.typeId===BT.Union}},{key:"isFixedSizeBinary",value:function(e){return e&&e.typeId===BT.FixedSizeBinary}},{key:"isFixedSizeList",value:function(e){return e&&e.typeId===BT.FixedSizeList}},{key:"isMap",value:function(e){return e&&e.typeId===BT.Map}},{key:"isDictionary",value:function(e){return e&&e.typeId===BT.Dictionary}}]),e}()),TT=function(e){y(r,MT);var i=C(r);function r(e,t){var n;return te(this,r),l(G(n=i.call(this)),"isSigned",void 0),l(G(n),"bitWidth",void 0),n.isSigned=e,n.bitWidth=t,n}return A(r,[{key:"typeId",get:function(){return BT.Int}},{key:e,get:function(){return"Int"}},{key:"toString",value:function(){return"".concat(this.isSigned?"I":"Ui","nt").concat(this.bitWidth)}}]),r}(Symbol.toStringTag),ST=function(){y(t,TT);var e=C(t);function t(){return te(this,t),e.call(this,!0,8)}return A(t)}(),IT=function(){y(t,TT);var e=C(t);function t(){return te(this,t),e.call(this,!0,16)}return A(t)}(),DT=function(){y(t,TT);var e=C(t);function t(){return te(this,t),e.call(this,!0,32)}return A(t)}(),PT=function(){y(t,TT);var e=C(t);function t(){return te(this,t),e.call(this,!1,8)}return A(t)}(),kT=function(){y(t,TT);var e=C(t);function t(){return te(this,t),e.call(this,!1,16)}return A(t)}(),LT=function(){y(t,TT);var e=C(t);function t(){return te(this,t),e.call(this,!1,32)}return A(t)}(),RT=32,FT=64,OT=function(e){y(i,MT);var n=C(i);function i(e){var t;return te(this,i),l(G(t=n.call(this)),"precision",void 0),t.precision=e,t}return A(i,[{key:"typeId",get:function(){return BT.Float}},{key:e,get:function(){return"Float"}},{key:"toString",value:function(){return"Float".concat(this.precision)}}]),i}(Symbol.toStringTag),NT=function(){y(t,OT);var e=C(t);function t(){return te(this,t),e.call(this,RT)}return A(t)}(),GT=function(){y(t,OT);var e=C(t);function t(){return te(this,t),e.call(this,FT)}return A(t)}(),UT=function(e){y(r,MT);var i=C(r);function r(e,t){var n;return te(this,r),l(G(n=i.call(this)),"listSize",void 0),l(G(n),"children",void 0),n.listSize=e,n.children=[t],n}return A(r,[{key:"typeId",get:function(){return BT.FixedSizeList}},{key:"valueType",get:function(){return this.children[0].type}},{key:"valueField",get:function(){return this.children[0]}},{key:e,get:function(){return"FixedSizeList"}},{key:"toString",value:function(){return"FixedSizeList[".concat(this.listSize,"]<").concat(this.valueType,">")}}]),r}(Symbol.toStringTag);function zT(e,t,n){var i=function(e){switch(e.constructor){case Int8Array:return new ST;case Uint8Array:return new PT;case Int16Array:return new IT;case Uint16Array:return new kT;case Int32Array:return new DT;case Uint32Array:return new LT;case Float32Array:return new NT;case Float64Array:return new GT;default:throw new Error("array type not supported")}}(t.value),n=n||function(e){var t=new Map;"byteOffset"in e&&t.set("byteOffset",e.byteOffset.toString(10));"byteStride"in e&&t.set("byteStride",e.byteStride.toString(10));"normalized"in e&&t.set("normalized",e.normalized.toString());return t}(t);return new _T(e,new UT(t.size,new _T("value",i)),!1,n)}function HT(e,t,n){var i,r=VT(t.metadata),a=[],o=function(e){var t,n={};for(t in e){var i=e[t];n[i.name||"undefined"]=i}return n}(t.attributes);for(i in e){var s=QT(i,e[i],o[i]);a.push(s)}return n&&(t=QT("indices",n),a.push(t)),new ET(a,r)}function QT(e,t,n){return zT(e,t,n?VT(n.metadata):void 0)}function VT(e){var t,n=new Map;for(t in e)n.set("".concat(t,".string"),JSON.stringify(e[t]));return n}var jT={POSITION:"POSITION",NORMAL:"NORMAL",COLOR:"COLOR_0",TEX_COORD:"TEXCOORD_0"},WT={1:Int8Array,2:Uint8Array,3:Int16Array,4:Uint16Array,5:Int32Array,6:Uint32Array,9:Float32Array},JT=function(){function t(e){te(this,t),l(this,"draco",void 0),l(this,"decoder",void 0),l(this,"metadataQuerier",void 0),this.draco=e,this.decoder=new this.draco.Decoder,this.metadataQuerier=new this.draco.MetadataQuerier}return A(t,[{key:"destroy",value:function(){this.draco.destroy(this.decoder),this.draco.destroy(this.metadataQuerier)}},{key:"parseSync",value:function(e){var t,n,i,r,a,o,s=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},l=new this.draco.DecoderBuffer,e=(l.Init(new Int8Array(e),e.byteLength),this._disableAttributeTransforms(s),this.decoder.GetEncodedGeometryType(l)),u=new(e===this.draco.TRIANGULAR_MESH?this.draco.Mesh:this.draco.PointCloud);try{switch(e){case this.draco.TRIANGULAR_MESH:t=this.decoder.DecodeBufferToMesh(l,u);break;case this.draco.POINT_CLOUD:t=this.decoder.DecodeBufferToPointCloud(l,u);break;default:throw new Error("DRACO: Unknown geometry type.")}if(t.ok()&&u.ptr)return i=this._getDracoLoaderData(u,e,s),a=function(e){for(var t=1/0,n=1/0,i=1/0,r=-1/0,a=-1/0,o=-1/0,s=e.POSITION?e.POSITION.value:[],l=s&&s.length,u=0;u<l;u+=3)var c=s[u],h=s[u+1],d=s[u+2],t=c<t?c:t,n=h<n?h:n,i=d<i?d:i,r=r<c?c:r,a=a<h?h:a,o=o<d?d:o;return[[t,n,i],[r,a,o]]}((r=this._getMeshData(u,i,s)).attributes),o=HT(r.attributes,i,r.indices),g(g({loader:"draco",loaderData:i,header:{vertexCount:u.num_points(),boundingBox:a}},r),{},{schema:o});throw n="DRACO decompression failed: ".concat(t.error_msg()),new Error(n)}finally{this.draco.destroy(l),u&&this.draco.destroy(u)}}},{key:"_getDracoLoaderData",value:function(e,t,n){var i=this._getTopLevelMetadata(e),n=this._getDracoAttributes(e,n);return{geometry_type:t,num_attributes:e.num_attributes(),num_points:e.num_points(),num_faces:e instanceof this.draco.Mesh?e.num_faces():0,metadata:i,attributes:n}}},{key:"_getDracoAttributes",value:function(e,t){for(var n={},i=0;i<e.num_attributes();i++){var r=this.decoder.GetAttribute(e,i),a=this._getAttributeMetadata(e,i),a=(n[r.unique_id()]={unique_id:r.unique_id(),attribute_type:r.attribute_type(),data_type:r.data_type(),num_components:r.num_components(),byte_offset:r.byte_offset(),byte_stride:r.byte_stride(),normalized:r.normalized(),attribute_index:i,metadata:a},this._getQuantizationTransform(r,t)),a=(a&&(n[r.unique_id()].quantization_transform=a),this._getOctahedronTransform(r,t));a&&(n[r.unique_id()].octahedron_transform=a)}return n}},{key:"_getMeshData",value:function(e,t,n){t=this._getMeshAttributes(t,e,n);if(t.POSITION)return e instanceof this.draco.Mesh?"triangle-strip"!==n.topology?{topology:"triangle-list",mode:5,attributes:t,indices:{value:this._getTriangleListIndices(e),size:1}}:{topology:"triangle-strip",mode:4,attributes:t,indices:{value:this._getTriangleStripIndices(e),size:1}}:{topology:"point-list",mode:0,attributes:t};throw new Error("DRACO: No position attribute found.")}},{key:"_getMeshAttributes",value:function(e,t,n){for(var i={},r=0,a=Object.values(e.attributes);r<a.length;r++){var o=a[r],s=this._deduceAttributeName(o,n),l=(o.name=s,this._getAttributeValues(t,o)),u=l.value,l=l.size;i[s]={value:u,size:l,byteOffset:o.byte_offset,byteStride:o.byte_stride,normalized:o.normalized}}return i}},{key:"_getTriangleListIndices",value:function(e){var t=3*e.num_faces(),n=4*t,i=this.draco._malloc(n);try{return this.decoder.GetTrianglesUInt32Array(e,n,i),new Uint32Array(this.draco.HEAPF32.buffer,i,t).slice()}finally{this.draco._free(i)}}},{key:"_getTriangleStripIndices",value:function(e){var t=new this.draco.DracoInt32Array;try{this.decoder.GetTriangleStripsFromMesh(e,t);for(var n=t,i=n.size(),r=new Int32Array(i),a=0;a<i;a++)r[a]=n.GetValue(a);return r}finally{this.draco.destroy(t)}}},{key:"_getAttributeValues",value:function(e,t){var n,i=WT[t.data_type],r=t.num_components,a=e.num_points()*r,o=a*i.BYTES_PER_ELEMENT,s=function(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;default:return e.DT_INVALID}}(this.draco,i),l=this.draco._malloc(o);try{var u=this.decoder.GetAttribute(e,t.attribute_index);this.decoder.GetAttributeDataArrayForAllPoints(e,u,s,o,l),n=new i(this.draco.HEAPF32.buffer,l,a).slice()}finally{this.draco._free(l)}return{value:n,size:r}}},{key:"_deduceAttributeName",value:function(e,t){for(var n=e.unique_id,i=0,r=Object.entries(t.extraAttributes||{});i<r.length;i++){var a=N(r[i],2),o=a[0];if(a[1]===n)return o}var s,l=e.attribute_type;for(s in jT)if(this.draco[s]===l)return jT[s];t=t.attributeNameEntry||"name";return e.metadata[t]?e.metadata[t].string:"CUSTOM_ATTRIBUTE_".concat(n)}},{key:"_getTopLevelMetadata",value:function(e){e=this.decoder.GetMetadata(e);return this._getDracoMetadata(e)}},{key:"_getAttributeMetadata",value:function(e,t){e=this.decoder.GetAttributeMetadata(e,t);return this._getDracoMetadata(e)}},{key:"_getDracoMetadata",value:function(e){if(!e||!e.ptr)return{};for(var t={},n=this.metadataQuerier.NumEntries(e),i=0;i<n;i++){var r=this.metadataQuerier.GetEntryName(e,i);t[r]=this._getDracoMetadataField(e,r)}return t}},{key:"_getDracoMetadataField",value:function(e,t){var n=new this.draco.DracoInt32Array;try{this.metadataQuerier.GetIntEntryArray(e,t,n);var i=function(e){for(var t=e.size(),n=new Int32Array(t),i=0;i<t;i++)n[i]=e.GetValue(i);return n}(n);return{int:this.metadataQuerier.GetIntEntry(e,t),string:this.metadataQuerier.GetStringEntry(e,t),double:this.metadataQuerier.GetDoubleEntry(e,t),intArray:i}}finally{this.draco.destroy(n)}}},{key:"_disableAttributeTransforms",value:function(e){var t,n=e.quantizedAttributes,e=e.octahedronAttributes,e=void 0===e?[]:e,i=q([].concat(J(void 0===n?[]:n),J(e)));try{for(i.s();!(t=i.n()).done;){var r=t.value;this.decoder.SkipAttributeTransform(this.draco[r])}}catch(e){i.e(e)}finally{i.f()}}},{key:"_getQuantizationTransform",value:function(e,t){var n=this,t=t.quantizedAttributes,t=void 0===t?[]:t,i=e.attribute_type();if(t.map(function(e){return n.decoder[e]}).includes(i)){var r=new this.draco.AttributeQuantizationTransform;try{if(r.InitFromAttribute(e))return{quantization_bits:r.quantization_bits(),range:r.range(),min_values:new Float32Array([1,2,3]).map(function(e){return r.min_value(e)})}}finally{this.draco.destroy(r)}}return null}},{key:"_getOctahedronTransform",value:function(e,t){var n=this,t=t.octahedronAttributes,t=void 0===t?[]:t,i=e.attribute_type();if(t.map(function(e){return n.decoder[e]}).includes(i)){t=new this.draco.AttributeQuantizationTransform;try{if(t.InitFromAttribute(e))return{quantization_bits:t.quantization_bits()}}finally{this.draco.destroy(t)}}return null}}]),t}();var qT,ad="1.4.1",XT="https://www.gstatic.com/draco/versioned/decoders/".concat(ad,"/draco_decoder.js"),YT="https://www.gstatic.com/draco/versioned/decoders/".concat(ad,"/draco_wasm_wrapper.js"),KT="https://www.gstatic.com/draco/versioned/decoders/".concat(ad,"/draco_decoder.wasm");function ZT(){return(ZT=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.modules||{},qT=n.draco3d?qT||n.draco3d.createDecoderModule({}).then(function(e){return{draco:e}}):qT||function(){return $T.apply(this,arguments)}(t),e.next=4,qT;case 4:return e.abrupt("return",e.sent);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $T(){return($T=d(V().mark(function e(r){var a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:e.t0=r.draco&&r.draco.decoderType,e.next="js"===e.t0?3:(e.t0,7);break;case 3:return e.next=5,dE(XT,"draco",r);case 5:return a=e.sent,e.abrupt("break",21);case 7:return e.t1=Promise,e.next=10,dE(YT,"draco",r);case 10:return e.t2=e.sent,e.next=13,dE(KT,"draco",r);case 13:return e.t3=e.sent,e.t4=[e.t2,e.t3],e.next=17,e.t1.all.call(e.t1,e.t4);case 17:o=e.sent,o=N(o,2),a=o[0],o=o[1];case 21:a=a||globalThis.DracoDecoderModule,e.next=24;var n=a,t=o,i={};return t&&(i.wasmBinary=t),new Promise(function(t){n(g(g({},i),{},{onModuleLoaded:function(e){return t({draco:e})}}))});case 24:return e.abrupt("return",e.sent);case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}var eS=g(g({},Id),{},{parse:function(e,t){return tS.apply(this,arguments)}});function tS(){return(tS=d(V().mark(function e(t,n){var i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,function(){return ZT.apply(this,arguments)}(n);case 2:return i=e.sent,i=i.draco,i=new JT(i),e.prev=5,e.abrupt("return",i.parseSync(t,null==n?void 0:n.draco));case 7:return e.prev=7,i.destroy(),e.finish(7);case 10:case"end":return e.stop()}},e,null,[[5,,7,10]])}))).apply(this,arguments)}var nS={BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DOUBLE:5130},iS=g(g({},{POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6}),nS),rS=(z(Zu={},nS.DOUBLE,Float64Array),z(Zu,nS.FLOAT,Float32Array),z(Zu,nS.UNSIGNED_SHORT,Uint16Array),z(Zu,nS.UNSIGNED_INT,Uint32Array),z(Zu,nS.UNSIGNED_BYTE,Uint8Array),z(Zu,nS.BYTE,Int8Array),z(Zu,nS.SHORT,Int16Array),z(Zu,nS.INT,Int32Array),Zu),aS={DOUBLE:nS.DOUBLE,FLOAT:nS.FLOAT,UNSIGNED_SHORT:nS.UNSIGNED_SHORT,UNSIGNED_INT:nS.UNSIGNED_INT,UNSIGNED_BYTE:nS.UNSIGNED_BYTE,BYTE:nS.BYTE,SHORT:nS.SHORT,INT:nS.INT},oS="Failed to convert GL type",sS=function(){function r(){te(this,r)}return A(r,null,[{key:"fromTypedArray",value:function(e){for(var t in e=ArrayBuffer.isView(e)?e.constructor:e,rS)if(rS[t]===e)return t;throw new Error(oS)}},{key:"fromName",value:function(e){e=aS[e];if(e)return e;throw new Error(oS)}},{key:"getArrayType",value:function(e){switch(e){case nS.UNSIGNED_SHORT_5_6_5:case nS.UNSIGNED_SHORT_4_4_4_4:case nS.UNSIGNED_SHORT_5_5_5_1:return Uint16Array;default:var t=rS[e];if(t)return t;throw new Error(oS)}}},{key:"getByteSize",value:function(e){return r.getArrayType(e).BYTES_PER_ELEMENT}},{key:"validate",value:function(e){return Boolean(r.getArrayType(e))}},{key:"createTypedArray",value:function(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,i=3<arguments.length?arguments[3]:void 0;return void 0===i&&(i=(t.byteLength-n)/r.getByteSize(e)),new(r.getArrayType(e))(t,n,i)}}]),r}();function lS(e,t){var n,i,t=1<arguments.length&&void 0!==t?t:255;return 2*(n=0,i=t,lB(e,function(e){return Math.max(n,Math.min(i,e))})/t)-1}function uS(e){return e<0?-1:1}function cS(e,t,n,i){var r=void 0;if(!i)throw new Error("math.gl assertion failed. ".concat(r));if(e<0||n<e||t<0||n<t)throw new Error("x and y must be unsigned normalized integers between 0 and ".concat(n));return i.x=lS(e,n),i.y=lS(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0&&(r=i.x,i.x=(1-Math.abs(i.y))*uS(r),i.y=(1-Math.abs(r))*uS(i.y)),i.normalize()}new Od,new B,new Od,new Od;var hS=function(){function n(e,t){te(this,n),l(this,"json",void 0),l(this,"buffer",void 0),l(this,"featuresLength",0),l(this,"_cachedTypedArrays",{}),this.json=e,this.buffer=t}return A(n,[{key:"getExtension",value:function(e){return this.json.extensions&&this.json.extensions[e]}},{key:"hasProperty",value:function(e){return Boolean(this.json[e])}},{key:"getGlobalProperty",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:iS.UNSIGNED_INT,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:1,i=this.json[e];return i&&Number.isFinite(i.byteOffset)?this._getTypedArrayFromBinary(e,t,n,1,i.byteOffset):i}},{key:"getPropertyArray",value:function(e,t,n){var i=this.json[e];return i&&Number.isFinite(i.byteOffset)?("componentType"in i&&(t=sS.fromName(i.componentType)),this._getTypedArrayFromBinary(e,t,n,this.featuresLength,i.byteOffset)):this._getTypedArrayFromArray(e,t,i)}},{key:"getProperty",value:function(e,t,n,i,r){var a=this.json[e];if(!a)return a;var o=this.getPropertyArray(e,t,n);if(1===n)return o[i];for(var s=0;s<n;++s)r[s]=o[n*i+s];return r}},{key:"_getTypedArrayFromBinary",value:function(e,t,n,i,r){var a=this._cachedTypedArrays,o=a[e];return o||(o=sS.createTypedArray(t,this.buffer.buffer,this.buffer.byteOffset+r,i*n),a[e]=o),o}},{key:"_getTypedArrayFromArray",value:function(e,t,n){var i=this._cachedTypedArrays,r=i[e];return r||(r=sS.createTypedArray(t,n),i[e]=r),r}}]),n}(),dS={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},pS={SCALAR:function(e,t){return e[t]},VEC2:function(e,t){return[e[2*t+0],e[2*t+1]]},VEC3:function(e,t){return[e[3*t+0],e[3*t+1],e[3*t+2]]},VEC4:function(e,t){return[e[4*t+0],e[4*t+1],e[4*t+2],e[4*t+3]]},MAT2:function(e,t){return[e[4*t+0],e[4*t+1],e[4*t+2],e[4*t+3]]},MAT3:function(e,t){return[e[9*t+0],e[9*t+1],e[9*t+2],e[9*t+3],e[9*t+4],e[9*t+5],e[9*t+6],e[9*t+7],e[9*t+8]]},MAT4:function(e,t){return[e[16*t+0],e[16*t+1],e[16*t+2],e[16*t+3],e[16*t+4],e[16*t+5],e[16*t+6],e[16*t+7],e[16*t+8],e[16*t+9],e[16*t+10],e[16*t+11],e[16*t+12],e[16*t+13],e[16*t+14],e[16*t+15]]}},fS={SCALAR:function(e,t,n){t[n]=e},VEC2:function(e,t,n){t[2*n+0]=e[0],t[2*n+1]=e[1]},VEC3:function(e,t,n){t[3*n+0]=e[0],t[3*n+1]=e[1],t[3*n+2]=e[2]},VEC4:function(e,t,n){t[4*n+0]=e[0],t[4*n+1]=e[1],t[4*n+2]=e[2],t[4*n+3]=e[3]},MAT2:function(e,t,n){t[4*n+0]=e[0],t[4*n+1]=e[1],t[4*n+2]=e[2],t[4*n+3]=e[3]},MAT3:function(e,t,n){t[9*n+0]=e[0],t[9*n+1]=e[1],t[9*n+2]=e[2],t[9*n+3]=e[3],t[9*n+4]=e[4],t[9*n+5]=e[5],t[9*n+6]=e[6],t[9*n+7]=e[7],t[9*n+8]=e[8],t[9*n+9]=e[9]},MAT4:function(e,t,n){t[16*n+0]=e[0],t[16*n+1]=e[1],t[16*n+2]=e[2],t[16*n+3]=e[3],t[16*n+4]=e[4],t[16*n+5]=e[5],t[16*n+6]=e[6],t[16*n+7]=e[7],t[16*n+8]=e[8],t[16*n+9]=e[9],t[16*n+10]=e[10],t[16*n+11]=e[11],t[16*n+12]=e[12],t[16*n+13]=e[13],t[16*n+14]=e[14],t[16*n+15]=e[15]}};var mS=function(e){return void 0!==e};function vS(e,t,n){if(t){var e=e.getExtension("3DTILES_batch_table_hierarchy"),i=t.HIERARCHY;if(i&&(console.warn("3D Tile Parser: HIERARCHY is deprecated. Use 3DTILES_batch_table_hierarchy."),t.extensions=t.extensions||{},e=t.extensions["3DTILES_batch_table_hierarchy"]=i),e){var r,a,o,s=n,l=(t=e).instancesLength,u=t.classes,c=t.classIds,h=t.parentCounts,t=t.parentIds,d=l;if(mS(c.byteOffset)&&(c.componentType=defaultValue(c.componentType,GL.UNSIGNED_SHORT),c.type=AttributeType.SCALAR,A=getBinaryAccessor(c),c=A.createArrayBufferView(s.buffer,s.byteOffset+c.byteOffset,l)),mS(h))for(mS(h.byteOffset)&&(h.componentType=defaultValue(h.componentType,GL.UNSIGNED_SHORT),h.type=AttributeType.SCALAR,A=getBinaryAccessor(h),h=A.createArrayBufferView(s.buffer,s.byteOffset+h.byteOffset,l)),o=new Uint16Array(l),r=d=0;r<l;++r)o[r]=d,d+=h[r];mS(t)&&mS(t.byteOffset)&&(t.componentType=defaultValue(t.componentType,GL.UNSIGNED_SHORT),t.type=AttributeType.SCALAR,A=getBinaryAccessor(t),t=A.createArrayBufferView(s.buffer,s.byteOffset+t.byteOffset,d));var p=u.length;for(r=0;r<p;++r){var f=u[r].length,m=u[r].instances,f=getBinaryProperties(f,m,s);u[r].instances=combine(f,m)}var v=new Array(p).fill(0),g=new Uint16Array(l);for(r=0;r<l;++r)a=c[r],g[r]=v[a],++v[a];for(var A={classes:u,classIds:c,classIndexes:g,parentCounts:h,parentIndexes:o,parentIds:t},y=A,w=y.classIds.length,b=0;b<w;++b)!function e(t,n,i){var r=t.parentCounts;var a=t.parentIds;var o=t.parentIndexes;var s=t.classIds;s=s.length;if(!mS(a))return;assert(n<s,"Parent index ".concat(n," exceeds the total number of instances: ").concat(s));assert(-1===i.indexOf(n),"Circular dependency detected in the batch table hierarchy.");i.push(n);var l=mS(r)?r[n]:1;var u=mS(r)?o[n]:n;for(var c=0;c<l;++c){var h=a[u+c];h!==n&&e(t,h,i)}i.pop(n)}(y,b,stack);return A}}return null}function gS(e,t,n){if(e){var i=e.parentCounts;if(e.parentIds)return n(e,t);if(0<i){var r=e,a=t,o=n,i=r.classIds,s=r.parentCounts,l=r.parentIds,u=r.parentIndexes,i=i.length,c=scratchVisited,h=(c.length=Math.max(c.length,i),++marker),d=scratchStack;for(d.length=0,d.push(a);0<d.length;)if(a=d.pop(),c[a]!==h){c[a]=h;var p=o(r,a);if(mS(p))return p;for(var f=s[a],m=u[a],v=0;v<f;++v){var g=l[m+v];g!==a&&d.push(g)}}return null}for(var A=e,y=t,w=n,b=!0;b;){var x=w(A,y);if(mS(x))return x;x=A.parentIds[y];b=x!==y,y=x}throw new Error("traverseHierarchySingleParent")}}function AS(e){return null!=e}function yS(e,t){return e}var wS={HIERARCHY:!0,extensions:!0,extras:!0},bS=function(){function a(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{};for(i in te(this,a),l(this,"json",void 0),l(this,"binary",void 0),l(this,"featureCount",void 0),l(this,"_extensions",void 0),l(this,"_properties",void 0),l(this,"_binaryProperties",void 0),l(this,"_hierarchy",void 0),Vx(0<=n),this.json=e||{},this.binary=t,this.featureCount=n,this._extensions=(null==(e=this.json)?void 0:e.extensions)||{},this._properties={},this.json)wS[i]||(this._properties[i]=this.json[i]);this._binaryProperties=this._initializeBinaryProperties(),r["3DTILES_batch_table_hierarchy"]&&(this._hierarchy=vS(this,this.json,this.binary))}return A(a,[{key:"getExtension",value:function(e){return this.json&&this.json.extensions&&this.json.extensions[e]}},{key:"memorySizeInBytes",value:function(){return 0}},{key:"isClass",value:function(e,n){return this._checkBatchId(e),Vx("string"==typeof n,n),!!this._hierarchy&&AS(gS(this._hierarchy,e,function(e,t){t=e.classIds[t];return e.classes[t].name===n}))}},{key:"isExactClass",value:function(e,t){return Vx("string"==typeof t,t),this.getExactClassName(e)===t}},{key:"getExactClassName",value:function(e){if(this._checkBatchId(e),this._hierarchy)return e=this._hierarchy.classIds[e],this._hierarchy.classes[e].name}},{key:"hasProperty",value:function(e,t){return this._checkBatchId(e),Vx("string"==typeof t,t),AS(this._properties[t])||this._hasPropertyInHierarchy(e,t)}},{key:"getPropertyNames",value:function(e,t){this._checkBatchId(e),(t=AS(t)?t:[]).length=0;var n=Object.keys(this._properties);return t.push.apply(t,n),this._hierarchy&&this._getPropertyNamesInHierarchy(e,t),t}},{key:"getProperty",value:function(e,t){if(this._checkBatchId(e),Vx("string"==typeof t,t),this._binaryProperties){var n=this._binaryProperties[t];if(AS(n))return this._getBinaryProperty(n,e)}n=this._properties[t];if(AS(n))return yS(n[e]);if(this._hierarchy){n=this._getHierarchyProperty(e,t);if(AS(n))return n}}},{key:"setProperty",value:function(e,t,n){var i=this.featureCount;if(this._checkBatchId(e),Vx("string"==typeof t,t),this._binaryProperties){var r=this._binaryProperties[t];if(r)return void this._setBinaryProperty(r,e,n)}this._hierarchy&&this._setHierarchyProperty(this,e,t,n)||(AS(r=this._properties[t])||(this._properties[t]=new Array(i),r=this._properties[t]),r[e]=yS(n))}},{key:"_checkBatchId",value:function(e){if(!(0<=e&&e<this.featureCount))throw new Error("batchId not in range [0, featureCount - 1].")}},{key:"_getBinaryProperty",value:function(e,t){return e.unpack(e.typedArray,t)}},{key:"_setBinaryProperty",value:function(e,t,n){e.pack(n,e.typedArray,t)}},{key:"_initializeBinaryProperties",value:function(){var e,t=null;for(e in this._properties){var n=this._properties[e],n=this._initializeBinaryProperty(e,n);n&&((t=t||{})[e]=n)}return t}},{key:"_initializeBinaryProperty",value:function(e,t){var n,i,r,a,o,s;return"byteOffset"in t?(t=t,Vx(this.binary,"Property ".concat(e," requires a batch table binary.")),Vx(t.type,"Property ".concat(e," requires a type.")),e=t,t=this.binary.buffer,n=0|this.binary.byteOffset,i=this.featureCount,r=e.componentType,Vx(e.componentType),r="string"==typeof r?sS.fromName(r):r,a=dS[e.type],o=pS[e.type],s=fS[e.type],n+=e.byteOffset,{typedArray:(e={values:sS.createTypedArray(r,t,n,a*i),type:r,size:a,unpacker:o,packer:s}).values,componentCount:e.size,unpack:e.unpacker,pack:e.packer}):null}},{key:"_hasPropertyInHierarchy",value:function(e,n){return!!this._hierarchy&&(e=gS(this._hierarchy,e,function(e,t){t=e.classIds[t];return AS(e.classes[t].instances[n])}),AS(e))}},{key:"_getPropertyNamesInHierarchy",value:function(e,r){gS(this._hierarchy,e,function(e,t){var n,t=e.classIds[t],i=e.classes[t].instances;for(n in i)i.hasOwnProperty(n)&&-1===r.indexOf(n)&&r.push(n)})}},{key:"_getHierarchyProperty",value:function(e,i){var r=this;return gS(this._hierarchy,e,function(e,t){var n=e.classIds[t],n=e.classes[n],e=e.classIndexes[t],t=n.instances[i];return AS(t)?AS(t.typedArray)?r._getBinaryProperty(t,e):yS(t[e]):null})}},{key:"_setHierarchyProperty",value:function(e,i,r,a){var o=this,t=gS(this._hierarchy,i,function(e,t){var n=e.classIds[t],n=e.classes[n],e=e.classIndexes[t],n=n.instances[r];return!!AS(n)&&(Vx(t===i,'Inherited property "'.concat(r,'" is read-only.')),AS(n.typedArray)?o._setBinaryProperty(n,e,a):n[e]=yS(a),!0)});return AS(t)}}]),a}(),xS=4;function ES(e,t,n){n=2<arguments.length&&void 0!==n?n:0,t=new DataView(t);if(e.magic=t.getUint32(n,!0),e.version=t.getUint32(n+=xS,!0),e.byteLength=t.getUint32(n+=xS,!0),n+=xS,1!==e.version)throw new Error("3D Tile Version ".concat(e.version," not supported"));return n}var CS=4,BS="b3dm tile in legacy format.";function _S(e,t,n){var i,t=new DataView(t),r=(e.header=e.header||{},t.getUint32(n,!0)),a=t.getUint32(n+=CS,!0),o=t.getUint32(n+=CS,!0),t=t.getUint32(n+=CS,!0);return n+=CS,570425344<=o?(n-=2*CS,i=r,o=a,a=r=t=0,console.warn(BS)):570425344<=t&&(n-=CS,i=o,o=r,t=a,a=r=0,console.warn(BS)),e.header.featureTableJsonByteLength=r,e.header.featureTableBinaryByteLength=a,e.header.batchTableJsonByteLength=o,e.header.batchTableBinaryByteLength=t,e.header.batchLength=i,n}function MS(e,t,n){return n=function(e,t,n){var i=e.header,r=i.batchTableJsonByteLength,i=i.batchTableBinaryByteLength;{var a;0<r&&(a=xT(t,n,r),e.batchTableJson=JSON.parse(a),n+=r,0<i)&&(e.batchTableBinary=new Uint8Array(t,n,i),e.batchTableBinary=new Uint8Array(e.batchTableBinary),n+=i)}return n}(e,t,n=function(e,t,n){var i=e.header,r=i.featureTableJsonByteLength,a=i.featureTableBinaryByteLength,i=i.batchLength;e.featureTableJson={BATCH_LENGTH:i||0},0<r&&(i=xT(t,n,r),e.featureTableJson=JSON.parse(i));return n+=r,e.featureTableBinary=new Uint8Array(t,n,a),n+=a}(e,t,n))}function TS(e,t,n){if(!(t||e&&e.batchIds&&n))return null;var i=e.batchIds,r=e.isRGB565,a=e.pointCount;if(i&&n){for(var o=new Uint8ClampedArray(3*a),s=0;s<a;s++){var l=i[s],l=n.getProperty(l,"dimensions").map(function(e){return 255*e});o[3*s]=l[0],o[3*s+1]=l[1],o[3*s+2]=l[2]}return{type:iS.UNSIGNED_BYTE,value:o,size:3,normalized:!0}}if(r){for(var u=new Uint8ClampedArray(3*a),c=0;c<a;c++){var h=function(e,t){var t=1<arguments.length&&void 0!==t?t:[0,0,0],n=e>>5&63,i=31&e;return t[0]=(e>>11&31)<<3,t[1]=n<<2,t[2]=i<<3,t}(t[c]);u[3*c]=h[0],u[3*c+1]=h[1],u[3*c+2]=h[2]}return{type:iS.UNSIGNED_BYTE,value:u,size:3,normalized:!0}}return t&&t.length===3*a?{type:iS.UNSIGNED_BYTE,value:t,size:3,normalized:!0}:{type:iS.UNSIGNED_BYTE,value:t,size:4,normalized:!0}}var SS=new B;function IS(e,t){if(!t)return null;if(e.isOctEncoded16P){for(var n=new Float32Array(3*e.pointsLength),i=0;i<e.pointsLength;i++)r=t[2*i],a=t[2*i+1],cS(r,a,255,SS),SS.toArray(n,3*i);return{type:iS.FLOAT,size:2,value:n}}var r,a;return{type:iS.FLOAT,size:2,value:t}}function DS(e,t,n){if(!e.isQuantized)return t;if(n["3d-tiles"]&&n["3d-tiles"].decodeQuantizedPositions){e.isQuantized=!1;for(var i=e,r=t,a=new B,o=new Float32Array(3*i.pointCount),s=0;s<i.pointCount;s++)a.set(r[3*s],r[3*s+1],r[3*s+2]).scale(1/i.quantizedRange).multiply(i.quantizedVolumeScale).add(i.quantizedVolumeOffset).toArray(o,3*s);return o}return{type:iS.UNSIGNED_SHORT,value:t,size:3,normalized:!0}}function PS(){return(PS=d(V().mark(function e(o,s,l,u,c){var h,d;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return l=ES(o,s,l),l=_S(o,s,l),l=MS(o,s,l),(t=o).attributes={positions:null,colors:null,normals:null,batchIds:null},t.isQuantized=!1,t.isTranslucent=!1,t.isRGB565=!1,t.isOctEncoded16P=!1,d=function(e){var t=new hS(e.featureTableJson,e.featureTableBinary),n=t.getGlobalProperty("POINTS_LENGTH");if(!Number.isFinite(n))throw new Error("POINTS_LENGTH must be defined");t.featuresLength=n,e.featuresLength=n,e.pointsLength=n,e.pointCount=n,e.rtcCenter=t.getGlobalProperty("RTC_CENTER",iS.FLOAT,3);n=function(e,t){var n=null;if(!e.batchIds&&t.hasProperty("BATCH_ID")&&(e.batchIds=t.getPropertyArray("BATCH_ID",iS.UNSIGNED_SHORT,1),e.batchIds)){t=t.getGlobalProperty("BATCH_LENGTH");if(!t)throw new Error("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");var i=e.batchTableJson,e=e.batchTableBinary;n=new bS(i,e,t)}return n}(e,t);return{featureTable:t,batchTable:n}}(o),h=d.featureTable,d=d.batchTable,e.next=7,function(){return kS.apply(this,arguments)}(o,h,d,u,c);case 7:r=i=n=t=void 0;var t=o,n=h,i=u;if(!t.attributes.positions)if(n.hasProperty("POSITION"))t.attributes.positions=n.getPropertyArray("POSITION",iS.FLOAT,3);else if(n.hasProperty("POSITION_QUANTIZED")){var r=n.getPropertyArray("POSITION_QUANTIZED",iS.UNSIGNED_SHORT,3);if(t.isQuantized=!0,t.quantizedRange=65535,t.quantizedVolumeScale=n.getGlobalProperty("QUANTIZED_VOLUME_SCALE",iS.FLOAT,3),!t.quantizedVolumeScale)throw new Error("QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");if(t.quantizedVolumeOffset=n.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",iS.FLOAT,3),!t.quantizedVolumeOffset)throw new Error("QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");t.attributes.positions=DS(t,r,i)}if(!t.attributes.positions)throw new Error("Either POSITION or POSITION_QUANTIZED must be defined.");a=i=r=n=void 0;var n=o,r=h,i=d,a=(n.attributes.colors||(a=null,r.hasProperty("RGBA")?(a=r.getPropertyArray("RGBA",iS.UNSIGNED_BYTE,4),n.isTranslucent=!0):r.hasProperty("RGB")?a=r.getPropertyArray("RGB",iS.UNSIGNED_BYTE,3):r.hasProperty("RGB565")&&(a=r.getPropertyArray("RGB565",iS.UNSIGNED_SHORT,1),n.isRGB565=!0),n.attributes.colors=TS(n,a,i)),r.hasProperty("CONSTANT_RGBA")&&(n.constantRGBA=r.getGlobalProperty("CONSTANT_RGBA",iS.UNSIGNED_BYTE,4)),n=i=a=void 0,o),i=h;return a.attributes.normals||(n=null,i.hasProperty("NORMAL")?n=i.getPropertyArray("NORMAL",iS.FLOAT,3):i.hasProperty("NORMAL_OCT16P")&&(n=i.getPropertyArray("NORMAL_OCT16P",iS.UNSIGNED_BYTE,2),a.isOctEncoded16P=!0),a.attributes.normals=IS(a,n)),e.abrupt("return",l);case 11:case"end":return e.stop()}var t},e)}))).apply(this,arguments)}function kS(){return(kS=d(V().mark(function e(t,n,i,r,a){var o,s,l,u,c,h;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((c=t.batchTableJson&&t.batchTableJson.extensions&&t.batchTableJson.extensions["3DTILES_draco_point_compression"])&&(l=c.properties),!(c=n.getExtension("3DTILES_draco_point_compression"))){e.next=15;break}if(s=c.properties,u=c.byteOffset,c=c.byteLength,s&&Number.isFinite(u)&&c){e.next=9;break}throw new Error("Draco properties, byteOffset, and byteLength must be defined");case 9:o=t.featureTableBinary.slice(u,u+c),t.hasPositions=Number.isFinite(s.POSITION),t.hasColors=Number.isFinite(s.RGB)||Number.isFinite(s.RGBA),t.hasNormals=Number.isFinite(s.NORMAL),t.hasBatchIds=Number.isFinite(s.BATCH_ID),t.isTranslucent=Number.isFinite(s.RGBA);case 15:if(o){e.next=17;break}return e.abrupt("return",!0);case 17:return h={buffer:o,properties:g(g({},s),l),featureTableProperties:s,batchTableProperties:l,dequantizeInShader:!1},e.next=20,function(){return LS.apply(this,arguments)}(t,h,r,a);case 20:return e.abrupt("return",e.sent);case 21:case"end":return e.stop()}},e)}))).apply(this,arguments)}function LS(){return(LS=d(V().mark(function e(t,n,i,r){var a,o,s,l,u,c,h,d,p,f,m,v;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=r.parse,delete(s=g(g({},i),{},{draco:g(g({},i.draco),{},{extraAttributes:n.batchTableProperties||{}})}))["3d-tiles"],e.next=5,o(n.buffer,eS,s);case 5:if(a=e.sent,o=a.attributes.POSITION&&a.attributes.POSITION.value,s=a.attributes.COLOR_0&&a.attributes.COLOR_0.value,l=a.attributes.NORMAL&&a.attributes.NORMAL.value,u=a.attributes.BATCH_ID&&a.attributes.BATCH_ID.value,h=o&&a.attributes.POSITION.value.quantization,c=l&&a.attributes.NORMAL.value.quantization,h&&(h=a.POSITION.data.quantization,d=h.range,t.quantizedVolumeScale=new B(d,d,d),t.quantizedVolumeOffset=new B(h.minValues),t.quantizedRange=(1<<h.quantizationBits)-1,t.isQuantizedDraco=!0),c&&(t.octEncodedRange=(1<<a.NORMAL.data.quantization.quantizationBits)-1,t.isOctEncodedDraco=!0),p={},n.batchTableProperties)for(f=0,m=Object.keys(n.batchTableProperties);f<m.length;f++)v=m[f],a.attributes[v]&&a.attributes[v].value&&(p[v.toLowerCase()]=a.attributes[v].value);t.attributes=g({positions:o,colors:TS(t,s,void 0),normals:l,batchIds:u},p);case 17:case"end":return e.stop()}},e)}))).apply(this,arguments)}var RS,FS,OS="https://unpkg.com/@loaders.gl/textures@".concat("3.1.4","/dist/libs/basis_encoder.wasm"),NS="https://unpkg.com/@loaders.gl/textures@".concat("3.1.4","/dist/libs/basis_encoder.js");function GS(){return US.apply(this,arguments)}function US(){return(US=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((n=t.modules||{}).basis)return e.abrupt("return",n.basis);e.next=3;break;case 3:return RS=RS||function(){return zS.apply(this,arguments)}(t),e.next=6,RS;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function zS(){return(zS=d(V().mark(function e(r){var a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=a=null,e.t0=Promise,e.next=5,dE("basis_transcoder.js","textures",r);case 5:return e.t1=e.sent,e.next=8,dE("basis_transcoder.wasm","textures",r);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:s=e.sent,s=N(s,2),a=s[0],o=s[1],a=a||globalThis.BASIS,e.next=19;var t=a,n=o,i={};return n&&(i.wasmBinary=n),new Promise(function(n){t(i).then(function(e){var t=e.BasisFile;(0,e.initializeBasis)(),n({BasisFile:t})})});case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}},e)}))).apply(this,arguments)}function HS(){return QS.apply(this,arguments)}function QS(){return(QS=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((n=t.modules||{}).basisEncoder)return e.abrupt("return",n.basisEncoder);e.next=3;break;case 3:return FS=FS||function(){return VS.apply(this,arguments)}(t),e.next=6,FS;case 6:return e.abrupt("return",e.sent);case 7:case"end":return e.stop()}},e)}))).apply(this,arguments)}function VS(){return(VS=d(V().mark(function e(r){var a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=a=null,e.t0=Promise,e.next=5,dE(NS,"textures",r);case 5:return e.t1=e.sent,e.next=8,dE(OS,"textures",r);case 8:return e.t2=e.sent,e.t3=[e.t1,e.t2],e.next=12,e.t0.all.call(e.t0,e.t3);case 12:s=e.sent,s=N(s,2),a=s[0],o=s[1],a=a||globalThis.BASIS,e.next=19;var t=a,n=o,i={};return n&&(i.wasmBinary=n),new Promise(function(r){t(i).then(function(e){var t=e.BasisFile,n=e.KTX2File,i=e.initializeBasis,e=e.BasisEncoder;i(),r({BasisFile:t,KTX2File:n,BasisEncoder:e})})});case 19:return e.abrupt("return",e.sent);case 20:case"end":return e.stop()}},e)}))).apply(this,arguments)}var jS=["","WEBKIT_","MOZ_"],WS={WEBGL_compressed_texture_s3tc:"dxt",WEBGL_compressed_texture_s3tc_srgb:"dxt-srgb",WEBGL_compressed_texture_etc1:"etc1",WEBGL_compressed_texture_etc:"etc2",WEBGL_compressed_texture_pvrtc:"pvrtc",WEBGL_compressed_texture_atc:"atc",WEBGL_compressed_texture_astc:"astc",EXT_texture_compression_rgtc:"rgtc"},JS=null;function qS(e){if(!JS){e=e||function(){try{return document.createElement("canvas").getContext("webgl")}catch(e){return null}}()||void 0,JS=new Set;var t,n=q(jS);try{for(n.s();!(t=n.n()).done;){var i,r,a=t.value;for(i in WS)e&&e.getExtension("".concat(a).concat(i))&&(r=WS[i],JS.add(r))}}catch(e){n.e(e)}finally{n.f()}}return JS}var XS=[171,75,84,88,32,50,48,187,13,10,26,10];var YS={etc1:{basisFormat:0,compressed:!0,format:36196},etc2:{basisFormat:1,compressed:!0},bc1:{basisFormat:2,compressed:!0,format:33776},bc3:{basisFormat:3,compressed:!0,format:33779},bc4:{basisFormat:4,compressed:!0},bc5:{basisFormat:5,compressed:!0},"bc7-m6-opaque-only":{basisFormat:6,compressed:!0},"bc7-m5":{basisFormat:7,compressed:!0},"pvrtc1-4-rgb":{basisFormat:8,compressed:!0,format:35840},"pvrtc1-4-rgba":{basisFormat:9,compressed:!0,format:35842},"astc-4x4":{basisFormat:10,compressed:!0,format:37808},"atc-rgb":{basisFormat:11,compressed:!0},"atc-rgba-interpolated-alpha":{basisFormat:12,compressed:!0},rgba32:{basisFormat:13,compressed:!1},rgb565:{basisFormat:14,compressed:!1},bgr565:{basisFormat:15,compressed:!1},rgba4444:{basisFormat:16,compressed:!1}};function KS(){return(KS=d(V().mark(function e(n,i){var r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if("auto"!==i.basis.containerFormat){e.next=11;break}if(t=n,(t=new Uint8Array(t)).byteLength<XS.length||t[0]!==XS[0]||t[1]!==XS[1]||t[2]!==XS[2]||t[3]!==XS[3]||t[4]!==XS[4]||t[5]!==XS[5]||t[6]!==XS[6]||t[7]!==XS[7]||t[8]!==XS[8]||t[9]!==XS[9]||t[10]!==XS[10]||t[11]!==XS[11]){e.next=6;break}return e.next=4,HS(i);case 4:return r=e.sent,e.abrupt("return",$S(r.KTX2File,n,i));case 6:return e.next=8,GS(i);case 8:return r=e.sent,o=r.BasisFile,e.abrupt("return",ZS(o,n,i));case 11:e.t0=i.basis.module,e.next="encoder"===e.t0?14:(e.t0,22);break;case 14:return e.next=16,HS(i);case 16:a=e.sent,e.t1=i.basis.containerFormat,e.next="ktx2"===e.t1?20:(e.t1,21);break;case 20:return e.abrupt("return",$S(a.KTX2File,n,i));case 21:return e.abrupt("return",ZS(a.BasisFile,n,i));case 22:return e.next=24,GS(i);case 24:return o=e.sent,s=o.BasisFile,e.abrupt("return",ZS(s,n,i));case 27:case"end":return e.stop()}var t},e)}))).apply(this,arguments)}function ZS(e,t,n){var i,r,a,o,s,l,u,c,h,d,p=new e(new Uint8Array(t));try{if(!p.startTranscoding())return null;for(var f=p.getNumImages(),m=[],v=0;v<f;v++){for(var g=p.getNumLevels(v),A=[],y=0;y<g;y++)A.push((r=v,a=y,o=n,h=c=u=l=s=void 0,d=void 0,s=(i=p).getImageWidth(r,a),l=i.getImageHeight(r,a),u=i.getHasAlpha(),o=eI(o,u),c=o.compressed,h=o.format,o=o.basisFormat,d=i.getImageTranscodedSizeInBytes(r,a,o),d=new Uint8Array(d),i.transcodeImage(d,r,a,o,0,0)?{width:s,height:l,data:d,compressed:c,hasAlpha:u,format:h}:null));m.push(A)}return m}finally{p.close(),p.delete()}}function $S(e,t,n){var i,r,a,o,s,l,u,c,h,d=new e(new Uint8Array(t));try{if(!d.startTranscoding())return null;for(var p=d.getLevels(),f=[],m=0;m<p;m++){f.push((r=m,a=n,c=u=o=l=s=o=void 0,h=void 0,o=(i=d).getImageLevelInfo(r,0,0),s=o.alphaFlag,l=o.height,o=o.width,a=eI(a,s),u=a.compressed,c=a.format,a=a.basisFormat,h=i.getImageTranscodedSizeInBytes(r,0,0,a),h=new Uint8Array(h),i.transcodeImage(h,r,0,0,a,0,-1,-1)?{width:o,height:l,data:h,compressed:u,alphaFlag:s,format:c}:null));break}return f}finally{d.close(),d.delete()}}function eI(e,t){e=(e="object"===v(e="auto"===(e=e&&e.basis&&e.basis.format)?tI():e)?t?e.alpha:e.noAlpha:e).toLowerCase();return YS[e]}function tI(){var e=qS();return e.has("astc")?"astc-4x4":e.has("dxt")?{alpha:"bc3",noAlpha:"bc1"}:e.has("pvrtc")?{alpha:"pvrtc1-4-rgba",noAlpha:"pvrtc1-4-rgb"}:e.has("etc1")?"etc1":e.has("etc2")?"etc2":"rgb565"}var nI=g(g({},{name:"Basis",id:"basis",module:"textures",version:"3.1.4",worker:!0,extensions:["basis","ktx2"],mimeTypes:["application/octet-stream","image/ktx2"],tests:["sB"],binary:!0,options:{basis:{format:"auto",libraryPath:"libs/",containerFormat:"auto",module:"transcoder"}}}),{},{parse:function(e,t){return KS.apply(this,arguments)}}),Vu=globalThis._parseImageNode,iI="undefined"!=typeof Image,rI="undefined"!=typeof ImageBitmap,Yd=Boolean(Vu),aI=!!jx||Yd;function oI(e){e=function(e){if("undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap)return"imagebitmap";if("undefined"!=typeof Image&&e instanceof Image)return"image";if(e&&"object"===v(e)&&e.data&&e.width&&e.height)return"data";return null}(e);if(e)return e;throw new Error("Not an image")}var sI=/^data:image\/svg\+xml/,lI=/\.svg((\?|#).*)?$/;function uI(e){return e&&(sI.test(e)||lI.test(e))}function cI(e,t){if(uI(t))throw new Error("SVG cannot be parsed directly to imagebitmap");return new Blob([new Uint8Array(e)])}function hI(){return dI.apply(this,arguments)}function dI(){return(dI=d(V().mark(function e(t,n,i){var r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=function(e,t){if(uI(t)){var n=(new TextDecoder).decode(e);try{"function"==typeof unescape&&"function"==typeof encodeURIComponent&&(n=unescape(encodeURIComponent(n)))}catch(e){throw new Error(e.message)}return"data:image/svg+xml;base64,".concat(btoa(n))}return cI(e,t)}(t,i),a=self.URL||self.webkitURL,o="string"!=typeof r&&a.createObjectURL(r),e.prev=3,e.next=6,function(){return pI.apply(this,arguments)}(o||r,n);case 6:return e.abrupt("return",e.sent);case 7:return e.prev=7,o&&a.revokeObjectURL(o),e.finish(7);case 10:case"end":return e.stop()}},e,null,[[3,,7,10]])}))).apply(this,arguments)}function pI(){return(pI=d(V().mark(function e(n,t){var i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((i=new Image).src=n,t.image&&t.image.decode&&i.decode)return e.next=5,i.decode();e.next=6;break;case 5:return e.abrupt("return",i);case 6:return e.next=8,new Promise(function(e,t){try{i.onload=function(){return e(i)},i.onerror=function(e){return t(new Error("Could not load image ".concat(n,": ").concat(e)))}}catch(e){t(e)}});case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}var fI={},mI=!0;function vI(){return(vI=d(V().mark(function e(t,n,i){var r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(uI(i))return e.next=3,hI(t,n,i);e.next=7;break;case 3:r=e.sent,r=r,e.next=8;break;case 7:r=cI(t,i);case 8:return a=n&&n.imagebitmap,e.next=11,function(){return gI.apply(this,arguments)}(r,a);case 11:return e.abrupt("return",e.sent);case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function gI(){return(gI=d(V().mark(function e(t){var n,i=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!function(e){for(var t in e||fI)return;return 1}(n=1<i.length&&void 0!==i[1]?i[1]:null)&&mI?n:null)return e.prev=3,e.next=6,createImageBitmap(t,n);e.next=13;break;case 6:return e.abrupt("return",e.sent);case 9:e.prev=9,e.t0=e.catch(3),console.warn(e.t0),mI=!1;case 13:return e.next=15,createImageBitmap(t);case 15:return e.abrupt("return",e.sent);case 16:case"end":return e.stop()}},e,null,[[3,9]])}))).apply(this,arguments)}var AI=!1,yI=!0;function wI(e){e=bI(e);return function(e){e=bI(e);return 24<=e.byteLength&&2303741511===e.getUint32(0,AI)?{mimeType:"image/png",width:e.getUint32(16,AI),height:e.getUint32(20,AI)}:null}(e)||function(e){var t=bI(e);if(t.byteLength>=3&&t.getUint16(0,AI)===65496&&t.getUint8(2)===255)for(var e=function(){for(var e=new Set([65499,65476,65484,65501,65534]),t=65504;t<65520;++t)e.add(t);var n=new Set([65472,65473,65474,65475,65477,65478,65479,65481,65482,65483,65485,65486,65487,65502]);return{tableMarkers:e,sofMarkers:n}}(),n=e.tableMarkers,i=e.sofMarkers,r=2;r+9<t.byteLength;){var a=t.getUint16(r,AI);if(i.has(a))return{mimeType:"image/jpeg",height:t.getUint16(r+5,AI),width:t.getUint16(r+7,AI)};if(!n.has(a))return null;r=(r+=2)+t.getUint16(r,AI)}return null}(e)||function(e){e=bI(e);return 10<=e.byteLength&&1195984440===e.getUint32(0,AI)?{mimeType:"image/gif",width:e.getUint16(6,yI),height:e.getUint16(8,yI)}:null}(e)||function(e){e=bI(e);return 14<=e.byteLength&&16973===e.getUint16(0,AI)&&e.getUint32(2,yI)===e.byteLength?{mimeType:"image/bmp",width:e.getUint32(18,yI),height:e.getUint32(22,yI)}:null}(e)}function bI(e){if(e instanceof DataView)return e;if(ArrayBuffer.isView(e))return new DataView(e.buffer);if(e instanceof ArrayBuffer)return new DataView(e);throw new Error("toDataView")}function xI(){return(xI=d(V().mark(function e(t,n){var i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=wI(t)||{},i=i.mimeType,Vx(r=globalThis._parseImageNode),e.next=5,r(t,i);case 5:return e.abrupt("return",e.sent);case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function EI(){return(EI=d(V().mark(function e(t,n,i){var r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=(n=n||{}).image||{},r=r.type||"auto",a=(i||{}).url,o=function(e){switch(e){case"auto":case"data":return function(){if(rI)return"imagebitmap";if(iI)return"image";if(aI)return"data";throw new Error("Install '@loaders.gl/polyfills' to parse images under Node.js")}();default:return function(e){switch(e){case"auto":case"imagebitmap":case"image":case"data":return;default:throw new Error("@loaders.gl/images: image ".concat(e," not supported in this environment"))}}(e),e}}(r),e.t0=o,e.next="imagebitmap"===e.t0?8:"image"===e.t0?12:"data"===e.t0?16:20;break;case 8:return e.next=10,function(){return vI.apply(this,arguments)}(t,n,a);case 10:return s=e.sent,e.abrupt("break",21);case 12:return e.next=14,hI(t,n,a);case 14:return s=e.sent,e.abrupt("break",21);case 16:return e.next=18,function(){return xI.apply(this,arguments)}(t);case 18:return s=e.sent,e.abrupt("break",21);case 20:Vx(!1);case 21:return"data"===r&&(s=function(e){switch(oI(e)){case"data":return e;case"image":case"imagebitmap":var t=document.createElement("canvas"),n=t.getContext("2d");if(n)return t.width=e.width,t.height=e.height,n.drawImage(e,0,0),n.getImageData(0,0,e.width,e.height);throw new Error("getImageData");default:throw new Error("getImageData")}}(s)),e.abrupt("return",s);case 23:case"end":return e.stop()}},e)}))).apply(this,arguments)}var CI={id:"image",module:"images",name:"Images",version:"3.1.4",mimeTypes:["image/png","image/jpeg","image/gif","image/webp","image/bmp","image/vnd.microsoft.icon","image/svg+xml"],extensions:["png","jpg","jpeg","gif","webp","bmp","ico","svg"],parse:function(e,t,n){return EI.apply(this,arguments)},tests:[function(e){return Boolean(wI(new DataView(e)))}],options:{image:{type:"auto",decode:!0}}},BI=["image/png","image/jpeg","image/gif"],_I={};function MI(e){return void 0===_I[e]&&(_I[e]=function(e){switch(e){case"image/webp":return function(){if(!jx)return!1;try{return 0===document.createElement("canvas").toDataURL("image/webp").indexOf("data:image/webp")}catch(e){return!1}}();case"image/svg":return jx;default:var t;return jx?!0:(t=globalThis._parseImageNode,Boolean(t)&&BI.includes(e))}}(e)),_I[e]}function TI(e,t){if(!e)throw new Error(t||"assert failed: gltf")}function SI(e,t){if(e.startsWith("data:")||e.startsWith("http:")||e.startsWith("https:"))return e;t=t.baseUri||t.uri;if(t)return t.substr(0,t.lastIndexOf("/")+1)+e;throw new Error("'baseUri' must be provided to resolve relative url ".concat(e))}var II=["SCALAR","VEC2","VEC3","VEC4"],ql=[[Int8Array,5120],[Uint8Array,5121],[Int16Array,5122],[Uint16Array,5123],[Uint32Array,5125],[Float32Array,5126],[Float64Array,5130]],DI=new Map(ql),PI={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},kI={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},LI={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};function RI(e){return II[e-1]||II[0]}function FI(e){e=DI.get(e.constructor);if(e)return e;throw new Error("Illegal typed array")}function OI(e,t){var n=LI[e.componentType],i=PI[e.type],r=kI[e.componentType],a=e.count*i,e=e.count*i*r;return TI(0<=e&&e<=t.byteLength),{ArrayType:n,length:a,byteLength:e}}var NI,GI={asset:{version:"2.0",generator:"loaders.gl"},buffers:[]},UI=function(){function t(e){te(this,t),l(this,"gltf",void 0),l(this,"sourceBuffers",void 0),l(this,"byteLength",void 0),this.gltf=e||{json:g({},GI),buffers:[]},this.sourceBuffers=[],this.byteLength=0,this.gltf.buffers&&this.gltf.buffers[0]&&(this.byteLength=this.gltf.buffers[0].byteLength,this.sourceBuffers=[this.gltf.buffers[0]])}return A(t,[{key:"json",get:function(){return this.gltf.json}},{key:"getApplicationData",value:function(e){return this.json[e]}},{key:"getExtraData",value:function(e){return(this.json.extras||{})[e]}},{key:"getExtension",value:function(t){var e=this.getUsedExtensions().find(function(e){return e===t}),n=this.json.extensions||{};return e?n[t]||!0:null}},{key:"getRequiredExtension",value:function(t){return this.getRequiredExtensions().find(function(e){return e===t})?this.getExtension(t):null}},{key:"getRequiredExtensions",value:function(){return this.json.extensionsRequired||[]}},{key:"getUsedExtensions",value:function(){return this.json.extensionsUsed||[]}},{key:"getObjectExtension",value:function(e,t){return(e.extensions||{})[t]}},{key:"getScene",value:function(e){return this.getObject("scenes",e)}},{key:"getNode",value:function(e){return this.getObject("nodes",e)}},{key:"getSkin",value:function(e){return this.getObject("skins",e)}},{key:"getMesh",value:function(e){return this.getObject("meshes",e)}},{key:"getMaterial",value:function(e){return this.getObject("materials",e)}},{key:"getAccessor",value:function(e){return this.getObject("accessors",e)}},{key:"getTexture",value:function(e){return this.getObject("textures",e)}},{key:"getSampler",value:function(e){return this.getObject("samplers",e)}},{key:"getImage",value:function(e){return this.getObject("images",e)}},{key:"getBufferView",value:function(e){return this.getObject("bufferViews",e)}},{key:"getBuffer",value:function(e){return this.getObject("buffers",e)}},{key:"getObject",value:function(e,t){if("object"===v(t))return t;var n=this.json[e]&&this.json[e][t];if(n)return n;throw new Error("glTF file error: Could not find ".concat(e,"[").concat(t,"]"))}},{key:"getTypedArrayForBufferView",value:function(e){var t=(e=this.getBufferView(e)).buffer,t=this.gltf.buffers[t],n=(TI(t),(e.byteOffset||0)+t.byteOffset);return new Uint8Array(t.arrayBuffer,n,e.byteLength)}},{key:"getTypedArrayForAccessor",value:function(e){e=this.getAccessor(e);var t=this.getBufferView(e.bufferView),n=this.getBuffer(t.buffer).data,i=OI(e,t),r=i.ArrayType,i=i.length;return new r(n,t.byteOffset+e.byteOffset,i)}},{key:"getTypedArrayForImageData",value:function(e){e=this.getAccessor(e);var e=this.getBufferView(e.bufferView),t=this.getBuffer(e.buffer).data,n=e.byteOffset||0;return new Uint8Array(t,n,e.byteLength)}},{key:"addApplicationData",value:function(e,t){return this.json[e]=t,this}},{key:"addExtraData",value:function(e,t){return this.json.extras=this.json.extras||{},this.json.extras[e]=t,this}},{key:"addObjectExtension",value:function(e,t,n){return e.extensions=e.extensions||{},e.extensions[t]=n,this.registerUsedExtension(t),this}},{key:"setObjectExtension",value:function(e,t,n){(e.extensions||{})[t]=n}},{key:"removeObjectExtension",value:function(e,t){var e=e.extensions||{},n=e[t];return delete e[t],n}},{key:"addExtension",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return TI(t),this.json.extensions=this.json.extensions||{},this.json.extensions[e]=t,this.registerUsedExtension(e),t}},{key:"addRequiredExtension",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{};return TI(t),this.addExtension(e,t),this.registerRequiredExtension(e),t}},{key:"registerUsedExtension",value:function(t){this.json.extensionsUsed=this.json.extensionsUsed||[],this.json.extensionsUsed.find(function(e){return e===t})||this.json.extensionsUsed.push(t)}},{key:"registerRequiredExtension",value:function(t){this.registerUsedExtension(t),this.json.extensionsRequired=this.json.extensionsRequired||[],this.json.extensionsRequired.find(function(e){return e===t})||this.json.extensionsRequired.push(t)}},{key:"removeExtension",value:function(e){this.json.extensionsRequired&&this._removeStringFromArray(this.json.extensionsRequired,e),this.json.extensionsUsed&&this._removeStringFromArray(this.json.extensionsUsed,e),this.json.extensions&&delete this.json.extensions[e]}},{key:"setDefaultScene",value:function(e){this.json.scene=e}},{key:"addScene",value:function(e){e=e.nodeIndices;return this.json.scenes=this.json.scenes||[],this.json.scenes.push({nodes:e}),this.json.scenes.length-1}},{key:"addNode",value:function(e){var t=e.meshIndex,e=e.matrix,t=(this.json.nodes=this.json.nodes||[],{mesh:t});return e&&(t.matrix=e),this.json.nodes.push(t),this.json.nodes.length-1}},{key:"addMesh",value:function(e){var t=e.attributes,n=e.indices,i=e.material,e=e.mode,e=void 0===e?4:e,t={primitives:[{attributes:this._addAttributes(t),mode:e}]};return n&&(e=this._addIndices(n),t.primitives[0].indices=e),Number.isFinite(i)&&(t.primitives[0].material=i),this.json.meshes=this.json.meshes||[],this.json.meshes.push(t),this.json.meshes.length-1}},{key:"addPointCloud",value:function(e){e={primitives:[{attributes:this._addAttributes(e),mode:0}]};return this.json.meshes=this.json.meshes||[],this.json.meshes.push(e),this.json.meshes.length-1}},{key:"addImage",value:function(e,t){var n=wI(e),t=t||(null==n?void 0:n.mimeType),n={bufferView:this.addBufferView(e),mimeType:t};return this.json.images=this.json.images||[],this.json.images.push(n),this.json.images.length-1}},{key:"addBufferView",value:function(e){var t=e.byteLength,e=(TI(Number.isFinite(t)),this.sourceBuffers=this.sourceBuffers||[],this.sourceBuffers.push(e),{buffer:0,byteOffset:this.byteLength,byteLength:t});return this.byteLength+=CE(t,4),this.json.bufferViews=this.json.bufferViews||[],this.json.bufferViews.push(e),this.json.bufferViews.length-1}},{key:"addAccessor",value:function(e,t){e={bufferView:e,type:RI(t.size),componentType:t.componentType,count:t.count,max:t.max,min:t.min};return this.json.accessors=this.json.accessors||[],this.json.accessors.push(e),this.json.accessors.length-1}},{key:"addBinaryBuffer",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{size:3},n=this.addBufferView(e),i={min:t.min,max:t.max},e=(i.min&&i.max||(i=this._getAccessorMinMax(e,t.size)),{size:t.size,componentType:FI(e),count:Math.round(e.length/t.size),min:i.min,max:i.max});return this.addAccessor(n,Object.assign(e,t))}},{key:"addTexture",value:function(e){e={source:e.imageIndex};return this.json.textures=this.json.textures||[],this.json.textures.push(e),this.json.textures.length-1}},{key:"addMaterial",value:function(e){return this.json.materials=this.json.materials||[],this.json.materials.push(e),this.json.materials.length-1}},{key:"createBinaryChunk",value:function(){this.gltf.buffers=[];var e,t,n,i,r,a,o,s=this.byteLength,l=new ArrayBuffer(s),u=new Uint8Array(l),c=0,h=q(this.sourceBuffers||[]);try{for(h.s();!(t=h.n()).done;){var d=t.value;i=u,r=c,o=a=void 0,n=(n=d)instanceof ArrayBuffer?new Uint8Array(n):(a=n.byteOffset,o=n.byteLength,new Uint8Array(n.buffer||n.arrayBuffer,a,o)),i.set(n,r),c=r+CE(n.byteLength,4)}}catch(e){h.e(e)}finally{h.f()}null!=(e=this.json)&&null!=(e=e.buffers)&&e[0]?this.json.buffers[0].byteLength=s:this.json.buffers=[{byteLength:s}],this.gltf.binary=l,this.sourceBuffers=[l]}},{key:"_removeStringFromArray",value:function(e,t){for(var n=!0;n;){var i=e.indexOf(t);-1<i?e.splice(i,1):n=!1}}},{key:"_addAttributes",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},n={};for(e in t){var i=t[e],r=this._getGltfAttributeName(e),i=this.addBinaryBuffer(i.value,i);n[r]=i}return n}},{key:"_addIndices",value:function(e){return this.addBinaryBuffer(e,{size:1})}},{key:"_getGltfAttributeName",value:function(e){switch(e.toLowerCase()){case"position":case"positions":case"vertices":return"POSITION";case"normal":case"normals":return"NORMAL";case"color":case"colors":return"COLOR_0";case"texcoord":case"texcoords":return"TEXCOORD_0";default:return e}}},{key:"_getAccessorMinMax",value:function(e,t){var n={min:null,max:null};if(!(e.length<t)){n.min=[],n.max=[];var i,r=q(e.subarray(0,t));try{for(r.s();!(i=r.n()).done;){var a=i.value;n.min.push(a),n.max.push(a)}}catch(e){r.e(e)}finally{r.f()}for(var o=t;o<e.length;o+=t)for(var s=0;s<t;s++)n.min[0+s]=Math.min(n.min[0+s],e[o+s]),n.max[0+s]=Math.max(n.max[0+s],e[o+s])}return n}}]),t}(),zI="object"!==("undefined"==typeof WebAssembly?"undefined":v(WebAssembly)),HI="B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB",QI="B9h9z9tFBBBF8dL9gBB9gLaaaaaFa9gEaaaB9gGaaB9gFaFaEQSBBFBFFGEGEGIILF9wFFFLEFBFKNFaFCx/aFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBG8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBIy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBKi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBNn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBcI9z9iqlBMc/j9JSIBTEM9+FLa8jUUUUBCTlRBCBRFEXCBRGCBREEXABCNJAGJAECUaAFAGrCFZHIy86BBAEAIJREAGCFJHGCN9HQBMAFCx+YUUBJAE86BBAFCEWCxkUUBJAB8pEN83EBAFCFJHFCUG9HQBMMkRIbaG97FaK978jUUUUBCU/KBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAG/8cBBCUoBAG9uC/wgBZHKCUGAKCUG9JyRNAECFJRKCBRVGXEXAVAF9PQFANAFAVlAVANJAF9JyRcGXGXAG9FQBAcCbJHIC9wZHMCE9sRSAMCFWRQAICIrCEJCGrRfCBRbEXAKRTCBRtGXEXGXAOATlAf9PQBCBRKSLMALCU/CBJAtAM9sJRmATAfJRKCBREGXAMCoB9JQBAOAKlC/gB9JQBCBRIEXAmAIJREGXGXGXGXGXATAICKrJ2BBHYCEZfIBFGEBMAECBDtDMIBSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIBAKCTJRKMGXGXGXGXGXAYCGrCEZfIBFGEBMAECBDtDMITSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMITAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMITAKCTJRKMGXGXGXGXGXAYCIrCEZfIBFGEBMAECBDtDMIASEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIAAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAEAKDBBBDMIAAKCTJRKMGXGXGXGXGXAYCKrfIBFGEBMAECBDtDMI8wSEMAEAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCIJAnDeBJAYCx+YUUBJ2BBJRKSGMAEAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBAYCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HYCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMI8wAKCNJAnDeBJAYCx+YUUBJ2BBJRKSFMAEAKDBBBDMI8wAKCTJRKMAICoBJREAICUFJAM9LQFAERIAOAKlC/fB9LQBMMGXAEAM9PQBAECErRIEXGXAOAKlCi9PQBCBRKSOMAmAEJRYGXGXGXGXGXATAECKrJ2BBAICKZrCEZfIBFGEBMAYCBDtDMIBSEMAYAKDBBIAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnHPCGD+MFAPDQBTFtGmEYIPLdKeOnC0+G+MiDtD9OHdCEDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCIJAnDeBJAeCx+YUUBJ2BBJRKSGMAYAKDBBNAKDBBBHPCID+MFAPDQBTFtGmEYIPLdKeOnC+P+e+8/4BDtD9OHdCbDbD8jHPD8dBhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBAeCx+YUUBJDBBBHnAnDQBBBBBBBBBBBBBBBBAPD8dFhUg/8/4/w/goB9+h84k7HeCEWCxkUUBJDBEBD9uDQBFGEILKOTtmYPdenDfAdAPD9SDMIBAKCNJAnDeBJAeCx+YUUBJ2BBJRKSFMAYAKDBBBDMIBAKCTJRKMAICGJRIAECTJHEAM9JQBMMGXAK9FQBAKRTAtCFJHtCI6QGSFMMCBRKSEMGXAM9FQBALCUGJAbJREALAbJDBGBRnCBRYEXAEALCU/CBJAYJHIDBIBHdCFD9tAdCFDbHPD9OD9hD9RHdAIAMJDBIBHiCFD9tAiAPD9OD9hD9RHiDQBTFtGmEYIPLdKeOnH8ZAIAQJDBIBHpCFD9tApAPD9OD9hD9RHpAIASJDBIBHyCFD9tAyAPD9OD9hD9RHyDQBTFtGmEYIPLdKeOnH8cDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGEAnD9uHnDyBjGBAEAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnA8ZA8cDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNiV8ZcpMyS8cQ8df8eb8fHdApAyDQNiV8ZcpMyS8cQ8df8eb8fHiDQBFTtGEmYILPdKOenHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJHIAnAdAiDQNVi8ZcMpySQ8c8dfb8e8fHPAPDQBFGEBFGEBFGEBFGED9uHnDyBjGBAIAGJHIAnAPAPDQILKOILKOILKOILKOD9uHnDyBjGBAIAGJHIAnAPAPDQNVcMNVcMNVcMNVcMD9uHnDyBjGBAIAGJHIAnAPAPDQSQfbSQfbSQfbSQfbD9uHnDyBjGBAIAGJREAYCTJHYAM9JQBMMAbCIJHbAG9JQBMMABAVAG9sJALCUGJAcAG9s/8cBBALALCUGJAcCaJAG9sJAG/8cBBMAcCBAKyAVJRVAKQBMC9+RKSFMCBC99AOAKlAGCAAGCA9Ly6yRKMALCU/KBJ8kUUUUBAKMNBT+BUUUBM+KmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUF/8MBALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM/xLGEaK978jUUUUBCAlHE8kUUUUBGXGXAGCI9HQBGXAFC98ZHI9FQBABRGCBRLEXAGAGDBBBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMBBAGCTJRGALCIJHLAI9JQBMMAIAF9PQFAEAFCEZHLCGWHGqCBCTAGl/8MBAEABAICGWJHIAG/8cBBGXAL9FQBAEAEDBIBHKCiD+rFCiD+sFD/6FHOAKCND+rFCiD+sFD/6FAOD/gFAKCTD+rFCiD+sFD/6FHND/gFD/kFD/lFHVCBDtD+2FHcAOCUUUU94DtHMD9OD9RD/kFHO9DBB/+hDYAOAOD/mFAVAVD/mFANAcANAMD9OD9RD/kFHOAOD/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHcD/kFCgFDtD9OAKCUUU94DtD9OD9QAOAND/mFAcD/kFCND+rFCU/+EDtD9OD9QAVAND/mFAcD/kFCTD+rFCUU/8ODtD9OD9QDMIBMAIAEAG/8cBBSFMABAFC98ZHGT+HUUUBAGAF9PQBAEAFCEZHICEWHLJCBCAALl/8MBAEABAGCEWJHGAL/8cBBAEAIT+HUUUBAGAEAL/8cBBMAECAJ8kUUUUBM+yEGGaO97GXAF9FQBCBRGEXABCTJHEAEDBBBHICBDtHLCUU98D8cFCUU98D8cEHKD9OABDBBBHOAIDQILKOSQfbPden8c8d8e8fCggFDtD9OD/6FAOAIDQBFGENVcMTtmYi8ZpyHICTD+sFD/6FHND/gFAICTD+rFCTD+sFD/6FHVD/gFD/kFD/lFHI9DB/+g6DYAVAIALD+2FHLAVCUUUU94DtHcD9OD9RD/kFHVAVD/mFAIAID/mFANALANAcD9OD9RD/kFHIAID/mFD/kFD/kFD/jFD/nFHND/mF9DBBX9LDYHLD/kFCTD+rFAVAND/mFALD/kFCggEDtD9OD9QHVAIAND/mFALD/kFCaDbCBDnGCBDnECBDnKCBDnOCBDncCBDnMCBDnfCBDnbD9OHIDQNVi8ZcMpySQ8c8dfb8e8fD9QDMBBABAOAKD9OAVAIDQBFTtGEmYILPdKOenD9QDMBBABCAJRBAGCIJHGAF9JQBMMM94FEa8jUUUUBCAlHE8kUUUUBABAFC98ZHIT+JUUUBGXAIAF9PQBAEAFCEZHLCEWHFJCBCAAFl/8MBAEABAICEWJHBAF/8cBBAEALT+JUUUBABAEAF/8cBBMAECAJ8kUUUUBM/hEIGaF97FaL978jUUUUBCTlRGGXAF9FQBCBREEXAGABDBBBHIABCTJHLDBBBHKDQILKOSQfbPden8c8d8e8fHOCTD+sFHNCID+rFDMIBAB9DBBU8/DY9D/zI818/DYANCEDtD9QD/6FD/nFHNAIAKDQBFGENVcMTtmYi8ZpyHICTD+rFCTD+sFD/6FD/mFHKAKD/mFANAICTD+sFD/6FD/mFHVAVD/mFANAOCTD+rFCTD+sFD/6FD/mFHOAOD/mFD/kFD/kFD/lFCBDtD+4FD/jF9DB/+g6DYHND/mF9DBBX9LDYHID/kFCggEDtHcD9OAVAND/mFAID/kFCTD+rFD9QHVAOAND/mFAID/kFCTD+rFAKAND/mFAID/kFAcD9OD9QHNDQBFTtGEmYILPdKOenHID8dBAGDBIBDyB+t+J83EBABCNJAID8dFAGDBIBDyF+t+J83EBALAVANDQNVi8ZcMpySQ8c8dfb8e8fHND8dBAGDBIBDyG+t+J83EBABCiJAND8dFAGDBIBDyE+t+J83EBABCAJRBAECIJHEAF9JQBMMM/3FGEaF978jUUUUBCoBlREGXAGCGrAF9sHIC98ZHL9FQBCBRGABRFEXAFAFDBBBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMBBAFCTJRFAGCIJHGAL9JQBMMGXALAI9PQBAEAICEZHGCGWHFqCBCoBAFl/8MBAEABALCGWJHLAF/8cBBGXAG9FQBAEAEDBIBHKCND+rFCND+sFD/6FAKCiD+sFCnD+rFCUUU/8EDtD+uFD/mFDMIBMALAEAF/8cBBMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEMMMFBCUNMIT9tBB",VI=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]),jI=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]),WI={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},JI={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};function qI(){return(qI=d(V().mark(function e(d,p,f,m,v){var g,A,y=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return g=5<y.length&&void 0!==y[5]?y[5]:"NONE",e.next=3,function(){return XI.apply(this,arguments)}();case 3:A=e.sent,h=c=u=l=s=o=a=r=i=n=t=void 0;var t=A,n=A.exports[JI[v]],i=d,r=p,a=f,o=m,s=A.exports[WI[g||"NONE"]],l=t.exports.sbrk,u=r+3&-4,c=l(u*a),h=l(o.length);if((t=new Uint8Array(t.exports.memory.buffer)).set(o,h),0===(n=n(c,r,a,h,o.length))&&s&&s(c,u,a),i.set(t.subarray(c,c+r*a)),l(c-l(0)),0!==n)throw new Error("Malformed buffer data: ".concat(n));case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function XI(){return(XI=d(V().mark(function e(){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return NI=NI||function(){return YI.apply(this,arguments)}(),e.abrupt("return",NI);case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}function YI(){return(YI=d(V().mark(function e(){var t,n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t=HI,WebAssembly.validate(VI)&&(t=QI,console.log("Warning: meshopt_decoder is using experimental SIMD support")),e.next=4,WebAssembly.instantiate(function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;++n){var i=e.charCodeAt(n);t[n]=96<i?i-71:64<i?i-65:47<i?i+4:46<i?63:62}for(var r=0,a=0;a<e.length;++a)t[r++]=t[a]<60?jI[t[a]]:64*(t[a]-60)+t[++a];return t.buffer.slice(0,r)}(t),{});case 4:return n=e.sent,e.next=7,n.instance.exports.__wasm_call_ctors();case 7:return e.abrupt("return",n.instance);case 8:case"end":return e.stop()}},e)}))).apply(this,arguments)}var KI="EXT_meshopt_compression";function ZI(){return(ZI=d(V().mark(function e(t,n){var i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=new UI(t),null!=n&&null!=(i=n.gltf)&&i.decompressMeshes){e.next=3;break}return e.abrupt("return");case 3:a=[],o=q(t.json.bufferViews||[]);try{for(o.s();!(s=o.n()).done;)l=s.value,a.push(function(){return $I.apply(this,arguments)}(r,l))}catch(e){o.e(e)}finally{o.f()}return e.next=8,Promise.all(a);case 8:r.removeExtension(KI);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $I(){return($I=d(V().mark(function e(t,n){var i,r,a,o,s,l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(s=t.getObjectExtension(n,KI))return l=n.buffer,u=s.byteOffset,u=void 0===u?0:u,i=s.byteLength,i=void 0===i?0:i,r=s.byteStride,a=s.count,o=s.mode,s=s.filter,s=void 0===s?"NONE":s,l=new Uint8Array(l,u,i),u=new ArrayBuffer(a*r),e.next=8,function(){return qI.apply(this,arguments)}(new Uint8Array(u),a,r,l,o,s);e.next=9;break;case 8:return e.abrupt("return",u);case 9:return e.abrupt("return",null);case 10:case"end":return e.stop()}},e)}))).apply(this,arguments)}var eD="EXT_texture_webp";var tD="KHR_texture_basisu";function nD(e){var e=function(e){var t=e,n=1,i=0;e&&e.value&&(t=e.value,n=e.size||1);t&&(ArrayBuffer.isView(t)||(t=function(e,t){var n=2<arguments.length&&void 0!==arguments[2]&&arguments[2];if(!e)return null;if(Array.isArray(e))return new t(e);return!n||e instanceof t?e:new t(e)}(t,Float32Array)),i=t.length/n);return{buffer:t,size:n,count:i}}(e),t=e.buffer,n=e.size;return{value:t,size:n,byteOffset:0,count:e.count,type:RI(n),componentType:FI(t)}}var iD="KHR_draco_mesh_compression";function rD(){return(rD=d(V().mark(function e(t,n,i){var r,a,o,s,l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=n&&null!=(r=n.gltf)&&r.decompressMeshes){e.next=2;break}return e.abrupt("return");case 2:a=new UI(t),o=[],s=q(oD(a));try{for(s.s();!(l=s.n()).done;)u=l.value,a.getObjectExtension(u,iD)&&o.push(function(){return aD.apply(this,arguments)}(a,u,n,i))}catch(e){s.e(e)}finally{s.f()}return e.next=8,Promise.all(o);case 8:a.removeExtension(iD);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}function aD(){return(aD=d(V().mark(function e(n,i,r,a){var o,s,l,u,c,h,d,p;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.getObjectExtension(i,iD)){e.next=3;break}return e.abrupt("return");case 3:return u=n.getTypedArrayForBufferView(o.bufferView),u=EE(u.buffer,u.byteOffset),l=a.parse,delete(s=g({},r))["3d-tiles"],e.next=10,l(u,eS,s,a);case 10:for(l=e.sent,u=function(e){var t,n={};for(t in e){var i=e[t];"indices"!==t&&(i=nD(i),n[t]=i)}return n}(l.attributes),c=0,h=Object.entries(u);c<h.length;c++)d=N(h[c],2),p=d[0],d=d[1],p in i.attributes&&(p=i.attributes[p],null!=(p=n.getAccessor(p)))&&p.min&&null!=p&&p.max&&(d.min=p.min,d.max=p.max);i.attributes=u,l.indices&&(i.indices=nD(l.indices)),t=void 0;var t=i;if(!t.attributes&&0<Object.keys(t.attributes).length)throw new Error("glTF: Empty primitive detected: Draco decompression failure?");case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}function oD(t){var n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=q(t.json.meshes||[]),e.prev=1,n.s();case 3:if((i=n.n()).done){e.next=24;break}i=i.value,i=q(i.primitives),e.prev=6,i.s();case 8:if((r=i.n()).done){e.next=14;break}return r=r.value,e.next=12,r;case 12:e.next=8;break;case 14:e.next=19;break;case 16:e.prev=16,e.t0=e.catch(6),i.e(e.t0);case 19:return e.prev=19,i.f(),e.finish(19);case 22:e.next=3;break;case 24:e.next=29;break;case 26:e.prev=26,e.t1=e.catch(1),n.e(e.t1);case 29:return e.prev=29,n.f(),e.finish(29);case 32:case"end":return e.stop()}},Hx,null,[[1,26,29,32],[6,16,19,22]])}var sD="KHR_lights_punctual";function lD(){return(lD=d(V().mark(function e(t){var n,i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=new UI(t),i=n.json,(r=n.getExtension(sD))&&(n.json.lights=r.lights,n.removeExtension(sD)),a=q(i.nodes||[]);try{for(a.s();!(o=a.n()).done;)s=o.value,(l=n.getObjectExtension(s,sD))&&(s.light=l.light),n.removeObjectExtension(s,sD)}catch(e){a.e(e)}finally{a.f()}case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function uD(){return(uD=d(V().mark(function e(t){var n,i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=new UI(t),(i=n.json).lights&&(TI(!(r=n.addExtension(sD)).lights),r.lights=i.lights,delete i.lights),n.json.lights){a=q(n.json.lights);try{for(a.s();!(o=a.n()).done;)s=o.value,l=s.node,n.addObjectExtension(l,sD,s)}catch(e){a.e(e)}finally{a.f()}delete n.json.lights}case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}var cD="KHR_materials_unlit";function hD(){return(hD=d(V().mark(function e(t){var n,i,r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=new UI(t),i=n.json,n.removeExtension(cD),r=q(i.materials||[]);try{for(r.s();!(a=r.n()).done;)o=a.value,o.extensions&&o.extensions.KHR_materials_unlit&&(o.unlit=!0),n.removeObjectExtension(o,cD)}catch(e){r.e(e)}finally{r.f()}case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}var dD="KHR_techniques_webgl";function pD(){return(pD=d(V().mark(function e(t){var n,i,r,a,o,s,l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n=new UI(t),i=n.json,r=n.getExtension(dD)){a=function(e,t){var n=e.programs,i=void 0===n?[]:n,n=e.shaders,r=void 0===n?[]:n,n=e.techniques,e=void 0===n?[]:n,a=new TextDecoder;return r.forEach(function(e){if(!Number.isFinite(e.bufferView))throw new Error("KHR_techniques_webgl: no shader code");e.code=a.decode(t.getTypedArrayForBufferView(e.bufferView))}),i.forEach(function(e){e.fragmentShader=r[e.fragmentShader],e.vertexShader=r[e.vertexShader]}),e.forEach(function(e){e.program=i[e.program]}),e}(r,n),o=q(i.materials||[]);try{for(o.s();!(s=o.n()).done;)l=s.value,(u=n.getObjectExtension(l,dD))&&(l.technique=Object.assign({},u,a[u.technique]),l.technique.values=function(t,n){var i=Object.assign({},t.values);return Object.keys(t.uniforms||{}).forEach(function(e){!t.uniforms[e].value||e in i||(i[e]=t.uniforms[e].value)}),Object.keys(i).forEach(function(e){"object"===v(i[e])&&void 0!==i[e].index&&(i[e].texture=n.getTexture(i[e].index))}),i}(l.technique,n)),n.removeObjectExtension(l,dD)}catch(e){o.e(e)}finally{o.f()}n.removeExtension(dD)}case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function fD(){return(fD=d(V().mark(function e(t,n){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:case"end":return e.stop()}},e)}))).apply(this,arguments)}var mD=[Object.freeze({__proto__:null,name:KI,preprocess:function(e){if(new UI(e).getRequiredExtensions().includes(KI)&&!zI)throw new Error("gltf: Required extension ".concat(KI," not supported by browser"))},decode:function(e,t){return ZI.apply(this,arguments)}}),Object.freeze({__proto__:null,name:"EXT_texture_webp",preprocess:function(e,t){var n=new UI(e);if(MI("image/webp")){var i,r=q(n.json.textures||[]);try{for(r.s();!(i=r.n()).done;){var a=i.value,o=n.getObjectExtension(a,eD);o&&(a.source=o.source),n.removeObjectExtension(a,eD)}}catch(e){r.e(e)}finally{r.f()}n.removeExtension(eD)}else if(n.getRequiredExtensions().includes(eD))throw new Error("gltf: Required extension ".concat(eD," not supported by browser"))}}),Object.freeze({__proto__:null,name:"KHR_texture_basisu",preprocess:function(e,t){var n,i=new UI(e),r=q(i.json.textures||[]);try{for(r.s();!(n=r.n()).done;){var a=n.value,o=i.getObjectExtension(a,tD);o&&(a.source=o.source),i.removeObjectExtension(a,tD)}}catch(e){r.e(e)}finally{r.f()}i.removeExtension(tD)}}),Object.freeze({__proto__:null,name:iD,preprocess:function(e,t,n){var i,r=new UI(e),a=q(oD(r));try{for(a.s();!(i=a.n()).done;){var o=i.value;r.getObjectExtension(o,iD)}}catch(e){a.e(e)}finally{a.f()}},decode:function(e,t,n){return rD.apply(this,arguments)},encode:function(e){var t,n=new UI(e),i=q(n.json.meshes||[]);try{for(i.s();!(t=i.n()).done;)!function(e){var t,n,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:4,r=3<arguments.length?arguments[3]:void 0,a=4<arguments.length?arguments[4]:void 0;if(r.DracoWriter)return t=r.DracoWriter.encodeSync({attributes:e}),n=null==a||null==(n=a.parseSync)?void 0:n.call(a,{attributes:e}),a=r._addFauxAttributes(n.attributes),e=r.addBufferView(t),z({},iD,{bufferView:e,attributes:a});throw new Error("options.gltf.DracoWriter not provided")}(t.value),n.addRequiredExtension(iD)}catch(e){i.e(e)}finally{i.f()}}}),Object.freeze({__proto__:null,name:sD,decode:function(e){return lD.apply(this,arguments)},encode:function(e){return uD.apply(this,arguments)}}),Object.freeze({__proto__:null,name:cD,decode:function(e){return hD.apply(this,arguments)},encode:function(e){var t=new UI(e),e=t.json;if(t.materials){var n,i=q(e.materials||[]);try{for(i.s();!(n=i.n()).done;){var r=n.value;r.unlit&&(delete r.unlit,t.addObjectExtension(r,cD,{}),t.addExtension(cD))}}catch(e){i.e(e)}finally{i.f()}}}}),Object.freeze({__proto__:null,name:dD,decode:function(e){return pD.apply(this,arguments)},encode:function(e,t){return fD.apply(this,arguments)}})];function vD(){return(vD=d(V().mark(function e(t){var n,i,r,a,o,s=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=1<s.length&&void 0!==s[1]?s[1]:{},i=2<s.length?s[2]:void 0,r=mD.filter(function(e){return gD(e.name,n)}),r=q(r),e.prev=4,r.s();case 6:if((a=r.n()).done){e.next=12;break}return a=a.value,e.next=10,null==(o=a.decode)?void 0:o.call(a,t,n,i);case 10:e.next=6;break;case 12:e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),r.e(e.t0);case 17:return e.prev=17,r.f(),e.finish(17);case 20:case"end":return e.stop()}},e,null,[[4,14,17,20]])}))).apply(this,arguments)}function gD(e,t){t=(null==t||null==(t=t.gltf)?void 0:t.excludeExtensions)||{};return!(e in t&&!t[e])}var AD="KHR_binary_glTF";var yD={accessors:"accessor",animations:"animation",buffers:"buffer",bufferViews:"bufferView",images:"image",materials:"material",meshes:"mesh",nodes:"node",samplers:"sampler",scenes:"scene",skins:"skin",textures:"texture"},wD={accessor:"accessors",animations:"animation",buffer:"buffers",bufferView:"bufferViews",image:"images",material:"materials",mesh:"meshes",node:"nodes",sampler:"samplers",scene:"scenes",skin:"skins",texture:"textures"},bD=function(){function e(){te(this,e),l(this,"idToIndexMap",{animations:{},accessors:{},buffers:{},bufferViews:{},images:{},materials:{},meshes:{},nodes:{},samplers:{},scenes:{},skins:{},textures:{}}),l(this,"json",void 0)}return A(e,[{key:"normalize",value:function(e,t){this.json=e.json;var n=e.json;switch(n.asset&&n.asset.version){case"2.0":return;case void 0:case"1.0":break;default:return void console.warn("glTF: Unknown version ".concat(n.asset.version))}if(!t.normalize)throw new Error("glTF v1 is not supported.");console.warn("Converting glTF v1 to glTF v2 format. This is experimental and may fail."),this._addAsset(n),this._convertTopLevelObjectsToArrays(n);var i,t=e,r=new UI(t),a=q((t=r.json).images||[]);try{for(a.s();!(i=a.n()).done;){var o=i.value,s=r.getObjectExtension(o,AD);s&&Object.assign(o,s),r.removeObjectExtension(o,AD)}}catch(e){a.e(e)}finally{a.f()}t.buffers&&t.buffers[0]&&delete t.buffers[0].uri,r.removeExtension(AD),this._convertObjectIdsToArrayIndices(n),this._updateObjects(n),this._updateMaterial(n)}},{key:"_addAsset",value:function(e){e.asset=e.asset||{},e.asset.version="2.0",e.asset.generator=e.asset.generator||"Normalized to glTF 2.0 by loaders.gl"}},{key:"_convertTopLevelObjectsToArrays",value:function(e){for(var t in yD)this._convertTopLevelObjectToArray(e,t)}},{key:"_convertTopLevelObjectToArray",value:function(e,t){var n=e[t];if(n&&!Array.isArray(n))for(var i in e[t]=[],n){var r=n[i],a=(r.id=r.id||i,e[t].length);e[t].push(r),this.idToIndexMap[t][i]=a}}},{key:"_convertObjectIdsToArrayIndices",value:function(e){for(var t in yD)this._convertIdsToIndices(e,t);"scene"in e&&(e.scene=this._convertIdToIndex(e.scene,"scene"));var n,i=q(e.textures);try{for(i.s();!(n=i.n()).done;){var r=n.value;this._convertTextureIds(r)}}catch(e){i.e(e)}finally{i.f()}var a,o=q(e.meshes);try{for(o.s();!(a=o.n()).done;){var s=a.value;this._convertMeshIds(s)}}catch(e){o.e(e)}finally{o.f()}var l,u=q(e.nodes);try{for(u.s();!(l=u.n()).done;){var c=l.value;this._convertNodeIds(c)}}catch(e){u.e(e)}finally{u.f()}var h,d=q(e.scenes);try{for(d.s();!(h=d.n()).done;){var p=h.value;this._convertSceneIds(p)}}catch(e){d.e(e)}finally{d.f()}}},{key:"_convertTextureIds",value:function(e){e.source&&(e.source=this._convertIdToIndex(e.source,"image"))}},{key:"_convertMeshIds",value:function(e){var t,n=q(e.primitives);try{for(n.s();!(t=n.n()).done;){var i,r=t.value,a=r.attributes,o=r.indices,s=r.material;for(i in a)a[i]=this._convertIdToIndex(a[i],"accessor");o&&(r.indices=this._convertIdToIndex(o,"accessor")),s&&(r.material=this._convertIdToIndex(s,"material"))}}catch(e){n.e(e)}finally{n.f()}}},{key:"_convertNodeIds",value:function(e){var t=this;e.children&&(e.children=e.children.map(function(e){return t._convertIdToIndex(e,"node")})),e.meshes&&(e.meshes=e.meshes.map(function(e){return t._convertIdToIndex(e,"mesh")}))}},{key:"_convertSceneIds",value:function(e){var t=this;e.nodes&&(e.nodes=e.nodes.map(function(e){return t._convertIdToIndex(e,"node")}))}},{key:"_convertIdsToIndices",value:function(e,t){e[t]||(console.warn("gltf v1: json doesn't contain attribute ".concat(t)),e[t]=[]);var n,i=q(e[t]);try{for(i.s();!(n=i.n()).done;){var r,a=n.value;for(r in a){var o=a[r],s=this._convertIdToIndex(o,r);a[r]=s}}}catch(e){i.e(e)}finally{i.f()}}},{key:"_convertIdToIndex",value:function(e,t){var n=wD[t];if(n in this.idToIndexMap){n=this.idToIndexMap[n][e];if(Number.isFinite(n))return n;throw new Error("gltf v1: failed to resolve ".concat(t," with id ").concat(e))}return e}},{key:"_updateObjects",value:function(e){var t,n=q(this.json.buffers);try{for(n.s();!(t=n.n()).done;)delete t.value.type}catch(e){n.e(e)}finally{n.f()}}},{key:"_updateMaterial",value:function(i){var r,t=q(i.materials);try{for(t.s();!(r=t.n()).done;)!function(){var e=r.value,t=(e.pbrMetallicRoughness={baseColorFactor:[1,1,1,1],metallicFactor:1,roughnessFactor:1},e.values&&e.values.tex),n=i.textures.findIndex(function(e){return e.id===t});-1!==n&&(e.pbrMetallicRoughness.baseColorTexture={index:n})}()}catch(e){t.e(e)}finally{t.f()}}}]),e}();var xD={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},ED={5120:1,5121:1,5122:2,5123:2,5125:4,5126:4},nd=10240,od=10241,CD=10242,Xh=10243,Vd=10497,Fu=9986,BD={magFilter:nd,minFilter:od,wrapS:CD,wrapT:Xh},_D=(z(td={},nd,9729),z(td,od,Fu),z(td,CD,Vd),z(td,Xh,Vd),td);var MD=function(){function e(){te(this,e),l(this,"baseUri",""),l(this,"json",{}),l(this,"buffers",[]),l(this,"images",[])}return A(e,[{key:"postProcess",value:function(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},n=e.json,i=e.buffers,i=void 0===i?[]:i,r=e.images,r=void 0===r?[]:r,e=e.baseUri,e=void 0===e?"":e;return TI(n),this.baseUri=e,this.json=n,this.buffers=i,this.images=r,this._resolveTree(this.json,t),this.json}},{key:"_resolveTree",value:function(e){var n=this;e.bufferViews&&(e.bufferViews=e.bufferViews.map(function(e,t){return n._resolveBufferView(e,t)})),e.images&&(e.images=e.images.map(function(e,t){return n._resolveImage(e,t)})),e.samplers&&(e.samplers=e.samplers.map(function(e,t){return n._resolveSampler(e,t)})),e.textures&&(e.textures=e.textures.map(function(e,t){return n._resolveTexture(e,t)})),e.accessors&&(e.accessors=e.accessors.map(function(e,t){return n._resolveAccessor(e,t)})),e.materials&&(e.materials=e.materials.map(function(e,t){return n._resolveMaterial(e,t)})),e.meshes&&(e.meshes=e.meshes.map(function(e,t){return n._resolveMesh(e,t)})),e.nodes&&(e.nodes=e.nodes.map(function(e,t){return n._resolveNode(e,t)})),e.skins&&(e.skins=e.skins.map(function(e,t){return n._resolveSkin(e,t)})),e.scenes&&(e.scenes=e.scenes.map(function(e,t){return n._resolveScene(e,t)})),void 0!==e.scene&&(e.scene=e.scenes[this.json.scene])}},{key:"getScene",value:function(e){return this._get("scenes",e)}},{key:"getNode",value:function(e){return this._get("nodes",e)}},{key:"getSkin",value:function(e){return this._get("skins",e)}},{key:"getMesh",value:function(e){return this._get("meshes",e)}},{key:"getMaterial",value:function(e){return this._get("materials",e)}},{key:"getAccessor",value:function(e){return this._get("accessors",e)}},{key:"getCamera",value:function(e){return null}},{key:"getTexture",value:function(e){return this._get("textures",e)}},{key:"getSampler",value:function(e){return this._get("samplers",e)}},{key:"getImage",value:function(e){return this._get("images",e)}},{key:"getBufferView",value:function(e){return this._get("bufferViews",e)}},{key:"getBuffer",value:function(e){return this._get("buffers",e)}},{key:"_get",value:function(e,t){var n;return"object"===v(t)?t:((n=this.json[e]&&this.json[e][t])||console.warn("glTF file error: Could not find ".concat(e,"[").concat(t,"]")),n)}},{key:"_resolveScene",value:function(e,t){var n=this;return e.id=e.id||"scene-".concat(t),e.nodes=(e.nodes||[]).map(function(e){return n.getNode(e)}),e}},{key:"_resolveNode",value:function(e,t){var n=this;return e.id=e.id||"node-".concat(t),e.children&&(e.children=e.children.map(function(e){return n.getNode(e)})),void 0!==e.mesh?e.mesh=this.getMesh(e.mesh):void 0!==e.meshes&&e.meshes.length&&(e.mesh=e.meshes.reduce(function(e,t){t=n.getMesh(t);return e.id=t.id,e.primitives=e.primitives.concat(t.primitives),e},{primitives:[]})),void 0!==e.camera&&(e.camera=this.getCamera(e.camera)),void 0!==e.skin&&(e.skin=this.getSkin(e.skin)),e}},{key:"_resolveSkin",value:function(e,t){return e.id=e.id||"skin-".concat(t),e.inverseBindMatrices=this.getAccessor(e.inverseBindMatrices),e}},{key:"_resolveMesh",value:function(e,t){var i=this;return e.id=e.id||"mesh-".concat(t),e.primitives&&(e.primitives=e.primitives.map(function(e){var t,n=(e=g({},e)).attributes;for(t in e.attributes={},n)e.attributes[t]=i.getAccessor(n[t]);return void 0!==e.indices&&(e.indices=i.getAccessor(e.indices)),void 0!==e.material&&(e.material=i.getMaterial(e.material)),e})),e}},{key:"_resolveMaterial",value:function(e,t){return e.id=e.id||"material-".concat(t),e.normalTexture&&(e.normalTexture=g({},e.normalTexture),e.normalTexture.texture=this.getTexture(e.normalTexture.index)),e.occlusionTexture&&(e.occlustionTexture=g({},e.occlustionTexture),e.occlusionTexture.texture=this.getTexture(e.occlusionTexture.index)),e.emissiveTexture&&(e.emmisiveTexture=g({},e.emmisiveTexture),e.emissiveTexture.texture=this.getTexture(e.emissiveTexture.index)),e.emissiveFactor||(e.emissiveFactor=e.emmisiveTexture?[1,1,1]:[0,0,0]),e.pbrMetallicRoughness&&(e.pbrMetallicRoughness=g({},e.pbrMetallicRoughness),(t=e.pbrMetallicRoughness).baseColorTexture&&(t.baseColorTexture=g({},t.baseColorTexture),t.baseColorTexture.texture=this.getTexture(t.baseColorTexture.index)),t.metallicRoughnessTexture)&&(t.metallicRoughnessTexture=g({},t.metallicRoughnessTexture),t.metallicRoughnessTexture.texture=this.getTexture(t.metallicRoughnessTexture.index)),e}},{key:"_resolveAccessor",value:function(e,t){var n,i,r;return e.id=e.id||"accessor-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView)),e.bytesPerComponent=(t=e.componentType,ED[t]),e.components=(t=e.type,xD[t]),e.bytesPerElement=e.bytesPerComponent*e.components,e.bufferView&&(t=e.bufferView.buffer,n=(r=OI(e,e.bufferView)).ArrayType,r=r.byteLength,i=(e.bufferView.byteOffset||0)+(e.byteOffset||0)+t.byteOffset,r=t.arrayBuffer.slice(i,i+r),e.bufferView.byteStride&&(r=this._getValueFromInterleavedBuffer(t,i,e.bufferView.byteStride,e.bytesPerElement,e.count)),e.value=new n(r)),e}},{key:"_getValueFromInterleavedBuffer",value:function(e,t,n,i,r){for(var a=new Uint8Array(r*i),o=0;o<r;o++){var s=t+o*n;a.set(new Uint8Array(e.arrayBuffer.slice(s,s+i)),o*i)}return a.buffer}},{key:"_resolveTexture",value:function(e,t){return e.id=e.id||"texture-".concat(t),e.sampler="sampler"in e?this.getSampler(e.sampler):_D,e.source=this.getImage(e.source),e}},{key:"_resolveSampler",value:function(e,t){for(var n in e.id=e.id||"sampler-".concat(t),e.parameters={},e){var i=this._enumSamplerParameter(n);void 0!==i&&(e.parameters[i]=e[n])}return e}},{key:"_enumSamplerParameter",value:function(e){return BD[e]}},{key:"_resolveImage",value:function(e,t){e.id=e.id||"image-".concat(t),void 0!==e.bufferView&&(e.bufferView=this.getBufferView(e.bufferView));t=this.images[t];return t&&(e.image=t),e}},{key:"_resolveBufferView",value:function(e,t){var n=e.buffer,t=g(g({id:"bufferView-".concat(t)},e),{},{buffer:this.buffers[n]}),i=this.buffers[n].arrayBuffer,n=this.buffers[n].byteOffset||0;return"byteOffset"in e&&(n+=e.byteOffset),t.data=new Uint8Array(i,n,e.byteLength),t}},{key:"_resolveCamera",value:function(e,t){return e.id=e.id||"camera-".concat(t),e.perspective,e.orthographic,e}}]),e}();var TD=1735152710,SD=12,ID=8,DD=1313821514,PD=5130562,kD=0,LD=1,RD=0,FD=!0;function OD(e,t,n){var i,r,a,o,s,l=2<arguments.length&&void 0!==n?n:0,u=new DataView(t),n=function(e,t){return t=1<arguments.length&&void 0!==t?t:0,"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}(u,l+0),t=u.getUint32(l+4,FD),c=u.getUint32(l+8,FD);switch(Object.assign(e,{header:{byteOffset:l,byteLength:c,hasBinChunk:!1},type:n,version:t,json:{},binChunks:[]}),l+=SD,e.version){case 1:return r=u,a=l,Vx((i=e).header.byteLength>SD+ID),o=r.getUint32(a+0,FD),s=r.getUint32(a+4,FD),a+=ID,Vx(s===RD),ND(i,r,a,o),a=(a+=o)+GD(i,r,a,i.header.byteLength);case 2:s=u,o=l,r={},Vx((i=e).header.byteLength>SD+ID);for(var h=i,d=s,p=o,f=r;p+8<=h.header.byteLength;){var m=d.getUint32(p+0,FD),v=d.getUint32(p+4,FD);switch(p+=ID,v){case DD:ND(h,d,p,m);break;case PD:GD(h,d,p,m);break;case kD:f.strict||ND(h,d,p,m);break;case LD:f.strict||GD(h,d,p,m)}p+=CE(m,4)}return o+i.header.byteLength;default:throw new Error("Invalid GLB version ".concat(e.version,". Only supports v1 and v2."))}}function ND(e,t,n,i){t=new Uint8Array(t.buffer,n,i),n=new TextDecoder("utf8").decode(t);e.json=JSON.parse(n),CE(i,4)}function GD(e,t,n,i){return e.header.hasBinChunk=!0,e.binChunks.push({byteOffset:n,byteLength:i,arrayBuffer:t.buffer}),CE(i,4)}function UD(){return(UD=d(V().mark(function e(o,s){var l,u,c,h,d,p,f=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:l=3<f.length?f[3]:void 0,u=4<f.length?f[4]:void 0,a=r=i=n=t=void 0;var t=o,n=s,i=2<f.length&&void 0!==f[2]?f[2]:0,r=l;if(r.uri&&(t.baseUri=r.uri),n instanceof ArrayBuffer&&!function(e,t,n){return t=1<arguments.length&&void 0!==t?t:0,n=2<arguments.length&&void 0!==n?n:{},e=new DataView(e),n=void 0===(n=n.magic)?TD:n,(e=e.getUint32(t,!1))===n||e===TD}(n,i,r)&&(a=new TextDecoder,n=a.decode(n)),"string"==typeof n?t.json=yE(n):n instanceof ArrayBuffer?(i=OD(a={},n,i,r.glb),TI("glTF"===a.type,"Invalid GLB magic string ".concat(a.type)),t._glb=a,t.json=a.json):TI(!1,"GLTF: must be ArrayBuffer or string"),n=t.json.buffers||[],t.buffers=new Array(n.length).fill(null),t._glb&&t._glb.header.hasBinChunk&&(r=t._glb.binChunks,t.buffers[0]={arrayBuffer:r[0].arrayBuffer,byteOffset:r[0].byteOffset,byteLength:r[0].byteLength}),i=t.json.images||[],t.images=new Array(i.length).fill({}),function(e,t){t=1<arguments.length&&void 0!==t?t:{},(new bD).normalize(e,t)}(o,{normalize:null==l||null==(d=l.gltf)?void 0:d.normalize}),function(e,t,n){var i,r=1<arguments.length&&void 0!==t?t:{},a=2<arguments.length?n:void 0,o=q(mD.filter(function(e){return gD(e.name,r)}));try{for(o.s();!(i=o.n()).done;){var s,l=i.value;null!=(s=l.preprocess)&&s.call(l,e,r,a)}}catch(e){o.e(e)}finally{o.f()}}(o,l,u),d=[],null!=l&&null!=(c=l.gltf)&&c.loadBuffers&&o.json.buffers)return e.next=10,function(){return zD.apply(this,arguments)}(o,l,u);e.next=10;break;case 10:return null!=l&&null!=(c=l.gltf)&&c.loadImages&&(p=function(){return HD.apply(this,arguments)}(o,l,u),d.push(p)),p=function(){return vD.apply(this,arguments)}(o,l,u),d.push(p),e.next=15,Promise.all(d);case 15:return e.abrupt("return",null!=l&&null!=(h=l.gltf)&&h.postProcess?(a=o,n=l,(new MD).postProcess(a,n)):o);case 16:case"end":return e.stop()}var a},e)}))).apply(this,arguments)}function zD(){return(zD=d(V().mark(function e(t,n,i){var r,a,o,s,l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=t.json.buffers||[],a=0;case 2:if(a<r.length){if((o=r[a]).uri)return TI(i.fetch),s=SI(o.uri,n),e.next=10,null==i||null==(l=i.fetch)?void 0:l.call(i,s);e.next=16}else e.next=19;break;case 10:return l=e.sent,e.next=13,null==l||null==(s=l.arrayBuffer)?void 0:s.call(l);case 13:u=e.sent,t.buffers[a]={arrayBuffer:u,byteOffset:0,byteLength:u.byteLength},delete o.uri;case 16:++a,e.next=2;break;case 19:case"end":return e.stop()}},e)}))).apply(this,arguments)}function HD(){return(HD=d(V().mark(function e(t,n,i){var r,a,o,s,l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=function(e){var t,n=new Set,i=q(e.json.textures||[]);try{for(i.s();!(t=i.n()).done;){var r=t.value;void 0!==r.source&&n.add(r.source)}}catch(e){i.e(e)}finally{i.f()}return Array.from(n).sort()}(t),a=t.json.images||[],o=[],s=q(r);try{for(s.s();!(l=s.n()).done;)u=l.value,o.push(function(){return QD.apply(this,arguments)}(t,a[u],u,n,i))}catch(e){s.e(e)}finally{s.f()}return e.next=7,Promise.all(o);case 7:return e.abrupt("return",e.sent);case 8:case"end":return e.stop()}},e)}))).apply(this,arguments)}function QD(){return(QD=d(V().mark(function e(r,a,o,s,l){var u,c,h,d,p;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(h=l.fetch,u=l.parse,a.uri)return d=SI(a.uri,s),e.next=5,h(d);e.next=9;break;case 5:return h=e.sent,e.next=8,h.arrayBuffer();case 8:c=e.sent;case 9:return Number.isFinite(a.bufferView)&&(t=r.json,n=r.buffers,i=a.bufferView,TI(t=t.bufferViews[i]),TI(i=n[t.buffer]),n=(t.byteOffset||0)+i.byteOffset,d=new Uint8Array(i.arrayBuffer,n,t.byteLength),c=EE(d.buffer,d.byteOffset,d.byteLength)),TI(c,"glTF image has no data"),e.next=13,u(c,[CI,nI],{mimeType:a.mimeType,basis:s.basis||{format:tI()}},l);case 13:(p=e.sent)&&p[0]&&(p={compressed:!0,mipmaps:!1,width:p[0].width,height:p[0].height,data:p}),r.images=r.images||[],r.images[o]=p;case 17:case"end":return e.stop()}var t,n,i},e)}))).apply(this,arguments)}var VD={name:"glTF",id:"gltf",module:"gltf",version:"3.1.4",extensions:["gltf","glb"],mimeTypes:["model/gltf+json","model/gltf-binary"],text:!0,binary:!0,tests:["glTF"],parse:function(e){return jD.apply(this,arguments)},options:{gltf:{normalize:!0,loadBuffers:!0,loadImages:!0,decompressMeshes:!0,postProcess:!0},log:console},deprecatedOptions:{fetchImages:"gltf.loadImages",createImages:"gltf.loadImages",decompress:"gltf.decompressMeshes",postProcess:"gltf.postProcess",gltf:{decompress:"gltf.decompressMeshes"}}};function jD(){return(jD=d(V().mark(function e(t){var n,i,r,a,o=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=1<o.length&&void 0!==o[1]?o[1]:{},i=2<o.length?o[2]:void 0,(n=g(g({},VD.options),n)).gltf=g(g({},VD.options.gltf),n.gltf),r=n.byteOffset,r=void 0===r?0:r,a={},e.next=8,function(){return UD.apply(this,arguments)}(a,t,r,n,i);case 8:return e.abrupt("return",e.sent);case 9:case"end":return e.stop()}},e)}))).apply(this,arguments)}var WD={URI:0,EMBEDDED:1};function JD(e,t,n,i){e.rotateYtoZ=!0;var r=e.byteOffset+e.byteLength-n;if(0==r)throw new Error("glTF byte length must be greater than 0.");return e.gltfUpAxis=i["3d-tiles"]&&i["3d-tiles"].assetGltfUpAxis?i["3d-tiles"].assetGltfUpAxis:"Y",e.gltfArrayBuffer=EE(t,n,r),e.gltfByteOffset=0,e.gltfByteLength=r,n%4!=0&&console.warn("".concat(e.type,": embedded glb is not aligned to a 4-byte boundary.")),e.byteOffset+e.byteLength}function qD(){return XD.apply(this,arguments)}function XD(){return(XD=d(V().mark(function e(r,a,o,s){var l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:u=o["3d-tiles"]||{},i=n=t=void 0;var t=r,n=a;switch(n){case WD.URI:var i=new Uint8Array(t.gltfArrayBuffer,t.gltfByteOffset),i=(new TextDecoder).decode(i);t.gltfUrl=i.replace(/[\s\0]+$/,""),delete t.gltfArrayBuffer,delete t.gltfByteOffset,delete t.gltfByteLength;break;case WD.EMBEDDED:break;default:throw new Error("b3dm: Illegal glTF format field")}if(u.loadGLTF){if(l=s.parse,u=s.fetch,r.gltfUrl)return e.next=7,u(r.gltfUrl,o);e.next=9}else e.next=16;break;case 7:r.gltfArrayBuffer=e.sent,r.gltfByteOffset=0;case 9:if(r.gltfArrayBuffer)return e.next=12,l(r.gltfArrayBuffer,VD,o,s);e.next=16;break;case 12:r.gltf=e.sent,delete r.gltfArrayBuffer,delete r.gltfByteOffset,delete r.gltfByteLength;case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}function YD(){return(YD=d(V().mark(function e(t,n,i,r,a){var o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=function(e,t,n,i){n=ES(e,t,n),n=_S(e,t,n),n=MS(e,t,n),n=JD(e,t,n,i);t=new hS(e.featureTableJson,e.featureTableBinary);return e.rtcCenter=t.getGlobalProperty("RTC_CENTER",iS.FLOAT,3),n}(t,n,i,r),e.next=3,qD(t,WD.EMBEDDED,r,a);case 3:return(o=null==t||null==(o=t.gltf)?void 0:o.extensions)&&o.CESIUM_RTC&&(t.rtcCenter=o.CESIUM_RTC.center),e.abrupt("return",i);case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function KD(){return(KD=d(V().mark(function e(t,n,i,r,a){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=function(e,t,n,i){if(n=ES(e,t,n),1!==e.version)throw new Error("Instanced 3D Model version ".concat(e.version," is not supported"));n=_S(e,t,n);var r=new DataView(t);if(e.gltfFormat=r.getUint32(n,!0),n=MS(e,t,n+=4),n=JD(e,t,n,i),0===e.featureTableJsonByteLength)throw new Error("i3dm parser: featureTableJsonByteLength is zero.");r=new hS(e.featureTableJson,e.featureTableBinary),t=r.getGlobalProperty("INSTANCES_LENGTH");if(r.featuresLength=t,!Number.isFinite(t))throw new Error("i3dm parser: INSTANCES_LENGTH must be defined");e.eastNorthUp=r.getGlobalProperty("EAST_NORTH_UP"),e.rtcCenter=r.getGlobalProperty("RTC_CENTER",iS.FLOAT,3);new bS(e.batchTableJson,e.batchTableBinary,t);return function(e,t,n){for(var i=[new Array(n),e._batchTable][0],r=new B,a=(new B,new B,new B,new QB),o=new f_,s=new B,l={},u=new YB,c=[],h=[],d=new B,p=new B,f=0;f<n;f++){var m=void 0;if(t.hasProperty("POSITION"))m=t.getProperty("POSITION",iS.FLOAT,3,f,r);else if(t.hasProperty("POSITION_QUANTIZED")){m=t.getProperty("POSITION_QUANTIZED",iS.UNSIGNED_SHORT,3,f,r);var v=t.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",iS.FLOAT,3,d);if(!v)throw new Error("i3dm parser: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");var g=t.getGlobalProperty("QUANTIZED_VOLUME_SCALE",iS.FLOAT,3,p);if(!g)throw new Error("i3dm parser: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");for(var A=0;A<3;A++)m[A]=m[A]/65535*g[A]+v[A]}if(!m)throw new Error("i3dm: POSITION or POSITION_QUANTIZED must be defined for each instance.");if(r.copy(m),l.translation=r,e.normalUp=t.getProperty("NORMAL_UP",iS.FLOAT,3,f,c),e.normalRight=t.getProperty("NORMAL_RIGHT",iS.FLOAT,3,f,h),e.normalUp){if(!e.normalRight)throw new Error("i3dm: Custom orientation requires both NORMAL_UP and NORMAL_RIGHT.");e.hasCustomOrientation=!0}else{if(e.octNormalUp=t.getProperty("NORMAL_UP_OCT32P",iS.UNSIGNED_SHORT,2,c),e.octNormalRight=t.getProperty("NORMAL_RIGHT_OCT32P",iS.UNSIGNED_SHORT,2,h),e.octNormalUp){if(e.octNormalRight)throw new Error("i3dm: oct-encoded orientation not implemented");throw new Error("i3dm: oct-encoded orientation requires NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P")}e.eastNorthUp?(U_.WGS84.eastNorthUpToFixedFrame(r,u),u.getRotationMatrix3(a)):a.identity()}o.fromMatrix3(a),l.rotation=o,s.set(1,1,1);var y=t.getProperty("SCALE",iS.FLOAT,1,f),y=(Number.isFinite(y)&&s.multiplyByScalar(y),t.getProperty("SCALE_NON_UNIFORM",iS.FLOAT,3,f,c)),y=(y&&s.scale(y),l.scale=s,t.getProperty("BATCH_ID",iS.UNSIGNED_SHORT,1,f)),w=(void 0===y&&(y=f),(new YB).fromQuaternion(l.rotation)),w=(u.identity(),u.translate(l.translation),u.multiplyRight(w),u.scale(l.scale),u.clone());i[f]={modelMatrix:w,batchId:y}}e.instances=i}(e,r,t),n}(t,n,i,r),e.next=3,qD(t,t.gltfFormat,r,a);case 3:return e.abrupt("return",i);case 4:case"end":return e.stop()}},e)}))).apply(this,arguments)}function ZD(){return(ZD=d(V().mark(function e(t,n,i,r,a,o){var s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:i=ES(t,n,i),s=new DataView(n),t.tilesLength=s.getUint32(i,!0),i+=4,t.tiles=[];case 5:if(t.tiles.length<t.tilesLength&&12<t.byteLength-i)return s={},t.tiles.push(s),e.next=10,o(n,i,r,a,s);e.next=13;break;case 10:i=e.sent,e.next=5;break;case 13:return e.abrupt("return",i);case 14:case"end":return e.stop()}},e)}))).apply(this,arguments)}function $D(){return($D=d(V().mark(function e(t,n,i,r){var a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t.rotateYtoZ=!0,t.gltfUpAxis=i["3d-tiles"]&&i["3d-tiles"].assetGltfUpAxis?i["3d-tiles"].assetGltfUpAxis:"Y",a=r.parse,e.next=5,a(n,VD,i,r);case 5:t.gltf=e.sent;case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function eP(e){return tP.apply(this,arguments)}function tP(){return(tP=d(V().mark(function e(t){var n,i,r,a,o=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=1<o.length&&void 0!==o[1]?o[1]:0,i=2<o.length?o[2]:void 0,r=3<o.length?o[3]:void 0,(a=4<o.length&&void 0!==o[4]?o[4]:{}).byteOffset=n,a.type=function(e,t){return t=1<arguments.length&&void 0!==t?t:0,e=new DataView(e),"".concat(String.fromCharCode(e.getUint8(t+0))).concat(String.fromCharCode(e.getUint8(t+1))).concat(String.fromCharCode(e.getUint8(t+2))).concat(String.fromCharCode(e.getUint8(t+3)))}(t,n),e.t0=a.type,e.next=e.t0===bT.COMPOSITE?9:e.t0===bT.BATCHED_3D_MODEL?12:e.t0===bT.GLTF?15:e.t0===bT.INSTANCED_3D_MODEL?18:e.t0===bT.POINT_CLOUD?21:24;break;case 9:return e.next=11,function(){return ZD.apply(this,arguments)}(a,t,n,i,r,eP);case 11:return e.abrupt("return",e.sent);case 12:return e.next=14,function(){return YD.apply(this,arguments)}(a,t,n,i,r);case 14:return e.abrupt("return",e.sent);case 15:return e.next=17,function(){return $D.apply(this,arguments)}(a,t,i,r);case 17:return e.abrupt("return",e.sent);case 18:return e.next=20,function(){return KD.apply(this,arguments)}(a,t,n,i,r);case 20:return e.abrupt("return",e.sent);case 21:return e.next=23,function(){return PS.apply(this,arguments)}(a,t,n,i,r);case 23:return e.abrupt("return",e.sent);case 24:throw new Error("3DTileLoader: unknown type ".concat(a.type));case 25:case"end":return e.stop()}},e)}))).apply(this,arguments)}var nP=1952609651,iP=1;function rP(){return(rP=d(V().mark(function e(t){var n,i,r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(new Uint32Array(t.slice(0,4))[0]!==nP)throw new Error("Wrong subtree file magic number");e.next=3;break;case 3:if(new Uint32Array(t.slice(4,8))[0]!==iP)throw new Error("Wrong subtree file verson, must be 1");e.next=6;break;case 6:if(n=sP(t.slice(8,16)),i=new Uint8Array(t,24,n),r=new TextDecoder("utf8"),r=r.decode(i),i=JSON.parse(r),r=sP(t.slice(16,24)),a=new ArrayBuffer(0),r&&(a=t.slice(24+n)),"bufferView"in i.tileAvailability)return e.next=17,aP(i,"tileAvailability",a);e.next=18;break;case 17:i.tileAvailability.explicitBitstream=e.sent;case 18:if("bufferView"in i.contentAvailability)return e.next=21,aP(i,"contentAvailability",a);e.next=22;break;case 21:i.contentAvailability.explicitBitstream=e.sent;case 22:if("bufferView"in i.childSubtreeAvailability)return e.next=25,aP(i,"childSubtreeAvailability",a);e.next=26;break;case 25:i.childSubtreeAvailability.explicitBitstream=e.sent;case 26:return e.abrupt("return",i);case 27:case"end":return e.stop()}},e)}))).apply(this,arguments)}function aP(){return oP.apply(this,arguments)}function oP(){return(oP=d(V().mark(function e(t,n,i){var r,a,o;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t[n].bufferView,r=t.bufferViews[r],(a=t.buffers[r.buffer]).uri)return e.next=6,nC(a.uri);e.next=11;break;case 6:return a=e.sent,e.next=9,a.arrayBuffer();case 9:return o=e.sent,e.abrupt("return",new Uint8Array(o,r.byteOffset,r.byteLength));case 11:return e.abrupt("return",new Uint8Array(i,r.byteOffset,r.byteLength));case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}function sP(e){var e=new DataView(e),t=e.getUint32(0,!0),e=e.getUint32(4,!0);return t+Math.pow(2,32)*e}var lP={id:"3d-tiles-subtree",name:"3D Tiles Subtree",module:"3d-tiles",version:"3.1.4",extensions:["subtree"],mimeTypes:["application/octet-stream"],tests:["subtree"],parse:function(e){return rP.apply(this,arguments)},options:{}},uP={QUADTREE:4,OCTREE:8};function cP(){return hP.apply(this,arguments)}function hP(){return(hP=d(V().mark(function e(h,d){var p,f,m,v,g,A,y,w,b,x,E,C,B,_,M,T,S,I,D,P,k,L=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(E=2<L.length&&void 0!==L[2]?L[2]:{mortonIndex:0,x:0,y:0,z:0},y=3<L.length&&void 0!==L[3]?L[3]:0,p=4<L.length&&void 0!==L[4]?L[4]:0,f=5<L.length&&void 0!==L[5]?L[5]:{level:0,mortonIndex:0,x:0,y:0,z:0},A=d.subdivisionScheme,C=d.subtreeLevels,m=d.maximumLevel,v=d.contentUrlTemplate,T=d.subtreesUriTemplate,k=d.basePath,g={children:[],lodMetricValue:0,contentUrl:""},A=uP[A],b=1&y,x=y>>1&1,P=y>>2&1,w=(Math.pow(A,p)-1)/(A-1),y=pP(E.mortonIndex,y),w=w+y,b=pP(E.x,b),x=pP(E.y,x),E=pP(E.z,P),P=!1,C<p+1&&(P=dP(h.childSubtreeAvailability,y)),C=pP(f.x,b),B=pP(f.y,x),_=pP(f.z,E),M=p+f.level,P)return P="".concat(k,"/").concat(T),k=fP(P,M,C,B,_),e.next=27,eB(k,lP);e.next=40;break;case 27:T=e.sent,h=T,f.mortonIndex=y,f.x=b,f.y=x,f.z=E,f.level=p,p=E=x=b=w=y=0;case 40:if(!dP(h.tileAvailability,w)||m<p)return e.abrupt("return",g);e.next=43;break;case 43:dP(h.contentAvailability,w)&&(g.contentUrl=fP(v,M,C,B,_)),S=p+1,I={mortonIndex:y,x:b,y:x,z:E},D=0;case 48:if(D<A)return e.next=51,cP(h,d,I,D,S,f);e.next=56;break;case 51:((P=e.sent).contentUrl||P.children.length)&&(t=P,n=M+1,i={childTileX:b,childTileY:x,childTileZ:E},c=a=c=u=l=s=o=a=void 0,a=(r=d).basePath,o=d.refine,s=d.getRefine,l=d.lodMetricType,u=d.getTileType,c=d.rootLodMetricValue,r=d.rootBoundingVolume,a=t.contentUrl&&t.contentUrl.replace("".concat(a,"/"),""),c/=Math.pow(2,n),n=function(e,t,n){{var i,r,a,o,s,l,u,c;if(t.region)return i=n.childTileX,r=n.childTileY,n=n.childTileZ,s=N(t.region,6),c=s[0],a=s[1],l=s[2],u=s[3],o=s[4],s=s[5],e=Math.pow(2,e),{region:[c+(l=(l-c)/e)*i,a+(u=(u-a)/e)*r,c+l*(i+1),a+u*(r+1),o+(c=(s-o)/e)*n,o+c*(n+1)]}}return console.warn("Unsupported bounding volume type: ",t),null}(n,r,i),k={children:t.children,contentUrl:t.contentUrl,content:{uri:a},id:t.contentUrl,refine:s(o),type:u(t),lodMetricType:l,lodMetricValue:c,boundingVolume:n},g.children.push(k));case 53:D++,e.next=48;break;case 56:return e.abrupt("return",g);case 57:case"end":return e.stop()}var t,n,i,r,a,o,s,l,u,c},e)}))).apply(this,arguments)}function dP(e,t){var n;return"constant"in e?Boolean(e.constant):!!e.explicitBitstream&&(t=t,e=e.explicitBitstream,n=Math.floor(t/8),t%=8,1==(e[n]>>t&1))}function pP(e,t){return parseInt(e.toString(2)+t.toString(2),2)}function fP(e,t,n,i,r){var a=function(e){var t,n={};for(t in e)n["{".concat(t,"}")]=e[t];return n}({level:t,x:n,y:i,z:r});return e.replace(/{level}|{x}|{y}|{z}/gi,function(e){return a[e]})}function mP(e){if(!e.contentUrl)return zM.EMPTY;var t=e.contentUrl.split(".").pop();switch(t){case"pnts":return zM.POINTCLOUD;case"i3dm":case"b3dm":case"glb":case"gltf":return zM.SCENEGRAPH;default:return t}}function vP(e){switch(e){case"REPLACE":case"replace":return UM.REPLACE;case"ADD":case"add":return UM.ADD;default:return e}}function gP(e,t){var n;return e?(e.content&&(n=e.content.uri||e.content.url,e.contentUrl="".concat(t.basePath,"/").concat(n)),e.id=e.contentUrl,e.lodMetricType=QM.GEOMETRIC_ERROR,e.lodMetricValue=e.geometricError,e.transformMatrix=e.transform,e.type=mP(e),e.refine=vP(e.refine),e):null}function AP(){return(AP=d(V().mark(function e(t){var n,i,r,a,o,s,l,u,c,h;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t.root){e.next=2;break}return e.abrupt("return",null);case 2:return n=t.basePath,o=t.root.extensions["3DTILES_implicit_tiling"],i=o.subdivisionScheme,r=o.maximumLevel,a=o.subtreeLevels,o=o.subtrees.uri,s=fP(o,0,0,0,0),s="".concat(n,"/").concat(s),e.next=9,eB(s,lP);case 9:return s=e.sent,h="".concat(n,"/").concat(t.root.content.uri),l=t.root.refine,u=t.root.geometricError,c=t.root.boundingVolume,h={contentUrlTemplate:h,subtreesUriTemplate:o,subdivisionScheme:i,subtreeLevels:a,maximumLevel:r,refine:l,basePath:n,lodMetricType:QM.GEOMETRIC_ERROR,rootLodMetricValue:u,rootBoundingVolume:c,getTileType:mP,getRefine:vP},e.next=17,function(){return yP.apply(this,arguments)}(t.root,s,h);case 17:return e.abrupt("return",e.sent);case 18:case"end":return e.stop()}},e)}))).apply(this,arguments)}function yP(){return(yP=d(V().mark(function e(t,n,i){var r,a;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return",null);case 2:return t.lodMetricType=QM.GEOMETRIC_ERROR,t.lodMetricValue=t.geometricError,t.transformMatrix=t.transform,e.next=7,cP(n,i);case 7:return a=e.sent,r=a.children,(a=a.contentUrl)&&(t.contentUrl=a,t.content={uri:a.replace("".concat(i.basePath,"/"),"")}),t.refine=vP(t.refine),t.type=mP(t),t.children=r,t.id=t.contentUrl,e.abrupt("return",t);case 16:case"end":return e.stop()}},e)}))).apply(this,arguments)}var wP="3DTILES_implicit_tiling",bP={id:"3d-tiles",name:"3D Tiles",module:"3d-tiles",version:"3.1.4",extensions:["cmpt","pnts","b3dm","i3dm"],mimeTypes:["application/octet-stream"],tests:["cmpt","pnts","b3dm","i3dm"],parse:function(e,t,n){return CP.apply(this,arguments)},options:{"3d-tiles":{loadGLTF:!0,decodeQuantizedPositions:!1,isTileset:"auto",assetGltfUpAxis:null}}};function xP(){return(xP=d(V().mark(function e(t,n,i){var r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r={content:{featureIds:null}},e.next=4,eP(t,0,n,i,r.content);case 4:return e.abrupt("return",r.content);case 5:case"end":return e.stop()}},e)}))).apply(this,arguments)}function EP(){return(EP=d(V().mark(function e(i,r,a){var o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if((s=JSON.parse((new TextDecoder).decode(i))).loader=r.loader||bP,s.url=a.url,s.basePath=kE(s.url),n=void 0,null!=(t=s)&&null!=(n=t.extensionsRequired)&&n.includes(wP)&&null!=t&&null!=(n=t.extensionsUsed)&&n.includes(wP))return e.next=7,function(){return AP.apply(this,arguments)}(s);e.next=10;break;case 7:e.t0=e.sent,e.next=11;break;case 10:e.t0=function(e){var t=e.basePath,e=gP(e.root,e),n=[];for(n.push(e);0<n.length;){var i,r=q((n.pop()||{}).children||[]);try{for(r.s();!(i=r.n()).done;){var a=i.value;gP(a,{basePath:t}),n.push(a)}}catch(e){r.e(e)}finally{r.f()}}return e}(s);case 11:return s.root=e.t0,s.type=HM.TILES3D,s.lodMetricType=QM.GEOMETRIC_ERROR,s.lodMetricValue=(null==(o=s.root)?void 0:o.lodMetricValue)||0,e.abrupt("return",s);case 16:case"end":return e.stop()}var t,n},e)}))).apply(this,arguments)}function CP(){return(CP=d(V().mark(function e(t,n,i){var r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=n["3d-tiles"]||{},"auto"===r.isTileset?i.url&&-1!==i.url.indexOf(".json"):r.isTileset)return e.next=5,function(){return EP.apply(this,arguments)}(t,n,i);e.next=8;break;case 5:t=e.sent,e.next=11;break;case 8:return e.next=10,function(){return xP.apply(this,arguments)}(t,n,i);case 10:t=e.sent;case 11:return e.abrupt("return",t);case 12:case"end":return e.stop()}},e)}))).apply(this,arguments)}var BP="https://api.cesium.com/v1/assets";function _P(){return(_P=d(V().mark(function e(t,n){var i,r,a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(n){e.next=6;break}return e.next=3,function(){return MP.apply(this,arguments)}(t);case 3:o=e.sent,i=q(o.items);try{for(i.s();!(r=i.n()).done;)"3DTILES"===(a=r.value).type&&(n=a.id)}catch(e){i.e(e)}finally{i.f()}case 6:return e.next=8,function(){return TP.apply(this,arguments)}(t,n);case 8:return o=e.sent,s=o.type,l=o.url,Vx("3DTILES"===s&&l),o.headers={Authorization:"Bearer ".concat(o.accessToken)},e.abrupt("return",o);case 13:case"end":return e.stop()}},e)}))).apply(this,arguments)}function MP(){return(MP=d(V().mark(function e(t){var n,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Vx(t),n=BP,i={Authorization:"Bearer ".concat(t)},e.next=5,nC(n,{fetch:{headers:i}});case 5:if((r=e.sent).ok){e.next=8;break}throw new Error(r.statusText);case 8:return e.next=10,r.json();case 10:return e.abrupt("return",e.sent);case 11:case"end":return e.stop()}},e)}))).apply(this,arguments)}function TP(){return(TP=d(V().mark(function e(t,n){var i,r,a,o,s;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Vx(t,n),i={Authorization:"Bearer ".concat(t)},r="".concat(BP,"/").concat(n),e.next=5,nC("".concat(r),{fetch:{headers:i}});case 5:if((a=e.sent).ok){e.next=8;break}throw new Error(a.statusText);case 8:return e.next=10,a.json();case 10:return o=e.sent,e.next=13,nC("".concat(r,"/endpoint"),{fetch:{headers:i}});case 13:if((a=e.sent).ok){e.next=16;break}throw new Error(a.statusText);case 16:return e.next=18,a.json();case 18:return s=e.sent,o=g(g({},o),s),e.abrupt("return",o);case 21:case"end":return e.stop()}},e)}))).apply(this,arguments)}function SP(){return(SP=d(V().mark(function e(t){var n,i,r,a=arguments;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=(1<a.length&&void 0!==a[1]?a[1]:{})["cesium-ion"]||{},n=i.accessToken,i=i.assetId,Number.isFinite(i)||(r=t.match(/\/([0-9]+)\/tileset.json/),i=r&&r[1]),e.abrupt("return",function(){return _P.apply(this,arguments)}(n,i));case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}var IP,DP=g(g({},bP),{},{id:"cesium-ion",name:"Cesium Ion",preload:function(e){return SP.apply(this,arguments)},parse:(IP=d(V().mark(function e(t,n,i){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return(n=g({},n))["3d-tiles"]=n["cesium-ion"],n.loader=DP,e.abrupt("return",bP.parse(t,n,i));case 4:case"end":return e.stop()}},e)})),function(e,t,n){return IP.apply(this,arguments)}),options:{"cesium-ion":g(g({},bP.options["3d-tiles"]),{},{accessToken:null})}});function PP(e){for(var t=document.createElement("canvas"),n=(t.width=64,t.height=64,t.getContext("2d")),i=(n.rect(0,0,64,64),n.createLinearGradient(0,0,64,64)),r=0;r<e.length;r++){var a=e[r];i.addColorStop(a[0],"#"+a[1].getHexString())}n.fillStyle=i,n.fill();n=new Fl(t);return n.needsUpdate=!0,n.minFilter=U,n.wrapS=ot,n.wrapT=ot,n.repeat.set(2,2),n}function kP(e){e.updateMatrix(),e.updateMatrixWorld(),e.matrixWorldInverse.copy(e.matrixWorld).invert();var t=new xa;return t.setFromProjectionMatrix((new _e).multiplyMatrices(e.projectionMatrix,e.matrixWorldInverse)),t}function LP(e){var t=e.boundingVolume,n=0,e=(e.content&&(n=Math.min(e.content.byteLength/5e5,1)),new Me(n,1,0)),n=new Ql(1,1,1),i=new _e;t.halfAxes?i.copy(RP(t.halfAxes)):t.radius&&n.scale(2*t.radius,2*t.radius,2*t.radius),n.applyMatrix4(i);i=new Bl(new iu(n),new vl({color:e}));return i.position.copy(re(Re,J(t.center))),i}function RP(e){return(new _e).fromArray([2*e[0],2*e[1],2*e[2],0,2*e[3],2*e[4],2*e[5],0,2*e[6],2*e[7],2*e[8],0,0,0,0,1])}var FP,OP,NP,jl={SPECTRAL:[[0,new Me(.3686,.3098,.6353)],[.1,new Me(.1961,.5333,.7412)],[.2,new Me(.4,.7608,.6471)],[.3,new Me(.6706,.8667,.6431)],[.4,new Me(.902,.9608,.5961)],[.5,new Me(1,1,.749)],[.6,new Me(.9961,.8784,.5451)],[.7,new Me(.9922,.6824,.3804)],[.8,new Me(.9569,.4275,.2627)],[.9,new Me(.8353,.2431,.3098)],[1,new Me(.6196,.0039,.2588)]],PLASMA:[[0,new Me(.241,.015,.61)],[.1,new Me(.387,.001,.654)],[.2,new Me(.524,.025,.653)],[.3,new Me(.651,.125,.596)],[.4,new Me(.752,.227,.513)],[.5,new Me(.837,.329,.431)],[.6,new Me(.907,.435,.353)],[.7,new Me(.963,.554,.272)],[.8,new Me(.992,.681,.195)],[.9,new Me(.987,.822,.144)],[1,new Me(.94,.975,.131)]],YELLOW_GREEN:[[0,new Me(.1647,.2824,.3451)],[.1,new Me(.1338,.3555,.4227)],[.2,new Me(.061,.4319,.4864)],[.3,new Me(0,.5099,.5319)],[.4,new Me(0,.5881,.5569)],[.5,new Me(.137,.665,.5614)],[.6,new Me(.2906,.7395,.5477)],[.7,new Me(.4453,.8099,.5201)],[.8,new Me(.6102,.8748,.485)],[.9,new Me(.7883,.9323,.4514)],[1,new Me(.9804,.9804,.4314)]],VIRIDIS:[[0,new Me(.267,.005,.329)],[.1,new Me(.283,.141,.458)],[.2,new Me(.254,.265,.53)],[.3,new Me(.207,.372,.553)],[.4,new Me(.164,.471,.558)],[.5,new Me(.128,.567,.551)],[.6,new Me(.135,.659,.518)],[.7,new Me(.267,.749,.441)],[.8,new Me(.478,.821,.318)],[.9,new Me(.741,.873,.15)],[1,new Me(.993,.906,.144)]],INFERNO:[[0,new Me(.077,.042,.206)],[.1,new Me(.225,.036,.388)],[.2,new Me(.373,.074,.432)],[.3,new Me(.522,.128,.42)],[.4,new Me(.665,.182,.37)],[.5,new Me(.797,.255,.287)],[.6,new Me(.902,.364,.184)],[.7,new Me(.969,.516,.063)],[.8,new Me(.988,.683,.072)],[.9,new Me(.961,.859,.298)],[1,new Me(.988,.998,.645)]],GRAYSCALE:[[0,new Me(0,0,0)],[1,new Me(1,1,1)]],TURBO:[[0,new Me(.18995,.07176,.23217)],[.07,new Me(.25107,.25237,.63374)],[.13,new Me(.27628,.42118,.89123)],[.2,new Me(.25862,.57958,.99876)],[.27,new Me(.15844,.73551,.92305)],[.33,new Me(.09267,.86554,.7623)],[.4,new Me(.19659,.94901,.59466)],[.47,new Me(.42778,.99419,.38575)],[.53,new Me(.64362,.98999,.23356)],[.6,new Me(.80473,.92452,.20459)],[.67,new Me(.93301,.81236,.22667)],[.73,new Me(.99314,.67408,.20348)],[.8,new Me(.9836,.49291,.12849)],[.87,new Me(.92105,.31489,.05475)],[.93,new Me(.81608,.18462,.01809)],[1,new Me(.66449,.08436,.00424)]],RAINBOW:[[0,new Me(.278,0,.714)],[1/6,new Me(0,0,1)],[2/6,new Me(0,1,1)],[.5,new Me(0,1,0)],[4/6,new Me(1,1,0)],[5/6,new Me(1,.64,0)],[1,new Me(1,0,0)]],CONTOUR:[[0,new Me(0,0,0)],[.03,new Me(0,0,0)],[.04,new Me(1,1,1)],[1,new Me(1,1,1)]]},Zu=((t=FP=FP||{})[t.Intensity=1]="Intensity",t[t.Classification=2]="Classification",t[t.Elevation=3]="Elevation",t[t.RGB=4]="RGB",t[t.White=5]="White",(ad=OP=OP||{})[ad.FlatTexture=1]="FlatTexture",ad[ad.ShadedTexture=2]="ShadedTexture",ad[ad.ShadedNoTexture=3]="ShadedNoTexture",(Id=NP=NP||{})[Id.Reset=1]="Reset",Id[Id.Mercator=2]="Mercator",Id[Id.WGS84Cartesian=3]="WGS84Cartesian",jl.RAINBOW),GP="undefined"!=typeof document?PP(Zu):null,UP="undefined"!=typeof document?PP(jl.GRAYSCALE):null,zP={throttleRequests:!0,maxRequests:64,updateInterval:.1,maxConcurrency:1,maximumScreenSpaceError:16,maximumMemoryUsage:32,viewDistanceScale:1,skipLevelOfDetail:!1,updateTransforms:!0,shading:OP.FlatTexture,transparent:!1,pointCloudColoring:FP.White,pointSize:1,worker:!0,wireframe:!1,debug:!1,basisTranscoderPath:null,dracoDecoderPath:null,material:null,computeNormals:!1,shaderCallback:null,geoTransform:NP.Reset,preloadTilesCount:null},HP=function(){function e(){te(this,e)}return A(e,null,[{key:"load",value:function(H){return Qx(this,void 0,void 0,V().mark(function e(){var u,r,a,o,s,l,c,h,d,p,f,m,v,g,A,y,w,b,U,x,E,C,B,_,M,T,S,I,D,P,k,L,R,F,O,N,G,z=this;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(G=function(e,t,n,i){if(!M&&!u.pauseTilesetUpdate){k&&i.aspect==D||(a=new _M({fov:i.fov/180*Math.PI,aspectRatio:i.aspect,near:i.near,far:i.far}),k=a.sseDenominator,D=i.aspect,u.debug&&console.log("Updated sse denonimator:",k));var r,a=kP(i).planes.map(function(e){return new fM(e.normal.toArray(),e.constant)}),i=new AM(a),a=new Le,n=(n.getSize(a),{camera:{position:P.toArray()},height:a.y,frameNumber:e._frameNumber,sseDenominator:k,cullingVolume:i,viewport:{id:0}}),o=(e._cache.reset(),e._traverser.traverse(e.root,n,e.options),q(e.tiles));try{for(o.s();!(r=o.n()).done;){var s=r.value;s.selected?t[s.id]?t[s.id].visible=!0:console.error("TILE SELECTED BUT NOT LOADED!!",s.id):t[s.id]&&(t[s.id].visible=!1)}}catch(e){o.e(e)}finally{o.f()}for(;0<d.length;){var l=d.pop();t[l.id]&&l.contentState==RM&&(p.remove(t[l.id]),VP(t[l.id]),delete t[l.id]),h[l.id]&&(VP(h[l.id]),f.remove(h[l.id]),delete h[l.id])}a=e.stats.get("Tiles Loaded").count,i=e.stats.get("Tiles Loading").count;return H.onProgress&&H.onProgress(a,a+i),H.loadingManager&&!T&&0==i&&(null==u.preloadTilesCount||a>=u.preloadTilesCount)&&(T=!0,H.loadingManager.itemEnd(H.url)),n}},N=function(){u.geoTransform!=NP.WGS84Cartesian&&(E.copy(C).invert(),E.premultiply(L),E.copy(L).multiply((new _e).copy(C).invert()),x.modelMatrix=new YB(E.toArray()))},O=function(e){var t;e.boundingVolume.halfAxes&&(e=e.boundingVolume.halfAxes,e=(new _e).extractRotation(RP(e)).premultiply((new _e).extractRotation(R)),(new ki).setFromRotationMatrix(e).equals(new ki)||(_=!0,t=new Re(C.elements[12],C.elements[13],C.elements[14]),C.extractRotation(e),C.setPosition(t),N()))},u=Object.assign(Object.assign({},zP),H.options),r=H.url,a=u.updateInterval,o=5,s={},u.cesiumIONToken)return s["cesium-ion"]={accessToken:u.cesiumIONToken},e.next=12,DP.preload(r,s);e.next=14;break;case 12:l=e.sent,s.fetch={headers:l.headers};case 14:return H.loadingManager&&H.loadingManager.itemStart(r),e.next=17,eB(r,bP,Object.assign({},s));case 17:return l=e.sent,c={},h={},d=[],p=new Cs,f=new Cs,u.debug||(f.visible=!1),m={pointSize:{type:"f",value:u.pointSize},gradient:{type:"t",value:GP},grayscale:{type:"t",value:UP},rootCenter:{type:"vec3",value:new Re},rootNormal:{type:"vec3",value:new Re},coloring:{type:"i",value:u.pointCloudColoring},hideGround:{type:"b",value:!0},elevationRange:{type:"vec2",value:new Le(0,400)},maxIntensity:{type:"f",value:1},intensityContrast:{type:"f",value:1},alpha:{type:"f",value:1}},v=new pa({uniforms:m,vertexShader:"\n varying vec3 vColor;\n uniform sampler2D gradient;\n uniform sampler2D grayscale;\n attribute float intensity;\n attribute float classification;\n uniform vec3 rootCenter;\n uniform vec3 rootNormal;\n uniform vec2 elevationRange;\n uniform int coloring;\n uniform bool hideGround;\n uniform float maxIntensity;\n uniform float intensityContrast;\n uniform float pointSize;\n\n #ifdef USE_COLOR\n vec3 getRGB() {\n vec3 rgb = color;\n return rgb;\n }\n #endif\n\n vec3 getElevation(){\n vec4 world = modelMatrix * vec4( position, 1.0 );\n float diff = abs(dot(rootNormal, (vec3(world) - rootCenter)));\n float w = max(diff - elevationRange.x,0.0) / max(elevationRange.y - elevationRange.x,1.0);\n vec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\n\n return cElevation;\n }\n\n vec3 getIntensity(){\n // TODO: real contrast enhancement. Check https://github.com/yuki-koyama/enhancer/blob/master/shaders/enhancer.fs\n float intmod = pow(intensity, intensityContrast);\n vec3 cIntensity = texture2D(grayscale, vec2(intmod / maxIntensity ,1.0-(intmod / maxIntensity))).rgb;\n return cIntensity;\n }\n\n vec3 getClassification(){\n float classNormalized = classification / 255.0;\n vec3 cClassification = texture2D(gradient, vec2(classNormalized * 5.0,1.0-classNormalized * 5.0)).rgb;\n return cClassification;\n }\n\n vec3 getColor(){\n vec3 color;\n if (hideGround && classification == 2.0) {\n return vec3(0.0, 0.0, 0.0); \n }\n\n if (coloring == 1) {\n color = getIntensity();\n }\n else if (coloring == 2) {\n color = getClassification();\n } else if (coloring == 3) {\n color = getElevation();\n } \n #ifdef USE_COLOR\n else if (coloring == 4) {\n color = getRGB();\n }\n #endif\n else {\n color = vec3(1.0, 1.0, 1.0);\n }\n return color;\n }\n\n void main() {\n vColor = getColor();\n\n gl_PointSize = pointSize;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }\n",fragmentShader:"\n varying vec3 vColor;\n uniform float alpha;\n\n void main() {\n if (vColor == vec3(0.0, 0.0, 0.0)) {\n discard;\n } else {\n gl_FragColor = vec4( vColor, alpha);\n }\n }\n",transparent:u.transparent,vertexColors:!0}),A=g=null,y=H.gltfLoader||new Yb,b=w=void 0,u.basisTranscoderPath&&((w=new Rb).detectSupport(H.renderer),w.setTranscoderPath(u.basisTranscoderPath+"/"),w.setWorkerLimit(1),y.setKTX2Loader(w)),u.dracoDecoderPath&&((b=new Ab).setDecoderPath(u.dracoDecoderPath+"/"),b.setWorkerLimit(u.maxConcurrency),y.setDRACOLoader(b)),U=new Jb({transparent:u.transparent}),B={maximumMemoryUsage:u.maximumMemoryUsage,maximumScreenSpaceError:u.maximumScreenSpaceError,viewDistanceScale:u.viewDistanceScale,skipLevelOfDetail:u.skipLevelOfDetail,updateTransforms:u.updateTransforms,throttleRequests:u.throttleRequests,maxRequests:u.maxRequests,maxDepth:u.maxDepth||50,contentLoader:function(i){return Qx(z,void 0,void 0,V().mark(function e(){var t,n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=null,e.t0=i.type,e.next=e.t0===zM.POINTCLOUD?4:e.t0===zM.SCENEGRAPH||e.t0===zM.MESH?6:10;break;case 4:return t=function(e,t,n,i){var r={rtc_center:e.content.rtcCenter,points:e.content.attributes.positions,intensities:e.content.attributes.intensity,classifications:e.content.attributes.classification,rgb:null,rgba:null},a=e.content.attributes.colors;a&&3===a.size&&(r.rgb=a.value);a&&4===a.size&&(r.rgba=a.value);a=new j,a.setAttribute("position",new ne(r.points,3)),e=(new _e).fromArray(e.computedTransform).premultiply(i);r.rgba?a.setAttribute("color",new ne(r.rgba,4)):r.rgb&&a.setAttribute("color",new Er(r.rgb,3,!0));r.intensities&&a.setAttribute("intensity",new Q(r.intensities,1,!0));r.classifications&&a.setAttribute("classification",new Er(r.classifications,1,!1));i=new Pl(a,n.material||t);r.rtc_center&&(a=r.rtc_center,e.multiply((new _e).makeTranslation(a[0],a[1],a[2])));return i.applyMatrix4(e),i}(i,v,u,R),e.abrupt("break",10);case 6:return e.next=8,function(a,o,s,l,u){return Qx(this,void 0,void 0,V().mark(function e(){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise(function(t,n){var e=(new _e).makeRotationAxis(new Re(1,0,0),Math.PI/2),i="Z"!==(null==(i=o.tileset.asset)?void 0:i.gltfUpAxis),r=(new _e).fromArray(o.computedTransform).premultiply(u);i&&r.multiply(e),a.parse(o.content.gltfArrayBuffer,o.contentUrl?o.contentUrl.substr(0,o.contentUrl.lastIndexOf("/")+1):"",function(e){e=e.scenes[0];e.applyMatrix4(r),e.traverse(function(e){var t,n;"Mesh"==e.type&&(n=(t=(e=e).material).map,l.material?(e.material=l.material.clone(),t.dispose()):l.shading==OP.FlatTexture&&(e.material=s.clone(),t.dispose()),l.shading!=OP.ShadedNoTexture?"ShaderMaterial"==e.material.type?e.material.uniforms.map={value:n}:e.material.map=n:(n&&n.dispose(),e.material.map=null),l.shaderCallback&&(e.onBeforeRender=l.shaderCallback),e.material.wireframe=l.wireframe,l.computeNormals)&&e.geometry.computeVertexNormals()}),t(e)},function(e){n(new Error("error parsing gltf in tile ".concat(o.id,": ").concat(e)))})}));case 1:case"end":return e.stop()}},e)}))}(y,i,U,u,R);case 8:return t=e.sent,e.abrupt("break",10);case 10:t&&(t.visible=!1,c[i.id]=t,p.add(c[i.id]),u.debug&&(n=LP(i),f.add(n),h[i.id]=n),x.dispatchEvent({type:"tileLoaded",tileContent:t}));case 11:case"end":return e.stop()}},e)}))},onTileLoad:function(t){return Qx(z,void 0,void 0,V().mark(function e(){return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:x&&(!_&&(null==t?void 0:t.depth)<=o&&O(t),x._frameNumber++,G(x,c,A,g));case 1:case"end":return e.stop()}},e)}))},onTileUnload:function(e){d.push(e)},onTileError:function(e,t){console.error("Tile error",e.id,t)}},x=new wT(l,Object.assign(Object.assign({},B),{loadOptions:Object.assign(Object.assign({},s),{maxConcurrency:u.maxConcurrency,worker:u.worker,gltf:{loadImages:!1},"3d-tiles":{loadGLTF:!1}})})),E=new _e,C=new _e,B=new Re,_=!1,x.root.boundingVolume?(x.root.header.boundingVolume.region&&(console.warn("Cannot apply a model matrix to bounding volumes of type region. Tileset stays in original geo-coordinates."),u.geoTransform=NP.WGS84Cartesian),C.setPosition(x.root.boundingVolume.center[0],x.root.boundingVolume.center[1],x.root.boundingVolume.center[2])):console.warn("Bounding volume not found, no transformations applied"),u.debug&&(F=LP(x.root),f.add(F),h[x.root.id]=F),T=M=!1,m.rootCenter.value.copy(B),m.rootNormal.value.copy(new Re(0,0,1).normalize()),x.stats.get("Loader concurrency").count=u.maxConcurrency,x.stats.get("Maximum SSE").count=u.maximumScreenSpaceError,x.stats.get("Maximum mem usage").count=u.maximumMemoryUsage,D=I=null,P=new Re(1/(S=0),1/0,1/0),k=null,p.updateMatrixWorld(!0),L=(new _e).copy(p.matrixWorld),R=(new _e).copy(L).invert(),O(x.root),N(),u.debug&&(h[x.root.id].applyMatrix4(E),f.matrixWorld.copy(p.matrixWorld)),u.geoTransform==NP.Mercator?(t=x.cartographicCenter[1],n=x.cartographicCenter[0],i=void 0,i=2*Math.PI*6378137/2,n=n*i/180,t=Math.log(Math.tan((90+t)*Math.PI/360))/(Math.PI/180),F=new Le(n,t*i/180),B.set(F.x,0,-F.y),p.position.copy(B),p.rotation.set(-Math.PI/2,0,0),p.updateMatrixWorld(!0)):u.geoTransform==NP.WGS84Cartesian&&(p.applyMatrix4(C),p.updateMatrixWorld(!0),B.copy(p.position)),e.abrupt("return",{model:p,runtime:{getTileset:function(){return x},getStats:function(){return x.stats},showTiles:function(e){f.visible=e},setWireframe:function(t){u.wireframe=t,p.traverse(function(e){e instanceof Z&&(e.material.wireframe=t)})},setDebug:function(e){u.debug=e,f.visible=e},setShading:function(e){u.shading=e},getTileBoxes:function(){return f},setViewDistanceScale:function(e){x.options.viewDistanceScale=e,x._frameNumber++,G(x,c,A,g)},setHideGround:function(e){m.hideGround.value=e},setPointCloudColoring:function(e){m.coloring.value=e},setElevationRange:function(e){m.elevationRange.value.set(e[0],e[1])},setMaxIntensity:function(e){m.maxIntensity.value=e},setIntensityContrast:function(e){m.intensityContrast.value=e},setPointAlpha:function(e){m.alpha.value=e},getLatLongHeightFromPosition:function(e){e=x.ellipsoid.cartesianToCartographic((new Re).copy(e).applyMatrix4((new _e).copy(E).invert()).toArray());return{lat:e[1],long:e[0],height:e[2]}},getPositionFromLatLongHeight:function(e){e=x.ellipsoid.cartographicToCartesian([e.long,e.lat,e.height]);return re(Re,J(e)).applyMatrix4(E)},getCameraFrustum:function(e){var t,e=kP(e).planes.map(function(e){return new fM(e.normal.toArray(),e.constant)}).map(function(e){return e=e,t=new Cs,n=new Ru(10,5),i=re(Re,J(e.projectPointOntoPlane([0,0,0]))),e=new Re(e.normal.x,e.normal.y,e.normal.z),r=(new Re).copy(i).add(e),n.lookAt(r),n.translate(i.x,i.y,i.z),r=new Jb({color:65535,side:ve}),n=new Z(n,r),r=new $d(e,i,5,16776960),t.add(r),t.add(n),t;var t,n,i,r}),n=new Cs,i=q(e);try{for(i.s();!(t=i.n()).done;){var r=t.value;n.add(r)}}catch(e){i.e(e)}finally{i.f()}return n},update:function(e,t,n){g=n,A=t,S+=e,x&&a<=S&&(L.equals(p.matrixWorld)||(S=0,L.copy(p.matrixWorld),N(),e=(new Re).setFromMatrixPosition(L),m.rootCenter.value.copy(e),m.rootNormal.value.copy(new Re(0,0,1).applyMatrix4(L).normalize()),R.copy(L).invert(),u.debug&&(h[x.root.id].matrixWorld.copy(E),h[x.root.id].applyMatrix4(L))),null==I?I=(new _e).copy(n.matrixWorld):n.matrixWorld.equals(I)&&n.aspect==D||(S=0,x._frameNumber++,n.getWorldPosition(P),I.copy(n.matrixWorld),G(x,c,t,n)))},dispose:function(){for(M=!0,x._destroy();0<p.children.length;){var e=p.children[0];VP(e),p.remove(e)}for(;0<f.children.length;){var t=f.children[0];f.remove(t),t.geometry.dispose(),t.material.dispose()}w&&w.dispose(),b&&b.dispose()}}});case 62:case"end":return e.stop()}var t,n,i},e)}))}}]),e}();function QP(e){var t;null!=(t=null==e?void 0:e.uniforms)&&t.map?null!=(t=null==(t=null==e?void 0:e.uniforms)?void 0:t.map.value)&&t.dispose():e.map&&null!=(t=e.map)&&t.dispose(),e.dispose()}function VP(e){e.traverse(function(e){if(e.isMesh)if(e.geometry.dispose(),e.material.isMaterial)QP(e.material);else{var t,n=q(e.material);try{for(n.s();!(t=n.n()).done;)QP(t.value)}catch(e){n.e(e)}finally{n.f()}}});for(var t=e.children.length-1;0<=t;t--){var n=e.children[t];e.remove(n)}}function jP(e,t){Y0.call(this),this.sampleLevel=4,this.unbiased=!0,this.clearColor=void 0!==e?e:0,this.clearAlpha=void 0!==t?t:0,this.renderUniforms={bgTex:{value:null},outlineTex:{value:null},opacity:{value:1}},this.renderMat=new pa({uniforms:this.renderUniforms,vertexShader:hy.vertexShader,fragmentShader:" \n uniform sampler2D bgTex; \n uniform sampler2D outlineTex; \n uniform float opacity;\n varying vec2 vUv;\n void main() {\n vec4 color1 = texture2D( bgTex, vUv );\n vec4 color2 = texture2D( outlineTex, vUv ); \n gl_FragColor = opacity * mix(color1, color2, color2.a) ;\n \n \n } \n ",premultipliedAlpha:!0,blending:ye,depthTest:!1,depthWrite:!1,transparent:!0}),this.renderMat2=new pa({uniforms:ca.clone(hy.uniforms),vertexShader:hy.vertexShader,fragmentShader:"uniform float opacity; \n uniform sampler2D tDiffuse; \n varying vec2 vUv;\n\n void main() {\n \n vec4 texel = texture2D( tDiffuse, vUv ); \n \n if(texel.r == 0.0 && texel.g == 0.0 && texel.b == 0.0){\n discard;\n }else{\n gl_FragColor = opacity * texel;\n }\n } \n ",depthTest:!1,depthWrite:!1,transparent:!0}),this.camera2=new mh(-1,1,1,-1,0,1),this.scene2=new Ps,this.quad2=new Z(new Ba(2,2),this.renderMat),this.quad2.frustumCulled=!1,this.scene2.add(this.quad2),this.copyPass=new K0(hy),this.copyPass.renderToScreen=!0}function WP(e,t){var n;this.renderer=e,void 0===t&&(n={minFilter:U,magFilter:U,format:St,stencilBuffer:!1},(t=new Zn((e=e.getDrawingBufferSize(new Le)).width,e.height,n)).texture.name="EffectComposer.rt1"),this.renderTarget1=t,this.renderTarget2=t.clone(),this.renderTarget2.texture.name="EffectComposer.rt2",this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2,this.passes=[],this.copyPass=new K0(hy)}function JP(e){this.selectedObjects=void 0!==e?e:[],this.visibleEdgeColor=new Me(1,1,1),this.hiddenEdgeColor=new Me(.1,.04,.02),this.edgeGlow=0,this.usePatternTexture=!1,this.edgeStrength=50,this.downSampleRatio=1,this.pulsePeriod=0,this.showHiddenPart=!1,Y0.call(this),this.resolution=new Le(256,256);var e={minFilter:U,magFilter:U,format:St},t=Math.round(this.resolution.x/this.downSampleRatio),n=Math.round(this.resolution.y/this.downSampleRatio);this.renderTargetMaskBuffer=new Zn(this.resolution.x,this.resolution.y,e),this.renderTargetMaskBuffer.texture.name="OutlinePass.mask",this.renderTargetMaskBuffer.texture.generateMipmaps=!1,this.depthMaterial=new ms,this.depthMaterial.side=ve,this.depthMaterial.depthPacking=Rn,this.depthMaterial.blending=ge,this.prepareMaskMaterial=this.getPrepareMaskMaterial(),this.prepareMaskMaterial.side=ve,this.renderTargetDepthBuffer=new Zn(this.resolution.x,this.resolution.y,e),this.renderTargetDepthBuffer.texture.name="OutlinePass.depth",this.renderTargetDepthBuffer.texture.generateMipmaps=!1,this.edgeDetectionMaterial=this.getEdgeDetectionMaterial(this.edgeStrength),this.renderTargetEdgeBuffer1=new Zn(t,n,e),this.renderTargetEdgeBuffer1.texture.name="OutlinePass.edge1",this.renderTargetEdgeBuffer1.texture.generateMipmaps=!1,this.overlayMaterial=this.getOverlayMaterial(),this.copyUniforms=ca.clone(hy.uniforms),this.copyUniforms.opacity.value=1,this.materialCopy=new pa({uniforms:this.copyUniforms,vertexShader:hy.vertexShader,fragmentShader:hy.fragmentShader,blending:ge,depthTest:!1,depthWrite:!1,transparent:!0}),this.enabled=!0,this.needsSwap=!1,this.oldClearColor=new Me,this.oldClearAlpha=1,this.camera=new mh(-1,1,1,-1,0,1),this.scene=new Ps,this.quad=new Z(new Ba(2,2),null),this.quad.frustumCulled=!1,this.scene.add(this.quad),this.textureMatrix=new _e}jP.prototype=Object.assign(Object.create(Y0.prototype),{constructor:jP,dispose:function(){this.sampleRenderTarget&&(this.sampleRenderTarget.dispose(),this.sampleRenderTarget=null)},setSize:function(e,t){this.sampleRenderTarget&&this.sampleRenderTarget.setSize(e,t),this.childPass&&this.childPass.setSize(e,t)},addPass:function(e){this.childPass=e},render:function(e,t,n,i,r,a,o,s){this.useCopy&&(e=this.copyPass.scene,t=this.copyPass.camera),this.sampleRenderTarget||(this.sampleRenderTarget=new Zn(a.width,a.height,{minFilter:U,magFilter:U,format:St}),this.sampleRenderTarget.texture.name="SSAARenderPass.sample");for(var l,u,c=jP.JitterVectors[Math.max(0,Math.min(this.sampleLevel,5))],h=i.autoClear,d=(i.autoClear=!1,i.getClearColor(new Me).getHex()),p=i.getClearAlpha(),f=(i.setClearColor(this.clearColor,this.clearAlpha),1/c.length),m=i.getRenderTarget(),v=(u=m?m.scissorTest?(l=m.scissor.w,m.scissor.z):(l=m.width,m.height):(l=a.width,a.height),0);v<c.length;v++){var g=c[v],g=(t.setViewOffset&&t.setViewOffset(l,u,.0625*g[0],.0625*g[1],l,u),f),A=(this.unbiased&&(g+=1/32*((v+.5)/c.length-.5)),i.setRenderTarget(this.sampleRenderTarget),i.clear(),this.useCopy?this.copyPass.render(e,t,i,r,a):s?s({target:this.sampleRenderTarget}):i.render(e,t),i.setRenderTarget(m),this.childPass&&this.childPass.render(e,t,i,r,a,null,s));this.renderUniforms.bgTex.value=this.sampleRenderTarget.texture,this.renderUniforms.outlineTex.value=A?a.texture:null,this.renderUniforms.opacity.value=g,this.renderToScreen||i.setRenderTarget(r),0===v&&(i.setClearColor(0,0),i.clear()),i.render(this.scene2,this.camera2),this.renderToScreen||i.setRenderTarget(m)}t.clearViewOffset&&t.clearViewOffset(),i.autoClear=h,i.setClearColor(d,p)}}),jP.JitterVectors=[[[0,0]],[[4,4],[-4,-4]],[[-2,-6],[6,-2],[-6,2],[2,6]],[[1,-3],[-1,3],[5,1],[-3,-5],[-5,5],[-7,-1],[3,7],[7,-7]],[[1,1],[-1,-3],[-3,2],[4,-1],[-5,-2],[2,5],[5,3],[3,-5],[-2,6],[0,-7],[-4,-6],[-6,4],[-8,0],[7,-4],[6,7],[-7,-8]],[[-4,-7],[-7,-5],[-3,-5],[-5,-4],[-1,-4],[-2,-2],[-6,-1],[-4,0],[-7,1],[-1,2],[-6,3],[-3,3],[-7,6],[-3,6],[-5,7],[-1,7],[5,-7],[1,-6],[6,-5],[4,-4],[2,-3],[7,-2],[1,-1],[4,-1],[2,1],[6,2],[0,4],[4,4],[2,5],[7,5],[5,6],[3,7]]];var qP,XP,YP=function(){y(r,Y0);var i=C(r);function r(e,t){var n;return te(this,r),(n=i.call(this)).scene=e,n.camera=t,n.clear=!0,n.needsSwap=!1,n.inverse=!1,n}return A(r,[{key:"render",value:function(e,t,n){var i,r,a=e.getContext(),o=e.state;o.buffers.color.setMask(!1),o.buffers.depth.setMask(!1),o.buffers.color.setLocked(!0),o.buffers.depth.setLocked(!0),r=this.inverse?(i=0,1):(i=1,0),o.buffers.stencil.setTest(!0),o.buffers.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),o.buffers.stencil.setFunc(a.ALWAYS,i,4294967295),o.buffers.stencil.setClear(r),o.buffers.stencil.setLocked(!0),e.setRenderTarget(n),this.clear&&e.clear(),e.render(this.scene,this.camera),e.setRenderTarget(t),this.clear&&e.clear(),e.render(this.scene,this.camera),o.buffers.color.setLocked(!1),o.buffers.depth.setLocked(!1),o.buffers.stencil.setLocked(!1),o.buffers.stencil.setFunc(a.EQUAL,1,4294967295),o.buffers.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),o.buffers.stencil.setLocked(!0)}}]),r}(),KP=function(){y(n,Y0);var t=C(n);function n(){var e;return te(this,n),(e=t.call(this)).needsSwap=!1,e}return A(n,[{key:"render",value:function(e){e.state.buffers.stencil.setLocked(!1),e.state.buffers.stencil.setTest(!1)}}]),n}(),ZP=(Object.assign(WP.prototype,{swapBuffers:function(){var e=this.readBuffer;this.readBuffer=this.writeBuffer,this.writeBuffer=e},addPass:function(e){this.passes.push(e);var t=this.renderer.getDrawingBufferSize(new Le);e.setSize(t.width,t.height)},removePass:function(e){e=this.passes.indexOf(e);-1<e&&this.passes.splice(e,1)},insertPass:function(e,t){this.passes.splice(t,0,e)},render:function(e,t,n,i){var r,a,o,s=!1,l=this.passes.filter(function(e){return e.enabled}),u=l.length;for(this.readTarget&&this.copyPass.render(e,this.renderer,this.readBuffer,this.renderer.getRenderTarget()),r=0;r<u;r++)(o=l[r]).render(e,t,n,this.renderer,this.writeBuffer,this.readBuffer,s,i),o.needsSwap&&(s&&((a=this.renderer.context).stencilFunc(a.NOTEQUAL,1,4294967295),this.copyPass.render(this.renderer,this.writeBuffer,this.readBuffer),a.stencilFunc(a.EQUAL,1,4294967295)),this.swapBuffers()),void 0!==YP&&(o instanceof YP?s=!0:o instanceof KP&&(s=!1));o.renderToScreen||(this.copyPass.renderToScreen=!0,this.copyPass.render(null,null,this.renderer,this.writeBuffer,this.readBuffer))},reset:function(e){var t;void 0===e&&(t=this.renderer.getDrawingBufferSize(new Le),(e=this.renderTarget1.clone()).setSize(t.width,t.height)),this.renderTarget1.dispose(),this.renderTarget2.dispose(),this.renderTarget1=e,this.renderTarget2=e.clone(),this.writeBuffer=this.renderTarget1,this.readBuffer=this.renderTarget2},setSize:function(e,t,n){this.renderTarget1.setSize(e*(n=n||1),t*n),this.renderTarget2.setSize(e*n,t*n);for(var i=0;i<this.passes.length;i++)this.passes[i].setSize(e*n,t*n)}}),new Le(1/1024,1/512),JP.prototype=Object.assign(Object.create(Y0.prototype),{constructor:JP,dispose:function(){this.renderTargetMaskBuffer.dispose(),this.renderTargetEdgeBuffer1.dispose(),this.renderTargetDepthBuffer.dispose()},replaceDepthToViewZ:function(e){e=e.isPerspectiveCamera?"perspective":"orthographic";e!=this.lastCameraType&&(this.lastCameraType=e,this.prepareMaskMaterial.fragmentShader=this.prepareMaskMaterial.fragmentShader.replace(/DEPTH_TO_VIEW_Z/g,e+"DepthToViewZ"),this.prepareMaskMaterial.needsUpdate=!0)},setSize:function(e,t){this.renderTargetEdgeBuffer1.setSize(e,t),this.renderTargetMaskBuffer.setSize(e,t),this.resolution.set(e,t)},changeVisibilityOfSelectedObjects:function(t){function e(e){(e.isPointcloud||e.isMesh||e.isLine||e.isSprite)&&viewer.updateVisible(e,"overlinePass",t)}for(var n=0;n<this.selectedObjects.length;n++)this.selectedObjects[n].traverse(e)},changeVisibilityOfNonSelectedObjects:function(r,e){var a=[];function t(e){(e.isPointcloud||e.isMesh||e.isLine||e.isSprite)&&a.push(e)}for(var n=0;n<this.selectedObjects.length;n++)this.selectedObjects[n].traverse(t);function i(e){if(e.isPointcloud||e.isMesh||e.isLine||e.isSprite){for(var t,n=!1,i=0;i<a.length;i++)if(a[i].id===e.id){n=!0;break}if(!n)return t=e.visible,viewer.updateVisible(e,"overlinePass",r),e.visible=!!r&&!!e.bVisible,e.bVisible=t,{stopContinue:!0}}}e.forEach(function(e){return e.traverse(i)})},updateTextureMatrix:function(e){this.textureMatrix.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),this.textureMatrix.multiply(e.projectionMatrix),this.textureMatrix.multiply(e.matrixWorldInverse)},render:function(t,n,e,i,r,a,o,s){var l,u,c,h,d,p,f,m,v=this;if(t instanceof Array||(t=[t]),0<this.selectedObjects.length&&0<this.edgeStrength)return l=function(e){s?s({target:e,dontRenderRtEDL:!(1<arguments.length&&void 0!==arguments[1])||arguments[1]}):(i.setRenderTarget(e),i.clear(),t.forEach(function(e){return i.render(e,n)}))},this.oldClearColor.copy(i.getClearColor(new Me)),this.oldClearAlpha=i.getClearAlpha(),u=i.autoClear,c=i.getRenderTarget(),i.autoClear=!1,o&&i.context.disable(i.context.STENCIL_TEST),i.setClearColor(16777215,1),o=viewer.background,h=viewer.backgroundOpacity,viewer.background=new Me(1,1,1),viewer.backgroundOpacity=1,this.showHiddenPart?(e.forEach(function(e){e.oldBeforeRender=e.beforeRender,e.beforeRender=function(){e.oldBeforeRender&&e.oldBeforeRender(),v.replaceDepthToViewZ(e.camera)}}),this.changeVisibilityOfSelectedObjects(!1),t.forEach(function(e){e.currentBackground=e.background,e.background=null,e.overrideMaterial=v.depthMaterial}),l(this.renderTargetDepthBuffer),this.changeVisibilityOfSelectedObjects(!0),e.forEach(function(e){e.beforeRender=function(){e.oldBeforeRender&&e.oldBeforeRender(),v.updateTextureMatrix(e.camera),v.prepareMaskMaterial.uniforms.cameraNearFar.value=new Le(e.camera.near,e.camera.far)}})):t.forEach(function(e){e.currentBackground=e.background,e.background=null}),p=new Map,f=new Map,this.changeVisibilityOfNonSelectedObjects(!1,t),t.forEach(function(e){e.overrideMaterial=v.prepareMaskMaterial}),this.showHiddenPart&&(this.prepareMaskMaterial.uniforms.depthTexture.value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms.textureMatrix.value=this.textureMatrix),viewer.scene.pointclouds.forEach(function(e){d=e.material.activeAttributeName,e.material.activeAttributeName="color",p.set(e,e.material.color),e.material.color="#000000",f.set(e,e.material.opacity),e.material.opacity=1}),l(this.renderTargetMaskBuffer),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName=d,e.material.color=p.get(e),e.material.opacity=f.get(e)}),this.showHiddenPart&&e.forEach(function(e){e.beforeRender=e.oldBeforeRender}),t.forEach(function(e){e.overrideMaterial=null,e.background=e.currentBackground}),viewer.background=o,viewer.backgroundOpacity=h,this.changeVisibilityOfNonSelectedObjects(!0,t),this.quad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value=new Le(this.resolution.x,this.resolution.y),this.edgeDetectionMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.visibleEdgeColor,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.hiddenEdgeColor,this.renderToScreen?(this.quad.material.transparent=!0,m=null,i.setClearColor(this.oldClearColor,this.oldClearAlpha),l(null,!1),e=i.getSize(new Le),i.setViewport(0,0,e.x,e.y),i.setScissorTest(!1)):(m=a,i.setClearColor(0,0),i.clear()),i.setRenderTarget(m),i.render(this.scene,this.camera),i.setRenderTarget(c),i.setClearColor(this.oldClearColor,this.oldClearAlpha),i.autoClear=u,!0},getPrepareMaskMaterial:function(){return this.showHiddenPart?new pa({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new Le(.5,.5)},textureMatrix:{value:new _e}},vertexShader:["varying vec4 projTexCoord;","varying vec4 vPosition;","uniform mat4 textureMatrix;","void main() {","\tvPosition = modelViewMatrix * vec4( position, 1.0 );","\tvec4 worldPosition = modelMatrix * vec4( position, 1.0 );","\tprojTexCoord = textureMatrix * worldPosition;","\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join("\n"),fragmentShader:["#include <packing>","varying vec4 vPosition;","varying vec4 projTexCoord;","uniform sampler2D depthTexture;","uniform vec2 cameraNearFar;","void main() {","\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));","\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );","\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;","\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);","}"].join("\n")}):new L({color:"#000000"})},getEdgeDetectionMaterial:function(e){return new pa({uniforms:{edgeStrength:{value:e},maskTexture:{value:null},texSize:{value:new Le(10,10)},visibleEdgeColor:{value:new Re(1,1,1)},hiddenEdgeColor:{value:new Re(1,1,1)}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\t\t\t\tuniform sampler2D maskTexture;\n uniform float edgeStrength;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec3 visibleEdgeColor;\n\t\t\t\tuniform vec3 hiddenEdgeColor;\n\t\t\t\t\n\t\t\t\tvoid main() { \n const float thickness = 1.0;\n vec2 invSize = thickness / texSize;\n\t\t\t\t\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\n\t\t\t\t\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\n\t\t\t\t\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\n\t\t\t\t\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\n\t\t\t\t\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\n\t\t\t\t\tfloat diff1 = (c1.r - c2.r)*0.5; //检测边缘,\n\t\t\t\t\tfloat diff2 = (c3.r - c4.r)*0.5;\n\t\t\t\t\tfloat d = length( vec2(diff1, diff2) ) * edgeStrength;\n\t\t\t\t\tfloat a1 = min(c1.g, c2.g);\n\t\t\t\t\tfloat a2 = min(c3.g, c4.g);\n\t\t\t\t\tfloat visibilityFactor = min(a1, a2); //检测深度值,是否被遮挡\n\t\t\t\t\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\n\t\t\t\t\t//gl_FragColor = vec4(0.0,1.0,0.0,1.0); \n gl_FragColor = vec4(edgeColor, 1.0) * vec4(d); \n\t\t\t\t}"})},getSeperableBlurMaterial:function(e){return new pa({defines:{MAX_RADIUS:e},uniforms:{colorTexture:{value:null},texSize:{value:new Le(.5,.5)},direction:{value:new Le(.5,.5)},kernelRadius:{value:1}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"#include <common>\t\t\t\tvarying vec2 vUv;\t\t\t\tuniform sampler2D colorTexture;\t\t\t\tuniform vec2 texSize;\t\t\t\tuniform vec2 direction;\t\t\t\tuniform float kernelRadius;\t\t\t\t\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\t\t\t\t}\t\t\t\tvoid main() {\t\t\t\t\tvec2 invSize = 1.0 / texSize;\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, kernelRadius);\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\t\t\t\t\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\t\t\t\t\tvec2 uvOffset = delta;\t\t\t\t\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\t\t\t\t\t\tfloat w = gaussianPdf(uvOffset.x, kernelRadius);\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\t\t\t\t\t\tdiffuseSum += ((sample1 + sample2) * w);\t\t\t\t\t\tweightSum += (2.0 * w);\t\t\t\t\t\tuvOffset += delta;\t\t\t\t\t}\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\t\t\t\t}"})},getOverlayMaterial:function(){return new pa({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv; \n\t\t\t\tuniform sampler2D edgeTexture1; \n\t\t\t\tuniform float edgeStrength; \n\t\t\t\t \n\t\t\t\tvoid main() { \n\t\t\t\t\tgl_FragColor = edgeStrength * texture2D(edgeTexture1, vUv); \n\t\t\t\t}",blending:ye,depthTest:!1,depthWrite:!1,transparent:!0})}}),JP.BlurDirectionX=new Le(1,0),JP.BlurDirectionY=new Le(0,1),2),$P=function(){y(i,zn);var n=C(i);function i(e){function t(e){var t,n;a.enabled&&(t=e.dragViewport)&&"OrthographicCamera"!=t.camera.type&&null===e.drag.object&&(t=e.isTouch?1==e.touches.length?"rotate":"scale-pan":e.buttons===Potree.defines.Buttons.LEFT?"rotate":"pan",void 0===e.drag.startHandled&&(e.drag.startHandled=!0,a.dispatchEvent({type:"start"})),(n=e.drag.pointerDelta.clone()).y*=-1,"rotate"==t?(a.yawDelta+=n.x*a.rotationSpeed,a.pitchDelta+=n.y*a.rotationSpeed):"pan"==t?(a.panDelta.x+=n.x,a.panDelta.y+=n.y):"scale-pan"==t&&(a.dollyEnd.subVectors(e.touches[0].pointer,e.touches[1].pointer),n=a.dollyEnd.length()/a.dollyStart.length(),a.dollyStart.copy(a.dollyEnd),a.radiusDelta=(1-n)*a.scene.view.radius,t=(new Le).addVectors(e.touches[0].pointer,e.touches[1].pointer).multiplyScalar(.5),(n=(new Le).subVectors(t,a.lastScalePointer)).y*=-1,a.panDelta.add(n),a.lastScalePointer=t.clone()),a.stopTweens())}te(this,i),(a=n.call(this)).viewer=e,a.renderer=e.renderer,a.scene=null,a.sceneControls=new Ps,a.rotationSpeed=3,a.fadeFactor=100,a.yawDelta=0,a.pitchDelta=0,a.panDelta=new Le(0,0),a.radiusDelta=0,a.doubleClockZoomEnabled=!0,a.tweens=[],a.dollyStart=new Le,a.dollyEnd=new Le,a.keys={FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39],UP:["Q".charCodeAt(0)],DOWN:["E".charCodeAt(0)]};var a,o=null;a.addEventListener("touchstart",function(e){o=e}),a.addEventListener("touchend",function(e){o=e}),a.addEventListener("touchmove",function(e){var t,n,i,r;a.enabled&&(2===e.touches.length&&2===o.touches.length?(t=e,r=(i=o).touches[0].pageX-i.touches[1].pageX,i=i.touches[0].pageY-i.touches[1].pageY,r=Math.sqrt(r*r+i*i),i=t.touches[0].pageX-t.touches[1].pageX,t=t.touches[0].pageY-t.touches[1].pageY,i=Math.sqrt(i*i+t*t),t=a.scene.view.radius+a.radiusDelta,a.radiusDelta=t/(i/r)-t,a.stopTweens()):3===e.touches.length&&3===o.touches.length&&(r=((i=o).touches[0].pageX+i.touches[1].pageX+i.touches[2].pageX)/3,t=(i.touches[0].pageY+i.touches[1].pageY+i.touches[2].pageY)/3,i=(e.touches[0].pageX+e.touches[1].pageX+e.touches[2].pageX)/3,n=(e.touches[0].pageY+e.touches[1].pageY+e.touches[2].pageY)/3,i=(i-r)/a.renderer.domElement.clientWidth,r=(n-t)/a.renderer.domElement.clientHeight,a.panDelta.x+=i,a.panDelta.y+=r,a.stopTweens()),o=e)}),a.viewer.addEventListener("global_drag",t),a.viewer.addEventListener("global_drop",function(e){a.enabled&&a.dispatchEvent({type:"end"})}),a.viewer.addEventListener("global_mousewheel",function(e){var t;!a.enabled||(t=a.scene.view.radius+a.radiusDelta)<.1&&0<e.delta||(a.radiusDelta+=-e.delta*t*.1,a.stopTweens())}),a.viewer.addEventListener("global_dblclick",function(e){a.enabled&&a.doubleClockZoomEnabled&&a.zoomToLocation(e.mouse)}),a.viewer.addEventListener("global_touchmove",function(e){1<e.touches.length&&t(e)});return a.viewer.addEventListener("global_touchstart",function(e){a.enabled&&2==e.touches.length&&(e=e,a.dollyStart.subVectors(e.touches[0].pointer,e.touches[1].pointer),a.lastScalePointer=(new Le).addVectors(e.touches[0].pointer,e.touches[1].pointer).multiplyScalar(.5))}),a.viewer.addEventListener("focusOnObject",function(e){e.position&&e.CamTarget&&(e=e.position.distanceTo(e.CamTarget))<ZP&&(ZP=.5*e)}),a}return A(i,[{key:"setScene",value:function(e){this.scene=e}},{key:"setEnable",value:function(e){this.enabled=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.radiusDelta=0,this.panDelta.set(0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i=viewer.inputHandler.intersect;i&&(t=i.object||i.pointcloud,i=i.location)&&t&&(n=this.scene.view.position.distanceTo(i),t=t.boundingBox.clone().applyMatrix4(t.matrixWorld).getSize(new Re).length(),n=Be.clamp(n,.1,Math.max(.1*t,3)),ZP=n,viewer.focusOnObject({position:i},"point",null,{distance:n}))}},{key:"stopTweens",value:function(){this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]}},{key:"update",value:function(e){var t,n,i,r,a,o,s,l,u,c,h;this.enabled&&(t=this.scene.view,n=this.viewer.inputHandler,l=this.keys.FORWARD.some(function(e){return n.pressedKeys[e]}),u=this.keys.BACKWARD.some(function(e){return n.pressedKeys[e]}),c=this.keys.LEFT.some(function(e){return n.pressedKeys[e]}),h=this.keys.RIGHT.some(function(e){return n.pressedKeys[e]}),i=this.keys.UP.some(function(e){return n.pressedKeys[e]}),r=this.keys.DOWN.some(function(e){return n.pressedKeys[e]}),s=o=a=0,l?o=1:u&&(o=-1),c?a=-1:h&&(a=1),i?s=1:r&&(s=-1),0==a&&0==o&&0==s||t.translate(a,o,s,!0),l=Math.min(1,this.fadeFactor*e),u=t.yaw,c=t.pitch,h=t.getPivot(),u-=l*this.yawDelta,c-=l*this.pitchDelta,t.yaw=u,t.pitch=c,i=this.scene.view.direction.multiplyScalar(-t.radius),r=(new Re).addVectors(h,i),t.position.copy(r),a=this.scene.getActiveCamera(),o=2*t.radius*Math.tan(Be.degToRad(a.fov/2)),s=-this.panDelta.x*o,e=this.panDelta.y*o,t.pan(s,e),l=t.radius+ +this.radiusDelta,u=t.direction.multiplyScalar(-l),c=(new Re).addVectors(t.getPivot(),u),this.constantlyForward&&l<ZP&&(l=ZP),t.radius=l,t.position.copy(c),h=t.radius,this.viewer.setMoveSpeed(h),this.stop())}}]),i}(),ek=function(){function u(){te(this,u),this.onStartListeners=[],this.onEndListeners=[],this.element=null}var n;return A(u,[{key:"onStart",value:function(e){this.onStartListeners.push(e)}},{key:"onEnd",value:function(e){this.onEndListeners.push(e)}}],[{key:"createButton",value:(n=d(V().mark(function e(a,t){var o,n,s,l,i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(r=function(e){e.style.position="absolute",e.style.bottom="20px",e.style.padding="12px 6px",e.style.border="1px solid #fff",e.style.borderRadius="4px",e.style.background="rgba(0,0,0,0.1)",e.style.color="#fff",e.style.font="normal 13px sans-serif",e.style.textAlign="center",e.style.opacity="0.7",e.style.outline="none",e.style.zIndex="999"},i=function(){var i=null;function e(e){e.addEventListener("end",r);var t,n=q(o.onStartListeners);try{for(n.s();!(t=n.n()).done;)(0,t.value)()}catch(e){n.e(e)}finally{n.f()}a.xr.setSession(e),l(),i=e}function r(){i.removeEventListener("end",r);var e,t=q(o.onEndListeners);try{for(t.s();!(e=t.n()).done;)(0,e.value)()}catch(e){t.e(e)}finally{t.f()}s(),i=null}o.element.style.display="",o.element.style.cursor="pointer",s(),o.element.onmouseenter=function(){o.element.style.opacity="1.0"},o.element.onmouseleave=function(){o.element.style.opacity="0.7"},o.element.onclick=function(){null===i?navigator.xr.requestSession("immersive-vr",{optionalFeatures:["local-floor","bounded-floor","hand-tracking"]}).then(e):i.end()}},l=function(){o.element.innerHTML='\n\t\t\t\t<div style="font-size: 0.5em;">EXIT</div>\n\t\t\t\t<div style="font-weight: bold;">VR</div>\n\t\t\t'},s=function(){o.element.innerHTML='\n\t\t\t\t<div style="font-size: 0.5em;">ENTER</div>\n\t\t\t\t<div style="font-weight: bold;">VR</div>\n\t\t\t'},t&&console.error('THREE.VRButton: The "options" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.'),o=new u,n=document.createElement("button"),o.element=n,"xr"in navigator)return o.element.id="VRButton",o.element.style.display="none",r(o.element),e.next=14,navigator.xr.isSessionSupported("immersive-vr");e.next=23;break;case 14:if(e.sent)return i(),e.abrupt("return",o);e.next=20;break;case 20:return e.abrupt("return",null);case 21:e.next=25;break;case 23:return!1===window.isSecureContext?console.log("WEBXR NEEDS HTTPS"):console.log("WEBXR not available"),e.abrupt("return",null);case 25:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})}]),u}(),tk=new Tc,nk={},ik=new Map,Od=function(){y(v,xA);var r,n,m=C(v);function v(e,t){var i,n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};te(this,v),i=m.call(this,e,$.extend(n,{name:"mainViewer"})),window.viewer=G(i),qP=t,"pano"==Potree.settings.editType||"merge"==Potree.settings.editType?(i.modules={Alignment:qw,SiteModel:t1},Potree.settings.useDepthTex=!1,"pano"==Potree.settings.editType?i.modules.PanoEditor=rb:"merge"==Potree.settings.editType&&(i.modules.MergeEditor=E1,i.modules.CamAniEditor=W1)):i.modules={Clip:jw,Alignment:qw,SiteModel:t1,RouteGuider:new M1,clipping:new S1,ParticleEditor:j1,CamAniEditor:W1},i.navigateMode="free",i.isEdit=!0,i.waitQueue=[],i.unitConvert=new Pw,i.visible=!0,i.fpVisiDatasets=[],i.atDatasets=[],i.objs=new K,Potree.Features.EXT_DEPTH.isSupported(i.renderer.getContext())||console.error("ExtFragDepth unsupported! 边缘增强和测量线遮挡失效"),i.guiLoaded=!1,i.guiLoadTasks=[],i.onVrListeners=[],i.messages=[],i.elMessages=$('\n\t\t<div id="message_listing" \n\t\t\tstyle="position: absolute; z-index: 1000; left: 10px; bottom: 10px">\n\t\t</div>'),$(e).append(i.elMessages),i.paused,document.addEventListener("visibilitychange",function(e){i.dispatchEvent({type:"pageVisible",v:!document.hidden})});try{Potree.settings.isOfficial||(0===$(e).find("#potree_map").length&&(r=$('\n <div id="potree_map" class="mapBox" style="position: absolute; left: 50px; top: 50px; width: 400px; height: 400px; display: none">\n <div id="potree_map_header" style="position: absolute; width: 100%; height: 25px; top: 0px; background-color: rgba(0,0,0,0.5); z-index: 1000; border-top-left-radius: 3px; border-top-right-radius: 3px;">\n </div>\n <div id="potree_map_content" class="map" style="position: absolute; z-index: 100; top: 25px; width: 100%; height: calc(100% - 25px); border: 2px solid rgba(0,0,0,0.5); box-sizing: border-box;"></div>\n </div>\n '),$(e).append(r)),0===$(e).find("#potree_description").length&&(a=$('<div id="potree_description" class="potree_info_text"></div>'),$(e).append(a)),0===$(e).find("#potree_annotations").length&&(o=$('\n <div id="potree_annotation_container" \n style="position: absolute; z-index: 100000; width: 100%; height: 100%; pointer-events: none;"></div>'),$(e).append(o)),0===$(e).find("#potree_quick_buttons").length&&(s=$('\n <div id="potree_quick_buttons" class="quick_buttons_container" style="">\n </div>\n '),$(e).append(s)),qP)||"merge"==Potree.settings.editType||($(e).append($("<div id='potree_labels'></div>")),qP=$("<div id='mapGaode'></div>"),$(e).append(qP),qP=qP[0]),i.pointCloudLoadedCallback=n.onPointCloudLoaded||function(){},i.server=null,i.fov=60,i.isFlipYZ=!1,i.useDEMCollisions=!1,i.generateDEM=!1,i.minNodeSize=30,i.edlStrength=1,i.edlRadius=1.4,i.edlOpacity=1,i.useEDL=!1,i.description="",i.classifications=im.DEFAULT,i.moveSpeed=1,i.lengthUnit=pm.METER,i.lengthUnitDisplay=pm.METER,i.showBoundingBox=!1,i.showAnnotations=!0,i.freeze=!1,i.elevationGradientRepeat=lm.CLAMP,i.filterReturnNumberRange=[0,7],i.filterNumberOfReturnsRange=[0,7],i.filterGPSTimeRange=[-1/0,1/0],i.filterPointSourceIDRange=[0,65535],i.potreeRenderer=null,i.edlRenderer=null,i.pRenderer=null,i.scene=null,i.sceneVR=null,i.overlay=null,i.overlayCamera=null,i.inputHandler=null,i.controls=null,i.clippingTool=null,i.transformationTool=null,i.navigationCube=null,i.compass=null,i.skybox=null,i.clock=new Qh,i.background=null,n.noDragAndDrop||i.initDragAndDrop(),"undefined"!=typeof Stats&&(i.stats=new Stats,i.stats.showPanel(0),document.body.appendChild(i.stats.dom)),i.overlay=new Ps,i.overlayCamera=new mh(0,1,1,0,-1e3,1e3),i.pRenderer=new iA(i.renderer);i.shadowTestCam=new ma(90,1,2.5,10),i.shadowTestCam.position.set(3.5,-2.8,8.561),i.shadowTestCam.lookAt(new Re(0,0,4.87));var r,a,o,s,l=new kg(i.renderer),u=(i.sceneVR=new Ps,i.setScene(l),i.composer=new WP(i.renderer),i.ssaaRenderPass=new jP(0,0),i.composer.addPass(i.ssaaRenderPass),i.outlinePass=new JP),c=(u.renderToScreen=!0,u.enabled=!1,i.composer.addPass(u),u.edgeStrength=4,u.edgeGlow=0,u.visibleEdgeColor=new Me("#09a1b3"),u.hiddenEdgeColor=new Me("#09a1b3"),i.mainViewport=new EA(i.scene.view,i.scene.cameraP,{left:0,bottom:0,width:1,height:1,name:"MainView"}),i.viewports=[i.mainViewport],Potree.settings.showCompass&&(i.compass=new xg(Potree.settings.compassDom,i.mainViewport)),i.magnifier=new ub(G(i)),i.reticule=new db(G(i)),i.scene.scene.add(i.magnifier),i.scene.scene.add(i.reticule),"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&(i.mapViewer=new vy(qP)),i.inputHandler=new bA(G(i),i.scene.scene),i.clippingTool=new Pv(G(i)),i.transformationTool=new sg(G(i)),i.navigationCube=new gy(G(i)),i.navigationCube.visible=!1,i.createControls(),i.clippingTool.setScene(i.scene),function(e){1===i.scene.pointclouds.length&&(e=e.pointcloud.boundingBox.getSize(new Re).length(),i.setMoveSpeed(e/=2e3))}),h=function(e){i.inputHandler.deselect(e.volume)};i.addEventListener("scene_changed",function(e){i.inputHandler.setScene(e.scene),i.clippingTool.setScene(i.scene),e.scene.hasEventListener("pointcloud_added",c)||e.scene.addEventListener("pointcloud_added",c),e.scene.hasEventListener("volume_removed",c)||e.scene.addEventListener("volume_removed",h)}),i.scene.addEventListener("volume_removed",h),i.scene.addEventListener("pointcloud_added",c),i.setFOV(60),i.setEDLEnabled(!1),i.setEDLRadius(2.3),i.setEDLStrength(.008),i.setEDLOpacity(1),i.setPointBudget(1e6),i.setShowBoundingBox(!1),i.setFreeze(!1),i.setControls(i.fpControls),i.setBackground(new Me(Potree.config.background),1),i.scaleFactor=1,i.loadSettingsFromURL(),i.renderer.setAnimationLoop(i.loop.bind(G(i))),i.loadGUI=i.loadGUI.bind(G(i)),i.annotationTool=new Bw(G(i)),i.measuringTool=new ig(G(i)),i.volumeTool=new Sm(G(i)),i.tagTool=new bg(G(i)),_w.init(G(i),i.mapViewer?[G(i),i.mapViewer]:[G(i)]),("pano"==Potree.settings.editType?i.modules.PanoEditor:"merge"==Potree.settings.editType?i.modules.MergeEditor:(i.modules.SiteModel.init(),i.modules.ParticleEditor)).init(),i.modules.Alignment.init(),i.images360=new cy(G(i)),i.scene.scene.add(i.objs),nk={objLoader:new pb(tk),mtlLoader:new vb(tk),glbLoader:new Yb(void 0,i.renderer,Potree.settings.libsUrl)}}catch(e){i.onCrash(e)}var d="",p=(Object.defineProperty(Potree.settings,"pointDensity",{get:function(){return d},set:function(e){var t,n;e&&e!=d&&(t=Potree.config.pointDensity[e],n=(i.magnifier.visible?Potree.config.pointDensity.magnifier:t).pointBudget,viewer.setMinNodeSize(t.minNodeSize||Potree.config.minNodeSize),viewer.setPointBudget(n),d=e,i.setPointLevels())}}),""),f=(Object.defineProperty(Potree.settings,"UserPointDensity",{get:function(){return p},set:function(e){p!=e&&("showPointCloud"==Potree.settings.displayMode&&4!=i.viewports.length&&(Potree.settings.pointDensity=e),p=e)}}),Potree.settings.cameraFar);return Object.defineProperty(Potree.settings,"cameraFar",{get:function(){return f},set:function(e){e!=f&&("showPanos"!=Potree.settings.displayMode&&(i.mainViewport.camera.far=e,i.mainViewport.camera.updateProjectionMatrix()),f=e)}}),i.addEventListener("allLoaded",function(){setTimeout(i.testPointcloudsMaxLevel.bind(G(i)),1e3),i.scene.pointclouds.forEach(function(e){e.addEventListener("isVisible",function(e){"displayMode"!=e.reason&&i.updateModelBound("visibleChanged")})})}),"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&(i.addEventListener("switchFloorplanSelect",function(e){var t;i.selectedFloorplan=e.pointcloud,i.updateFpVisiDatasets(),e.pointcloud?t=[e.pointcloud]:i.fpVisiDatasets.length&&(t=i.fpVisiDatasets),t&&i.mapViewer.fitToDatasets(t)}),i.modules.SiteModel.bus.addEventListener("FloorChange",function(e){i.updateFpVisiDatasets(),i.updatePanosVisibles(e.currentFloor)}),i.mapViewer.mapLayer.addEventListener("floorplanLoaded",function(){i.updateCadVisibles(i.fpVisiDatasets,!0)})),i.addEventListener("camera_changed",function(e){e.changeInfo.positionChanged&&(ik.clear(),i.updateDatasetAt())}),i}return A(v,[{key:"ifPointBlockedByIntersect",value:function(e,t){var n,i=ik.get(t||e);return i?n=i.ifShelter:(n=viewer.inputHandler.ifBlockedByIntersect(e,.3,!0),ik.set(t||e,{ifShelter:n})),n}},{key:"updateDatasetAt",value:function(n){function e(){var t=viewer.mainViewport.view.position,e=i.scene.pointclouds.filter(function(e){return(e.visible||e.unvisibleReasons&&1==e.unvisibleReasons.length&&"displayMode"==e.unvisibleReasons[0].reason)&&e.ifContainsPoint(t)});return ag.getDifferenceSet(e,i.atDatasets).length&&(i.atDatasets=e,"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&i.updateFpVisiDatasets(),i.dispatchEvent({type:"pointcloudAtChange",pointclouds:e})),!(n=!1)}var i=this;n?e():ag.intervalTool.isWaiting("atWhichDataset",e,300)}},{key:"updatePanosVisibles",value:function(n){viewer.images360.panos.forEach(function(e){var t=n&&n.panos.includes(e);viewer.updateVisible(e,"buildingChange",t,2)})}},{key:"updateFpVisiDatasets",value:function(){var e,t=this,n=(this.modules.Clip,this.modules.SiteModel),i=this.modules.Alignment,r=n.currentFloor;this.selectedFloorplan?(e=[this.selectedFloorplan],this.updateCadVisibles(e)):n.editing||i.editing?(e=this.scene.pointclouds.filter(function(e){return t.getObjVisiByReason(e,"datasetSelection")}),this.updateCadVisibles(e)):(0==(n=r?this.findPointcloudsAtFloor(r):[]).length&&(n=this.atDatasets),this.updateCadVisibles(n))}},{key:"findPointcloudsAtFloor",value:function(i){var r=[],e=viewer.scene.pointclouds.filter(function(e){var t=0;if(e.belongToEntity&&(e.belongToEntity==i||e.belongToEntity.buildParent==i))return!0;if(e.panos.length){var n=e.panos.filter(function(e){return i.ifContainsPoint(e.position)}).length/e.panos.length;if(.5<n)return!0;n<.2&&(t+=n)}n=i.intersectPointcloudVolume(e)/i.getVolume(!0);if(.95<n)return!0;r.push({score:t+=n,pointcloud:e})});return e=0==e.length&&(r.sort(function(e,t){return e.score-t.score}),.4<r[0].score)?[r[0].pointcloud]:e}},{key:"updateCadVisibles",value:function(n,e){var t=this.fpVisiDatasets,n=this.fpVisiDatasets=n;if(!e&&0==ag.getDifferenceSet(t,n).length)return;viewer.scene.pointclouds.forEach(function(e){var t=viewer.mapViewer.mapLayer.getFloorplan(e.dataset_id),e=n.includes(e);t&&viewer.updateVisible(t.objectGroup,"buildingChange",e)}),viewer.mapViewer.mapLayer.needUpdate=!0,viewer.mapViewer.needRender=!0}},{key:"testPointcloudsMaxLevel",value:function(){function e(){i=!0;var n=(0<arguments.length&&void 0!==arguments[0]?arguments[0]:{}).camera||r.scene.getActiveCamera();ag.intervalTool.isWaiting("testPointcloudsMaxLevel",function(){if(!(!i&&50<a||"showPanos"==Potree.settings.displayMode)){a++;var t=!(i=!1);if(viewer.scene.pointclouds.forEach(function(e){e.testMaxNodeLevel(n)&&(t=!1)}),!t)return!0;r.removeEventListener("camera_changed",e),console.log("testPointcloudsMaxLevel结束")}},a<10?250:500)}var i,r=this,a=0;this.addEventListener("camera_changed",e),e()}},{key:"setPointLevels",value:function(){this.scene.pointclouds.forEach(function(e){e.setPointLevel()})}},{key:"onCrash",value:function(e){var t;throw $(this.renderArea).empty(),0===$(this.renderArea).find("#potree_failpage").length&&((t=$('\n\t\t\t<div id="#potree_failpage" class="potree_failpage"> \n\t\t\t\t\n\t\t\t\t<h1>Potree Encountered An Error </h1>\n\n\t\t\t\t<p>\n\t\t\t\tThis may happen if your browser or graphics card is not supported.\n\t\t\t\t<br>\n\t\t\t\tWe recommend to use \n\t\t\t\t<a href="https://www.google.com/chrome/browser" target="_blank" style="color:initial">Chrome</a>\n\t\t\t\tor \n\t\t\t\t<a href="https://www.mozilla.org/" target="_blank">Firefox</a>.\n\t\t\t\t</p>\n\n\t\t\t\t<p>\n\t\t\t\tPlease also visit <a href="http://webglreport.com/" target="_blank">webglreport.com</a> and \n\t\t\t\tcheck whether your system supports WebGL.\n\t\t\t\t</p>\n\t\t\t\t<p>\n\t\t\t\tIf you are already using one of the recommended browsers and WebGL is enabled, \n\t\t\t\tconsider filing an issue report at <a href="https://github.com/potree/potree/issues" target="_blank">github</a>,<br>\n\t\t\t\tincluding your operating system, graphics card, browser and browser version, as well as the \n\t\t\t\terror message below.<br>\n\t\t\t\tPlease do not report errors on unsupported browsers.\n\t\t\t\t</p>\n\n\t\t\t\t<pre id="potree_error_console" style="width: 100%; height: 100%"></pre>\n\t\t\t\t\n\t\t\t</div>')).find("#potree_error_console").html(e.stack),$(this.renderArea).append(t)),e}},{key:"setScene",value:function(e){var t,n=this;e!==this.scene&&(t=this.scene,this.scene=e,this.dispatchEvent({type:"scene_changed",oldScene:t,scene:e}),$(".annotation").detach(),this.scene.annotations.traverse(function(e){n.renderArea.appendChild(e.domElement[0])}),this.onAnnotationAdded||(this.onAnnotationAdded=function(e){e.annotation.traverse(function(e){$("#potree_annotation_container").append(e.domElement),e.scene=n.scene})}),t&&t.annotations.removeEventListener("annotation_added",this.onAnnotationAdded),this.scene.annotations.addEventListener("annotation_added",this.onAnnotationAdded))}},{key:"setControls",value:function(e){e!==this.controls&&(this.controls&&(this.controls.setEnable(!1),this.controls.moveSpeed=this.moveSpeed),(this.controls=e).moveSpeed&&this.setMoveSpeed(e.moveSpeed),this.controls.setEnable(!0))}},{key:"getControls",value:function(){return this.renderer.xr.isPresenting?this.vrControls:this.controls}},{key:"getMinNodeSize",value:function(){return this.minNodeSize}},{key:"setMinNodeSize",value:function(e){this.minNodeSize!==e&&(this.minNodeSize=e,this.dispatchEvent({type:"minnodesize_changed",viewer:this}))}},{key:"getBackground",value:function(){return this.background}},{key:"setBackground",value:function(e,t){"skybox"===e&&(t=t||Potree.resourcePath+"/textures/skybox/xingkong.jpg",this.skybox=ie.loadSkybox(t,this.skybox)),this.background=e,this.backgroundOpacity=1,this.dispatchEvent({type:"background_changed",viewer:this})}},{key:"setDescription",value:function(e){this.description=e,$("#potree_description").html(e)}},{key:"getDescription",value:function(){return this.description}},{key:"setShowBoundingBox",value:function(e){this.showBoundingBox!==e&&(this.showBoundingBox=e,this.dispatchEvent({type:"show_boundingbox_changed",viewer:this}))}},{key:"getShowBoundingBox",value:function(){return this.showBoundingBox}},{key:"setMoveSpeed",value:function(e){this.getMoveSpeed()!==e&&(this.mainViewport.setMoveSpeed(e),this.dispatchEvent({type:"move_speed_changed",viewer:this,speed:e}))}},{key:"getMoveSpeed",value:function(){return this.mainViewport.moveSpeed}},{key:"setWeightClassification",value:function(e){for(var t=0;t<this.scene.pointclouds.length;t++)this.scene.pointclouds[t].material.weightClassification=e,this.dispatchEvent({type:"attribute_weights_changed"+t,viewer:this})}},{key:"setFreeze",value:function(e){e=Boolean(e),this.freeze!==e&&(this.freeze=e,this.dispatchEvent({type:"freeze_changed",viewer:this}))}},{key:"getFreeze",value:function(){return this.freeze}},{key:"setElevationGradientRepeat",value:function(e){this.elevationGradientRepeat!==e&&(this.elevationGradientRepeat=e,this.dispatchEvent({type:"elevation_gradient_repeat_changed",viewer:this}))}},{key:"setPointBudget",value:function(e){Potree.pointBudget!==e&&(Potree.pointBudget=parseInt(e),this.dispatchEvent({type:"point_budget_changed",viewer:this}))}},{key:"getPointBudget",value:function(){return Potree.pointBudget}},{key:"setShowAnnotations",value:function(e){this.showAnnotations!==e&&(this.showAnnotations=e,this.dispatchEvent({type:"show_annotations_changed",viewer:this}))}},{key:"getShowAnnotations",value:function(){return this.showAnnotations}},{key:"setDEMCollisionsEnabled",value:function(e){this.useDEMCollisions!==e&&(this.useDEMCollisions=e,this.dispatchEvent({type:"use_demcollisions_changed",viewer:this}))}},{key:"getDEMCollisionsEnabled",value:function(){return this.useDEMCollisions}},{key:"setEDLEnabled",value:function(e){e=Boolean(e)&&Qf.SHADER_EDL.isSupported(),this.useEDL!==e&&(this.useEDL=e,this.dispatchEvent({type:"use_edl_changed",viewer:this}))}},{key:"getEDLEnabled",value:function(){return this.useEDL}},{key:"setEDLRadius",value:function(e){this.edlRadius!==e&&(this.edlRadius=e,this.dispatchEvent({type:"edl_radius_changed",viewer:this}))}},{key:"getEDLRadius",value:function(){return this.edlRadius}},{key:"setEDLStrength",value:function(e){this.edlStrength!==e&&(this.edlStrength=e,this.dispatchEvent({type:"edl_strength_changed",viewer:this}))}},{key:"getEDLStrength",value:function(){return this.edlStrength}},{key:"setEDLOpacity",value:function(e){this.edlOpacity!==e&&(this.edlOpacity=e,this.dispatchEvent({type:"edl_opacity_changed",viewer:this}))}},{key:"getEDLOpacity",value:function(){return this.edlOpacity}},{key:"setFOV",value:function(e){var t;this.fov!==e&&(t=this.fov,this.fov=e,this.scene.cameraP.fov=this.fov,this.scene.cameraP.updateProjectionMatrix(),this.dispatchEvent({type:"fov_changed",viewer:this,oldFov:t,fov:this.fov}))}},{key:"getFOV",value:function(){return this.fov}},{key:"disableAnnotations",value:function(){this.scene.annotations.traverse(function(e){e.domElement.css("pointer-events","none")})}},{key:"enableAnnotations",value:function(){this.scene.annotations.traverse(function(e){e.domElement.css("pointer-events","auto")})}},{key:"setClassifications",value:function(e){this.classifications=e,this.dispatchEvent({type:"classifications_changed",viewer:this})}},{key:"setClassificationVisibility",value:function(e,t){this.classifications[e]?this.classifications[e].visible!==t&&(this.classifications[e].visible=t,this.dispatchEvent({type:"classification_visibility_changed",viewer:this})):(this.classifications[e]={visible:t,name:"no name"},this.dispatchEvent({type:"classification_visibility_changed",viewer:this}))}},{key:"toggleAllClassificationsVisibility",value:function(){for(var e=0,t=0,n=0,i=Object.keys(this.classifications);n<i.length;n++){var r=i[n];this.classifications[r].visible&&e++,t++}for(var a=!0,o=(e===t&&(a=!1),!1),s=0,l=Object.keys(this.classifications);s<l.length;s++){var u=l[s];this.classifications[u].visible!==a&&(this.classifications[u].visible=a,o=!0)}o&&this.dispatchEvent({type:"classification_visibility_changed",viewer:this})}},{key:"setFilterReturnNumberRange",value:function(e,t){this.filterReturnNumberRange=[e,t],this.dispatchEvent({type:"filter_return_number_range_changed",viewer:this})}},{key:"setFilterNumberOfReturnsRange",value:function(e,t){this.filterNumberOfReturnsRange=[e,t],this.dispatchEvent({type:"filter_number_of_returns_range_changed",viewer:this})}},{key:"setFilterGPSTimeRange",value:function(e,t){this.filterGPSTimeRange=[e,t],this.dispatchEvent({type:"filter_gps_time_range_changed",viewer:this})}},{key:"setFilterPointSourceIDRange",value:function(e,t){this.filterPointSourceIDRange=[e,t],this.dispatchEvent({type:"filter_point_source_id_range_changed",viewer:this})}},{key:"setLengthUnit",value:function(e){switch(e){case"m":this.lengthUnit=pm.METER,this.lengthUnitDisplay=pm.METER;break;case"ft":this.lengthUnit=pm.FEET,this.lengthUnitDisplay=pm.FEET;break;case"in":this.lengthUnit=pm.INCH,this.lengthUnitDisplay=pm.INCH}this.dispatchEvent({type:"length_unit_changed",viewer:this,value:e})}},{key:"setLengthUnitAndDisplayUnit",value:function(e,t){switch(e){case"m":this.lengthUnit=pm.METER;break;case"ft":this.lengthUnit=pm.FEET;break;case"in":this.lengthUnit=pm.INCH}switch(t){case"m":this.lengthUnitDisplay=pm.METER;break;case"ft":this.lengthUnitDisplay=pm.FEET;break;case"in":this.lengthUnitDisplay=pm.INCH}this.dispatchEvent({type:"length_unit_changed",viewer:this,value:e})}},{key:"zoomTo",value:function(e,t){var n=this,i=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0,r=this.scene.view,a=this.scene.cameraP.clone(),e=(a.rotation.copy(this.scene.cameraP.rotation),a.rotation.order="ZXY",a.rotation.x=Math.PI/2+r.pitch,a.rotation.z=r.yaw,a.updateMatrix(),a.updateMatrixWorld(),a.zoomTo(e,t),t=(t=e.boundingSphere||(e.geometry&&e.geometry.boundingSphere?e.geometry.boundingSphere:e.boundingBox.getBoundingSphere(new gi))).clone().applyMatrix4(e.matrixWorld),r.position.clone()),a=a.position.clone(),o=r.getPivot(),t=t.center,s=(r.radius,a.distanceTo(t),TWEEN.Easing.Quartic.Out),l=e.clone(),e=new TWEEN.Tween(l).to(a,i),u=(e.easing(s),e.onUpdate(function(){r.position.copy(l)}),e.start(),o.clone()),a=new TWEEN.Tween(u).to(t,i);a.easing(s),a.onUpdate(function(){r.lookAt(u)}),a.onComplete(function(){r.lookAt(u),n.dispatchEvent({type:"focusing_finished",target:n})}),this.dispatchEvent({type:"focusing_started",target:this}),a.start()}},{key:"moveToGpsTimeVicinity",value:function(e){var e=Potree.Utils.findClosestGpsTime(e,viewer),t=e.node.pointcloud.deepestNodeAt(e.position).getBoundingBox(),t=t.min.distanceTo(t.max),t=this.scene.getActiveCamera().getWorldDirection(new Re).multiplyScalar(t),t=e.position.clone().sub(t);this.scene.view.position.copy(t),this.scene.view.lookAt(e.position)}},{key:"showAbout",value:function(){$(function(){$("#about-panel").dialog()})}},{key:"getGpsTimeExtent",value:function(){var e,t=[1/0,-1/0],n=q(this.scene.pointclouds);try{for(n.s();!(e=n.n()).done;){var i=e.value.pcoGeometry.pointAttributes.attributes.find(function(e){return"gps-time"===e.name});i&&(t[0]=Math.min(t[0],i.range[0]),t[1]=Math.max(t[1],i.range[1]))}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"fitToScreen",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,n=this.getBoundingBox(this.scene.pointclouds),i=new K;i.boundingBox=n,this.zoomTo(i,e,t),this.controls.stop()}},{key:"toggleNavigationCube",value:function(){this.navigationCube.visible=!this.navigationCube.visible}},{key:"setTopView",value:function(e){(e=e||this.scene.view).setCubeView("top"),this.fitToScreen()}},{key:"setBottomView",value:function(){this.scene.view.yaw=-Math.PI,this.scene.view.pitch=Math.PI/2,this.fitToScreen()}},{key:"setFrontView",value:function(e){(e=e||this.scene.view).yaw=0,e.pitch=0,this.fitToScreen()}},{key:"setBackView",value:function(e){(e=e||this.scene.view).yaw=Math.PI,e.pitch=0,this.fitToScreen()}},{key:"setLeftView",value:function(){this.scene.view.yaw=-Math.PI/2,this.scene.view.pitch=0,this.fitToScreen()}},{key:"setRightView",value:function(){this.scene.view.yaw=Math.PI/2,this.scene.view.pitch=0,this.fitToScreen()}},{key:"flipYZ",value:function(){this.isFlipYZ=!this.isFlipYZ,console.log("TODO")}},{key:"setCameraMode",value:function(e){this.scene.cameraMode=e;var t,n=q(this.scene.pointclouds);try{for(n.s();!(t=n.n()).done;)t.value.material.useOrthographicCamera=e==am.ORTHOGRAPHIC}catch(e){n.e(e)}finally{n.f()}}},{key:"getProjection",value:function(){var e=this.scene.pointclouds[0];return e?e.projection:null}},{key:"loadProject",value:(n=d(V().mark(function e(t,n){var i,r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch(t);case 2:if((i=e.sent).ok)return e.next=6,i.text();e.next=11;break;case 6:i=e.sent,"Potree"===(r=JSON5.parse(i)).type&&Potree.loadProject(viewer,r,n),e.next=12;break;case 11:console.warn("未能加载:"+t);case 12:case"end":return e.stop()}},e)})),function(e,t){return n.apply(this,arguments)})},{key:"saveProject",value:function(){return Potree.saveProject(this)}},{key:"loadSettingsFromURL",value:function(){var e,t,n;ie.getParameterByName("pointSize")&&this.setPointSize(parseFloat(ie.getParameterByName("pointSize"))),ie.getParameterByName("FOV")&&this.setFOV(parseFloat(ie.getParameterByName("FOV"))),ie.getParameterByName("opacity")&&this.setOpacity(parseFloat(ie.getParameterByName("opacity"))),ie.getParameterByName("edlEnabled")&&(e="true"===ie.getParameterByName("edlEnabled"),this.setEDLEnabled(e)),ie.getParameterByName("edlRadius")&&this.setEDLRadius(parseFloat(ie.getParameterByName("edlRadius"))),ie.getParameterByName("edlStrength")&&this.setEDLStrength(parseFloat(ie.getParameterByName("edlStrength"))),ie.getParameterByName("pointBudget")&&this.setPointBudget(parseFloat(ie.getParameterByName("pointBudget"))),ie.getParameterByName("showBoundingBox")&&("true"===ie.getParameterByName("showBoundingBox")?this.setShowBoundingBox(!0):this.setShowBoundingBox(!1)),ie.getParameterByName("material")&&(e=ie.getParameterByName("material"),this.setMaterial(e)),ie.getParameterByName("pointSizing")&&(e=ie.getParameterByName("pointSizing"),this.setPointSizing(e)),ie.getParameterByName("quality")&&(e=ie.getParameterByName("quality"),this.setQuality(e)),ie.getParameterByName("position")&&(e=ie.getParameterByName("position").replace("[","").replace("]","").split(";"),t=parseFloat(e[0]),n=parseFloat(e[1]),e=parseFloat(e[2]),this.scene.view.position.set(t,n,e)),ie.getParameterByName("target")&&(t=ie.getParameterByName("target").replace("[","").replace("]","").split(";"),n=parseFloat(t[0]),e=parseFloat(t[1]),t=parseFloat(t[2]),this.scene.view.lookAt(new Re(n,e,t))),ie.getParameterByName("background")&&(n=ie.getParameterByName("background"),this.setBackground(n))}},{key:"createControls",value:function(){this.fpControls=new yA(this,this.mainViewport),this.fpControls.enabled=!1,this.fpControls.addEventListener("start",this.disableAnnotations.bind(this)),this.fpControls.addEventListener("end",this.enableAnnotations.bind(this)),this.orbitControls=new $P(this),this.orbitControls.enabled=!1,this.orbitControls.addEventListener("start",this.disableAnnotations.bind(this)),this.orbitControls.addEventListener("end",this.enableAnnotations.bind(this))}},{key:"toggleSidebar",value:function(){var e=$("#potree_render_area");"0px"!==e.css("left")?e.css("left","0px"):e.css("left","300px")}},{key:"toggleMap",value:function(){this.mapView&&this.mapView.toggle()}},{key:"onGUILoaded",value:function(e){this.guiLoaded?e():this.guiLoadTasks.push(e)}},{key:"promiseGuiLoaded",value:function(){var t=this;return new Promise(function(e){t.guiLoaded?e():t.guiLoadTasks.push(e)})}},{key:"loadGUI",value:function(e){var i=this,r=(e&&this.onGUILoaded(e),$("#potree_sidebar_container"));return r.load(new URL(Potree.scriptPath+"/"+(Potree.settings.sidebar||"sidebar1.html")).href,function(){r.css("width","300px"),r.css("height","100%");var e=document.createElement("img"),t=(e.src=new URL(Potree.resourcePath+"/icons/menu_button.svg").href,e.onclick=i.toggleSidebar,e.classList.add("potree_menu_toggle"),document.createElement("img")),n=(t.src=new URL(Potree.resourcePath+"/icons/map_icon.png").href,t.style.display="none",t.onclick=function(e){i.toggleMap()},t.id="potree_map_toggle",$("#potree_quick_buttons").get(0));n.append(e),n.append(t),ek.createButton(i.renderer).then(function(e){var t;null==e?console.log("VR not supported or active."):(i.renderer.xr.enabled=!0,(t=e.element).style.position="",t.style.bottom="",t.style.left="",t.style.margin="4px",t.style.fontSize="100%",t.style.width="2.5em",t.style.height="2.5em",t.style.padding="0",t.style.textShadow="black 2px 2px 2px",t.style.display="block",n.append(t),e.onStart(function(){i.dispatchEvent({type:"vr_start"})}),e.onEnd(function(){i.dispatchEvent({type:"vr_end"})}))}),i18n.init({lng:"en",resGetPath:Potree.resourcePath+"/lang/__lng__/__ns__.json",preload:["en","fr","de","jp","se","es","zh"],getAsync:!0,debug:!1},function(e){$("body").i18n()}),$(function(){var e=new Cw(i),t=(e.init(),i.sidebar=e,$("<div>").load(new URL(Potree.scriptPath+"/profile.html").href,function(){$(document.body).append(t.children()),i.profileWindow=new Mm(i),i.profileWindowController=new Tm(i),$("#profile_window").draggable({handle:$("#profile_titlebar"),containment:$(document.body)}),$("#profile_window").resizable({containment:$(document.body),handles:"n, e, s, w"}),$(function(){i.guiLoaded=!0;var e,t=q(i.guiLoadTasks);try{for(t.s();!(e=t.n()).done;)(0,e.value)()}catch(e){t.e(e)}finally{t.f()}})}))})}),this.promiseGuiLoaded()}},{key:"setLanguage",value:function(e){i18n.setLng(e),$("body").i18n()}},{key:"setServer",value:function(e){this.server=e}},{key:"initDragAndDrop",value:function(){var c=this;function e(e){e.dataTransfer.dropEffect="copy",e.preventDefault()}var t=function(){var t=d(V().mark(function e(t){var n,i,r,a,o,s,l,u;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:console.log(t),t.preventDefault(),n=q(t.dataTransfer.items),e.prev=3,n.s();case 5:if((a=n.n()).done)e.next=49;else{if(i=a.value,console.log(i),"file"!==i.kind)return e.abrupt("continue",47);e.next=10}break;case 10:if(r=i.getAsFile(),a=r.name.toLowerCase().endsWith(".json"),o=r.name.toLowerCase().endsWith(".gpkg"),a)return e.prev=14,e.next=17,r.text();e.next=28;break;case 17:l=e.sent,"Potree"===(l=JSON.parse(l)).type&&Potree.loadProject(viewer,l),e.next=26;break;case 22:e.prev=22,e.t0=e.catch(14),console.error("failed to parse the dropped file as JSON"),console.error(e.t0);case 26:e.next=47;break;case 28:o?0<viewer.scene.pointclouds.length?e.next=36:(console.error("At least one point cloud is needed that specifies the coordinate reference system before loading vector data."),e.next=47):e.next=47;break;case 36:return proj4.defs("WGS84","+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),proj4.defs("pointcloud",c.getProjection()),s=proj4("WGS84","pointcloud"),e.next=41,r.arrayBuffer();case 41:return l=e.sent,u={transform:s,source:r.name},e.next=45,Potree.GeoPackageLoader.loadBuffer(l,u);case 45:u=e.sent,viewer.scene.addGeopackage(u);case 47:e.next=5;break;case 49:e.next=54;break;case 51:e.prev=51,e.t1=e.catch(3),n.e(e.t1);case 54:return e.prev=54,n.f(),e.finish(54);case 57:case"end":return e.stop()}},e,null,[[3,51,54,57],[14,22]])}));return function(e){return t.apply(this,arguments)}}();$("body")[0].addEventListener("dragenter",e),$("body")[0].addEventListener("dragover",e),$("body")[0].addEventListener("drop",t)}},{key:"updateAnnotations",value:function(){for(var s=this,l=(this.visibleAnnotations||(this.visibleAnnotations=new Set),this.scene.annotations.updateBounds(),this.scene.cameraP.updateMatrixWorld(),this.scene.cameraO.updateMatrixWorld(),this.renderer.getSize(new Le)),u=this,c=[],e=(this.scene.annotations.traverse(function(e){if(e===s.scene.annotations)return!0;if(!e.visible)return!1;e.scene=s.scene;var t=e.domElement,n=e.position.clone(),i=(n.add(e.offset),n=n||e.boundingBox.getCenter(new Re),u.scene.cameraP.position.distanceTo(n)),r=e.boundingBox.getBoundingSphere(new gi).radius,a=new Re,o=0,n=(a.copy(n).project(s.scene.getActiveCamera()),a.x=l.x*(a.x+1)/2,a.y=l.y*(1-(a.y+1)/2),o=u.scene.cameraMode==am.PERSPECTIVE?(n=Math.PI*u.scene.cameraP.fov/180,n=Math.tan(n/2),r*(.5*l.y/(n*i))):ie.projectedRadiusOrtho(r,u.scene.cameraO.projectionMatrix,l.x,l.y),t.css("left",a.x+"px"),t.css("top",a.y+"px"),1e7-i*(1e7/s.scene.cameraP.far));if(e.descriptionVisible&&(n+=1e7),t.css("z-index",parseInt(n)),0<e.children.length)return r=o>e.collapseThreshold||e.boundingBox.containsPoint(s.scene.getActiveCamera().position),(e.expand=r)||-1<=a.z&&a.z<=1&&c.push(e),r;-1<=a.z&&a.z<=1&&c.push(e)}),new Set(this.visibleAnnotations)),t=0,n=c;t<n.length;t++){var i=n[t];i.display=!0,e.delete(i)}this.visibleAnnotations=c;var r,a=q(e);try{for(a.s();!(r=a.n()).done;)r.value.display=!1}catch(e){a.e(e)}finally{a.f()}}},{key:"updateMaterialDefaults",value:function(e){var t=e.material,e=e.getAttribute("intensity");null!=e&&t.intensityRange[0]===1/0&&(t.intensityRange=J(e.range))}},{key:"update",value:function(e,t){Potree.measureTimings&&performance.mark("update-start"),this.dispatchEvent({type:"update_start",delta:e,timestamp:t}),this.updateScreenSize();var n,i=this.scene,r=i.getActiveCamera(),a=this.scene.pointclouds.filter(function(e){return e.visible}),o=(Potree.pointLoadLimit=2*Potree.pointBudget,r.position.clone().add(r.getWorldDirection(new Re).multiplyScalar(1e3))),s=(this.scene.directionalLight.position.copy(r.position),this.scene.directionalLight.lookAt(o),q(a));try{for(s.s();!(n=s.n()).done;){var l=n.value,u=(l.showBoundingBox=this.showBoundingBox,l.generateDEM=this.generateDEM,l.minimumNodePixelSize=this.minNodeSize,l.material);u.uniforms.uFilterReturnNumberRange.value=this.filterReturnNumberRange,u.uniforms.uFilterNumberOfReturnsRange.value=this.filterNumberOfReturnsRange,u.uniforms.uFilterGPSTimeClipRange.value=this.filterGPSTimeRange,u.uniforms.uFilterPointSourceIDClipRange.value=this.filterPointSourceIDRange,u.classification=this.classifications,u.recomputeClassification(),this.updateMaterialDefaults(l)}}catch(e){s.e(e)}finally{s.f()}if(this.showBoundingBox){var c,o=this.scene.scene.getObjectByName("potree_bounding_box_root"),h=(o||((g=new K).name="potree_bounding_box_root",this.scene.scene.add(g),o=g),[]),d=q(this.scene.pointclouds);try{for(d.s();!(c=d.n()).done;){var p,f=q(c.value.visibleNodes.filter(function(e){return void 0!==e.boundingBoxNode}));try{for(f.s();!(p=f.n()).done;){var m=p.value.boundingBoxNode;h.push(m)}}catch(e){f.e(e)}finally{f.f()}}}catch(e){d.e(e)}finally{d.f()}o.children=h}this.freeze,this.scene.cameraP.fov=this.fov;var v,g=this.getControls(),A=(g===this.deviceControls?(this.controls.setScene(i),this.controls.update(e),this.scene.cameraP.position.copy(i.view.position),this.scene.cameraO.position.copy(i.view.position)):null!==g&&(g.setScene(i),g.update(e),this.viewports.forEach(function(e){e.active&&e.view.applyToCamera(e.camera)})),this.cameraChanged(),[]),y=(A.push.apply(A,J(this.scene.volumes.filter(function(e){return e.clip&&e instanceof fg}))),q(this.scene.profiles));try{for(y.s();!(v=y.n()).done;){var w=v.value;A.push.apply(A,J(w.boxes))}}catch(e){y.e(e)}finally{y.f()}var b,o=A.filter(function(e){return 0!==e.matrixWorld.determinant()}).map(function(e){e.updateMatrixWorld();var t=e.matrixWorld.clone().invert();return{box:e,inverse:t}}),x=o.find(function(e){return e.box.clipTask==om.SHOW_INSIDE_Big&&!e.box.highlight}),E=o.filter(function(e){return e.box.clipTask==om.SHOW_INSIDE&&!e.box.highlight}),C=o.filter(function(e){return e.box.clipTask==om.SHOW_OUTSIDE&&!e.box.highlight}),B=o.filter(function(e){return e.box.highlight}),_=q(a);try{for(_.s();!(b=_.n()).done;){var M=b.value,T=[],S=[],I=[];M.dataset_id==Potree.settings.originDatasetId&&(T=E,S=C,I=B),M.material.setClipBoxes(x,T,S,I)}}catch(e){_.e(e)}finally{_.f()}var D,P=q(a);try{for(P.s();!(D=P.n()).done;)D.value.material.elevationGradientRepeat=this.elevationGradientRepeat}catch(e){P.e(e)}finally{P.f()}this.navigationCube.update(r.rotation),this.updateAnnotations(),this.mapView&&(this.mapView.update(e),this.mapView.sceneProjection)&&$("#potree_map_toggle").css("display","block"),TWEEN.update(t),Tg.update(e),this.transformationTool.update(),"pano"!=Potree.settings.editType&&"merge"!=Potree.settings.editType&&(this.modules.ParticleEditor.update(e),this.mapViewer.update(e)),this.dispatchEvent({type:"update",delta:e,timestamp:t}),Potree.measureTimings&&(performance.mark("update-end"),performance.measure("update","update-start","update-end")),this.reticule.updateVisible()}},{key:"updateViewPointcloud",value:function(e,t,n){var i,t=Potree.updatePointClouds(this.scene.pointclouds,e,t),r=(performance.now(),e.position),a=1/0,o=q(this.scene.orientedImages);try{for(o.s();!(i=o.n()).done;){var s,l=q(i.value.images);try{for(l.s();!(s=l.n()).done;)var u=s.value.mesh.position.distanceTo(r),a=Math.min(a,u)}catch(e){l.e(e)}finally{l.f()}}}catch(e){o.e(e)}finally{o.f()}performance.now();var c=e.near,h=e.far;e.limitFar||t.lowestSpacing===1/0||(t=-this.getBoundingBox().applyMatrix4(e.matrixWorldInverse).min.z,t=Math.max(1.5*t,1e4),t=Math.max(t,c+1e4),e.far=t),h!=e.far&&e.updateProjectionMatrix()}},{key:"getPRenderer",value:function(){return this.useHQ?(this.hqRenderer||(this.hqRenderer=new Lm(this)),this.hqRenderer.useEDL=this.useEDL,this.hqRenderer):(this.edlRenderer||(this.edlRenderer=new aA(this)),this.edlRenderer)}},{key:"renderVR",value:function(){var e=this.renderer,t=(e.setClearColor(5570560,0),e.clear(),e.xr),n=new ma,i=t.getCamera(n);if(2===i.cameras.length){var t=this.vrControls.getCamera.bind(this.vrControls),r=("skybox"===viewer.background?e.setClearColor(16711680,1):"gradient"===viewer.background?e.setClearColor(1122867,1):"black"===viewer.background?e.setClearColor(0,1):"white"===viewer.background?e.setClearColor(16777215,1):e.setClearColor(0,0),e.clear(),"skybox"===this.background?(n=this.skybox,r=t(),n.camera.rotation.copy(r.rotation),n.camera.fov=r.fov,n.camera.aspect=r.aspect,(r=n.parent).rotation.x=Math.PI/2,r.updateMatrix(),r.updateMatrixWorld(),n.camera.updateMatrix(),n.camera.updateMatrixWorld(),n.camera.updateProjectionMatrix(),e.render(n.scene,n.camera)):this.background,this.renderer.xr.getSession().updateRenderState({depthNear:.1,depthFar:1e4}),null),a=null;(r=t()).position.z-=.8*r.scale.x,r.parent=null,r.near=viewer.scene.getActiveCamera().near,r.far=viewer.scene.getActiveCamera().far,r.updateMatrix(),r.updateMatrixWorld(),this.scene.scene.updateMatrix(),this.scene.scene.updateMatrixWorld(),this.scene.scene.matrixAutoUpdate=!1;var o,a=r.matrixWorld.clone().clone().invert(),s=(this.scene.scene.matrix.copy(a),this.scene.scene.matrixWorld.copy(a),r.matrix.identity(),r.matrixWorld.identity(),r.matrixWorldInverse.identity(),e.render(this.scene.scene,r),this.scene.scene.matrixWorld.identity(),q(this.scene.pointclouds));try{for(s.s();!(o=s.n()).done;){var l=o.value,u=i.cameras[0].viewport;l.material.useEDL=!1,l.screenHeight=u.height,l.screenWidth=u.width}}catch(e){s.e(e)}finally{s.f()}var c,h=q(i.cameras);try{for(h.s();!(c=h.n()).done;){var d=c.value,p=d.viewport;e.setViewport(p.x,p.y,p.width,p.height);var f,m=d.projectionMatrix.clone().invert(),v=new Kn(0,1,-1,1).applyMatrix4(m).y/Math.PI*180,g=(d.fov=v,q(this.scene.pointclouds));try{for(g.s();!(f=g.n()).done;)f.value.material.useEDL=!1}catch(e){g.e(e)}finally{g.f()}var A=a.clone().invert(),y=(A.multiply(d.matrixWorld),A.clone().invert());this.pRenderer.render(this.scene.scenePointCloud,d,null,{viewOverride:y})}}catch(e){h.e(e)}finally{h.f()}n=t();n.parent=null,e.render(this.sceneVR,n),e.resetState()}}},{key:"clear",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},t=e.background||this.background,n=(null==e.backgroundOpacity?this:e).backgroundOpacity,i=this.renderer;t instanceof Me?i.setClearColor(t,n):"skybox"===t||"gradient"===t?i.setClearColor(0,0):"black"===t?i.setClearColor(0,1):"white"===t?i.setClearColor(16777215,1):i.setClearColor(t,n),e.target||i.clear()}},{key:"renderDefault",value:function(){var s,e,l,u,c=this,h=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.visible&&!this.paused&&(s=this.getPRenderer(),e=h.viewports||this.viewports,l=h.target?new Le(h.target.width,h.target.height):this.renderer.getSize(new Le),u=1<e.filter(function(e){return e.active}).length||h.resize,e.forEach(function(e){var t,n,i,r,a,o=$.extend({},h);o.viewport=e,o.camera=o.camera||e.camera,o.extraEnableLayers=e.extraEnableLayers,o.cameraLayers=e.cameraLayers,e.active&&(i=Math.ceil(l.x*e.left),r=Math.ceil(l.y*e.bottom),a=h.target?(t=Math.ceil(l.x*e.width),Math.ceil(l.y*e.height)):(t=e.resolution.x,e.resolution.y),0!=t)&&0!=a&&(n=e.width<1||e.height<1,h.target?(h.target.viewport.set(i,r,t,a),n&&h.target.scissor.set(i,r,t,a),h.target.scissorTest=n,c.renderer.setRenderTarget(h.target)):(c.renderer.setViewport(i,r,t,a),n&&c.renderer.setScissor(i,r,t,a),c.renderer.setScissorTest(n)),u&&c.emitResizeMsg({viewport:e}),viewer.dispatchEvent({type:"render.begin",viewer:viewer,viewport:e,params:o}),e.beforeRender&&e.beforeRender(),e.render?e.render($.extend({},o,{renderer:c.renderer,clear:c.clear.bind(c),resize:null,force:!e.noPointcloud})):(c.clear(o),s.clearTargets(o),c.renderBG(e),Potree.settings.notAdditiveBlending&&(o.renderBeforeCloud=!0,c.renderOverlay1(o))),e.noPointcloud||(c.updateViewPointcloud(o.camera,e.resolution,!0),s.render(o)),Potree.settings.notAdditiveBlending?(o.renderBeforeCloud=!1,c.renderOverlay1(o),c.renderOverlay2(o)):c.renderOverlay(o),e.afterRender&&e.afterRender(),c.dispatchEvent({type:"render.end",viewer:c,viewport:e}))}),this.renderer.setRenderTarget(null))}},{key:"renderBG",value:function(e){var t,n,i,r,a,o=e.background||viewer.background;0!=(null==e.backgroundOpacity?viewer:e).backgroundOpacity&&("skybox"===o?(t="OrthographicCamera"==e.camera.type?viewer.skybox.cameraOrtho:viewer.skybox.camera,a=.02*Potree.config.skyboxBgWidth/2,e.skyboxFixPos?t.position.set(0,0,0):(i=(r=(new Re).subVectors(e.camera.position,viewer.bound.center)).length(),n=Cg.easeOutQuart(Math.min(i,100),0,a,100),r.multiplyScalar(n/i),t.position.copy(r)),t.rotation.copy(e.camera.rotation),t.aspect=e.camera.aspect,"OrthographicCamera"==e.camera.type?(t.left=e.camera.left,t.right=e.camera.right,t.top=e.camera.top,t.bottom=e.camera.bottom,n=Potree.config.skyboxBgWidth/2-a,i=Math.max(t.right/n,t.top/n,e.skyboxMinZoom||0),r=Math.max(20,i),a=Be.clamp(e.camera.zoom-1,1,80),t.zoom=Cg.easeOutCubic(a-1,i,r-i,79)):(t.fov=e.camera.fov,t.zoom=1),e.skyboxRenderFun&&e.skyboxRenderFun(),t.updateProjectionMatrix(),t.updateMatrixWorld(),viewer.renderer.render(viewer.skybox.scene,t)):"gradient"===o?(viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg),viewer.renderer.render(viewer.scene.scene,viewer.scene.cameraBG)):"overlayColor"===o&&(viewer.scene.bg2.material.color.copy(params.backgroundColor),viewer.scene.bg2.material.opacity=params.backgroundOpacity,viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg2),viewer.renderer.render(viewer.scene.scene,viewer.scene.cameraBG)))}},{key:"renderOverlay",value:function(e){this.renderOverlay1(e),this.renderOverlay2(e)}},{key:"renderOverlay1",value:function(t){var e,n=this,i=t.camera||this.scene.getActiveCamera();this.reticule.updateAtViewports(t.viewport),this.renderer.setRenderTarget(t.target||null),(e=t.cameraLayers||("mapViewport"==t.viewport.name?["bothMapAndScene"]:["sceneObjects","model","bothMapAndScene"])).length&&(this.setCameraLayers(i,e,t.extraEnableLayers),"renderBeforeCloud"in t&&this.scene.scene.traverse(function(e){e.material&&n.updateVisible(e,"renderOpa",!(t.renderBeforeCloud&&(e.material.opacity<1||!e.material.depthTest)||!t.renderBeforeCloud&&1==e.material.opacity&&e.material.depthTest))}),this.renderer.render(this.scene.scene,i),"renderBeforeCloud"in t)&&this.scene.scene.traverse(function(e){e.material&&n.updateVisible(e,"renderOpa",!0)}),this.dispatchEvent({type:"render.pass.scene",viewer:viewer})}},{key:"renderOverlay2",value:function(e){var t=e.camera||this.scene.getActiveCamera();this.renderer.clearDepth(),e.magnifier||(this.dispatchEvent({type:"render.pass.perspective_overlay",camera:t,screenshot:e.screenshot}),e.screenshot)||"mapViewport"==e.viewport.name||(this.setCameraLayers(t,["magnifier"]),this.renderer.render(this.scene.scene,t)),"mapViewport"!=e.viewport.name&&(this.setCameraLayers(t,["volume","transformationTool"]),this.renderer.render(this.clippingTool.sceneVolume,t),this.renderer.render(this.transformationTool.scene,t))}},{key:"setLimitFar",value:function(e){viewer.mainViewport.camera.limitFar=!!e,e&&(viewer.mainViewport.camera.near=.02,viewer.mainViewport.camera.far="showPanos"==Potree.settings.displayMode?viewer.farWhenShowPano:Potree.settings.cameraFar,viewer.mainViewport.camera.updateProjectionMatrix())}},{key:"setCameraLayers",value:function(t,e){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:[];t.layers.disableAll(),e.concat(n).forEach(function(e){e=Potree.config.renderLayers[e];null==e?console.error("setCameraLayer没找到layer!"):t.layers.enable(e)})}},{key:"setObjectLayers",value:function(e,t){var n=Potree.config.renderLayers[t];null==n?console.error("setCameraLayer没找到layer!"):e.traverse(function(e){e.layers.set(n)})}},{key:"updateVisible",value:function(e,t,n){var i,r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:0,a=4<arguments.length?arguments[4]:void 0;e.unvisibleReasons||(e.unvisibleReasons=[]),e.visibleReasons||(e.visibleReasons=[]);n?(-1<(i=e.unvisibleReasons.findIndex(function(e){return e.reason==t}))&&(a="cancel",e.unvisibleReasons.splice(i,1)),"add"!=a||e.visibleReasons.some(function(e){return e.reason==t})||e.visibleReasons.push({reason:t,level:r})):(-1<(i=e.visibleReasons.findIndex(function(e){return e.reason==t}))&&(a="cancel",e.visibleReasons.splice(i,1)),"cancel"==a||e.unvisibleReasons.some(function(e){return e.reason==t})||e.unvisibleReasons.push({reason:t,level:r})),e.unvisibleReasons=e.unvisibleReasons.sort(function(e,t){return t.level-e.level}),e.visibleReasons=e.visibleReasons.sort(function(e,t){return t.level-e.level}),n=e.visibleReasons[0]?e.visibleReasons[0].level:-1,n=(e.unvisibleReasons[0]?e.unvisibleReasons[0].level:-1)<=n,e.visible!=n&&(e.visible=n,e.dispatchEvent({type:"isVisible",visible:n,reason:t}))}},{key:"getObjVisiByReason",value:function(e,t){return!!e.visible||!e.unvisibleReasons||!e.unvisibleReasons.some(function(e){return e.reason==t})}},{key:"setClipState",value:function(t){var n=this;t=!!t,this.clipUnabled!=!t&&(this.scene.volumes.filter(function(e){return e instanceof Potree.BoxVolume}).map(function(e){e.clip=t,n.updateVisible(e,"setClipState",t)}),this.clipUnabled=!t)}},{key:"render",value:function(){var e,t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};Potree.measureTimings&&performance.mark("render-start"),this.renderer.xr.isPresenting?this.renderVR():this.outlinePass.selectedObjects.length&&0<this.outlinePass.edgeStrength&&!t.screenshot?(e=this.inputHandler.interactiveScenes.concat(this.scene.scene).concat(viewer.scene.scenePointCloud),this.composer.render(e,null,this.viewports,this.renderDefault.bind(this))):this.renderDefault(t),Potree.measureTimings&&(performance.mark("render-end"),performance.measure("render","render-start","render-end"))}},{key:"startScreenshot",value:function(){var n,i,t,r,e,a,o,s,l=this,u=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},c=1<arguments.length&&void 0!==arguments[1]?arguments[1]:800,h=2<arguments.length&&void 0!==arguments[2]?arguments[2]:400,d=3<arguments.length?arguments[3]:void 0,p=u.deferred||$.Deferred(),f=u.map?this.mapViewer:this,m="measure"==u.type||u.map;return this.images360.flying?(u.deferred=p,this.images360.addEventListener("cameraMoveDone",function e(){l.startScreenshot(u,c,h,d),l.images360.removeEventListener("cameraMoveDone",e)})):(n=Date.now(),i=(console.log("startScreenshot: "+n),function(){l.viewports.forEach(function(e){e.view.applyToCamera(e.camera),l.dispatchEvent({type:"camera_changed",camera:e.camera,viewport:e,changeInfo:{positionChanged:!0,changed:!0}})})}),t=function(){m&&(viewer.mapViewer.needRender=!0);function e(){o.viewports.forEach(function(t){var e=a.find(function(e){return e.name==t.name});e.left=t.left,e.width=t.width,e.view.copy(t.view),e.view.applyToCamera(e.camera)}),viewer.updateScreenSize({forceUpdateSize:!0}),i(),p.resolve(t),console.log("screenshot done: "+n)}var t=f.makeScreenshot(new Le(c,h),null,d).dataUrl;Potree.settings.isOfficial||ag.downloadFile(t,"screenshot.jpg");"measure"==u.type&&(l.scene.measurements.forEach(function(e){return l.updateVisible(e,"screenshot",!0)}),u.measurement.setSelected(!1,"screenshot")),l.images360.panos.forEach(function(e){viewer.updateVisible(e,"screenshot",!0)}),viewer.updateVisible(l.reticule,"screenshot",!0),m&&(viewer.updateVisible(l.mapViewer.cursor,"screenshot",!0),o.attachedToViewer!=l.mapViewer.attachedToViewer&&"measure"==u.type&&l.mapViewer.attachToMainViewer(!1),r.camera.zoom=o.mapZoom,r.camera.updateProjectionMatrix()),"showPanos"==Potree.settings.displayMode?viewer.images360.flyToPano({pano:o.pano,duration:0,callback:function(){e()}}):e()},e=this.mainViewport,a=[e],o={viewports:[e.clone()],pano:"showPanos"==Potree.settings.displayMode?viewer.images360.currentPano:null},m&&(r=this.mapViewer.viewports[0],a.push(r),o.viewports.push(r.clone()),o.attachedToViewer=this.mapViewer.attachedToViewer,o.mapZoom=r.camera.zoom,viewer.updateVisible(this.mapViewer.cursor,"screenshot",!1)),u.hideMarkers&&this.images360.panos.forEach(function(e){viewer.updateVisible(e,"screenshot",!1)}),viewer.updateVisible(this.reticule,"screenshot",!1),"measure"==u.type?(this.scene.measurements.forEach(function(e){return l.updateVisible(e,"screenshot",e==u.measurement)}),u.measurement.setSelected(!0,"screenshot"),Potree.settings.floorplanEnable&&this.mapViewer.attachToMainViewer(!0,"measure",.5),viewer.updateScreenSize({forceUpdateSize:!0,width:c,height:h}),s=function(){m=l.mapViewer.attachedToViewer,i();var e="showPointCloud"==Potree.settings.displayMode?500:0;m?setTimeout(function(){l.mapViewer.waitLoadDone(t.bind(l))}.bind(l),e):setTimeout(t.bind(l),e)},this.focusOnObject(u.measurement,"measure",0,{basePanoSize:1024}).promise.done(function(){l.updateDatasetAt(!0),l.modules.SiteModel.updateEntityAt(!0),!l.mapViewer.mapLayer.maps.some(function(e){return e.name.includes("floorplan")&&e.objectGroup.visible})&&l.mapViewer.attachedToViewer?(l.mapViewer.attachToMainViewer(!1),viewer.updateScreenSize({forceUpdateSize:!0,width:c,height:h}),l.focusOnObject(u.measurement,"measure",0,{basePanoSize:1024}).promise.done(function(){s()})):s()})):t()),p.promise()}},{key:"focusOnObject",value:function(t,n,i){var r=this,s=3<arguments.length&&void 0!==arguments[3]?arguments[3]:{},a=s.deferred||$.Deferred(),o=new Re,l=new Re,u=(i=null==i?1e3:i,viewer.scene.getActiveCamera()),e=u.position.clone();if("OrthographicCamera"==u.type)return console.error("focusOnObject暂不支持OrthographicCamera。因情况复杂,请视情况使用splitScreenTool.viewportFitBound");function c(e,t,n,i){r=(s.dontChangeCamDir?u:((o=u.clone()).position.copy(i),o.lookAt(n),o.updateMatrix(),o.updateMatrixWorld(),o)).matrixWorldInverse;var r,a=new Y,o=e?(e.forEach(function(e){e=e.clone().applyMatrix4(r);a.expandByPoint(e)}),1.3):(a=t.applyMatrix4(r),.9),t=((e=a.getSize(new Re)).x*=o,e.y*=o,e.x=Math.max(1e-4,e.x),e.y=Math.max(1e-4,e.y),e.x/e.y);return x=u.aspect>t?e.y/2/Math.tan(Be.degToRad(u.fov/2))+e.z/2:(o=lf.getHFOVForCamera(u,!0),e.x/2/Math.tan(o/2)+e.z/2),x=Math.max(.1,x),t=s.dontChangeCamDir?viewer.mainViewport.view.direction.negate():(new Re).subVectors(i,n).normalize(),s.dontLookUp&&t.z<0&&t.negate(),l.copy(n).add(t.multiplyScalar(x)),l}var h;if(this.images360.flying)this.images360.addEventListener("cameraMoveDone",function e(){r.focusOnObject(t,n,i,$.extend(s,{deferred:a})),r.images360.removeEventListener("cameraMoveDone",e)});else{if("measure"==n){if(o.copy(t.getCenter()),2<t.points.length?(y=(t.facePlane||(y=new $i).setFromCoplanarPoints.apply(y,J(t.points.slice(0,3)))).normal.clone(),b=this.scene.view.direction.angleTo(y),(d=Be.degToRad(60))<b&&b<Math.PI-d&&(b<Math.PI/2&&y.negate(),d=(new Re).subVectors(u.position,o).normalize(),b=(new Re).addVectors(d,y),e.copy(o.clone().add(b)))):2==t.points.length?(d=(new Re).subVectors(t.points[0],t.points[1]).normalize(),((y=this.scene.view.direction.angleTo(d))<(b=.25*Math.PI)||y>Math.PI-b)&&(y>Math.PI/2&&d.negate(),b=(new Re).subVectors(u.position,o).normalize(),y=(new Re).addVectors(d,b).normalize(),d=(new Re).addVectors(b,y),e.copy(o.clone().add(d)))):console.error("measure 没有facePlane points点数还不为2?"),l=c(t.points,null,o,e),this.mapViewer&&(b=new Le(4,4),h=new Y,t.points.forEach(function(e){h.expandByPoint(e)}),(y=h.getSize(new Re).clone().multiplyScalar(2)).x=Math.max(b.x,y.x),y.y=Math.max(b.y,y.y),this.mapViewer.moveTo(o.clone(),y,i)),"showPointCloud"==Potree.settings.displayMode){var d=.3,p=r.inputHandler.ifBlockedByIntersect(l,null,!0,o);if(p){for(var f,m=0,v=0,g=0;g<t.points.length;g++){var A=t.points[g];if(r.inputHandler.ifBlockedByIntersect(A,.3,!0,l,4)){if(.5<=++m/t.points.length){f=!1;break}}else if(.5<++v/t.points.length){f=!0;break}}var y,w,b=function(){var e=(new Re).subVectors(l,o).normalize().multiplyScalar(p.distance);l.copy(o).add(e),console.log("checkIntersect newPos",l.clone())};(f=null==f?.5<v/t.points.length:f)||(p.distance<d?(console.log("检测到intersect 反向",p.distance),y=l.clone(),w=(new Re).subVectors(l,o),l.copy(o).sub(w),(w=r.inputHandler.ifBlockedByIntersect(l,null,!0,o))&&(w.distance<p.distance&&l.copy(y),b())):b())}}else if("showPanos"==Potree.settings.displayMode)return t.measureType.includes("MulDistance")&&(E=t.points[Math.round(t.points.length/2)],C=(new Re).subVectors(E,l).normalize()),(w=viewer.images360.fitPanoTowardPoint({target:o,dir:C,point:l,bestDistance:0,checkIntersect:!0}))&&viewer.images360.flyToPano({pano:w,target:E||o,duration:i,deferred:a,dontMoveMap:!0,basePanoSize:s.basePanoSize}),viewer.images360.currentPano==w?(C=viewer.images360.currentPano.position.distanceTo(o),E=l.distanceTo(o),console.log("dis1 / dis2",C/E,"dis1-dis2",C-E),{mag:1.5<C/E&&10<C-E?"tooFar":"posNoChange",promise:a.promise()}):{promise:a.promise()}}else if("tag"==n||"point"==n){o.copy(t.position);var x,E,C=s.distance||3;if(!s.dontMoveMap&&this.mapViewer&&this.mapViewer.moveTo(o.clone(),null,i),"showPointCloud"==Potree.settings.displayMode)s.dontChangePos?l.copy(e):(x=C,E=(s.direction?s.direction.clone():this.mainViewport.view.direction).negate(),s.dontLookUp&&E.z<0&&(E.z*=-1),l.copy(o).add(E.multiplyScalar(x)));else if("showPanos"==Potree.settings.displayMode)return(E=viewer.images360.fitPanoTowardPoint({point:o,bestDistance:C}))&&viewer.images360.flyToPano({pano:E,target:o,duration:i,deferred:a,dontMoveMap:!0,basePanoSize:s.basePanoSize}),{promise:a.promise()}}else if(t.boundingBox&&"boundingBox"==n){o=t.boundingBox.getCenter(new Re),l=c(t.points,t.boundingBox,o,e);if("showPanos"==Potree.settings.displayMode)return(C=viewer.images360.fitPanoTowardPoint({point:l,bestDistance:0}))&&viewer.images360.flyToPano({pano:C,target:o,duration:i,deferred:a,dontMoveMap:!0,basePanoSize:s.basePanoSize}),C||console.error("no pano"),{promise:a.promise()}}viewer.scene.view.setView({position:l,target:o,duration:i,callback:function(){a.resolve()}}),this.dispatchEvent({type:"focusOnObject",CamTarget:o,position:l})}return{promise:a.promise()}}},{key:"flyToDataset",value:function(){function e(){var e=[cy.scoreFunctions.distanceSquared({position:o})];if((e=ag.sortByScore(r.panos,[],e))&&e.length)return e[0].item}var t,n,i=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},r=i instanceof K?i:i.pointcloud||this.scene.pointclouds.find(function(e){return e.dataset_id==i.id}),a=null==i.duration?1e3:i.duration,o=r.bound.getCenter(new Re);if("showPanos"==Potree.settings.displayMode){var s=e();if(!s)return!1;if(s==this.images360.currentPano)return"posNoChange";this.images360.flyToPano({pano:s})}else{if(s=o,r.panosBound&&(s=r.panosBound.center.clone(),n=e())&&(t=n.position,s.z=t.z),this.modules.Clip.editing)s.z=o.z,this.modules.Clip.bus.dispatchEvent({type:"flyToPos",position:s});else{if(ee.closeTo(s,this.images360.position))return"posNoChange";viewer.scene.view.setView({position:s,target:t,duration:a})}i.dontMoveMap||viewer.mapViewer.fitToPointcloud(r,a)}return!0}},{key:"resolveTimings",value:function(e){if(Potree.measureTimings&&(this.toggle||(this.toggle=e),1e3<e-this.toggle)){var t,n=performance.getEntriesByType("measure"),i=new Set,r=q(n);try{for(r.s();!(t=r.n()).done;){var a=t.value;i.add(a.name)}}catch(e){r.e(e)}finally{r.f()}var o,s=new Map,l=q(i);try{for(l.s();!(o=l.n()).done;){var u=o.value;s.set(u,{measures:[],sum:0,n:0,min:1/0,max:-1/0})}}catch(e){l.e(e)}finally{l.f()}var c,h=q(n);try{for(h.s();!(c=h.n()).done;){var d=c.value,p=s.get(d.name);p.measures.push(d),p.sum+=d.duration,p.n++,p.min=Math.min(p.min,d.duration),p.max=Math.max(p.max,d.duration)}}catch(e){h.e(e)}finally{h.f()}var f,m=q(Potree.resolveQueries(this.renderer.getContext()));try{for(m.s();!(f=m.n()).done;){var v=N(f.value,2),g=v[0],A=v[1],y={measures:A.map(function(e){return{duration:e}}),sum:A.reduce(function(e,t){return e+t},0),n:A.length,min:Math.min.apply(Math,J(A)),max:Math.max.apply(Math,J(A))},w="[tq] ".concat(g);s.set(w,y),i.add(w)}}catch(e){m.e(e)}finally{m.f()}var b,x=q(s);try{for(x.s();!(b=x.n()).done;){var E=N(b.value,2),C=(E[0],E[1]);C.mean=C.sum/C.n,C.measures.sort(function(e,t){return e.duration-t.duration}),1===C.n?C.median=C.measures[0].duration:1<C.n&&(C.median=C.measures[parseInt(C.n/2)].duration)}}catch(e){x.e(e)}finally{x.f()}var B,_=Array.from(i).reduce(function(e,t){return Math.max(e,t.length)},0)+5,M=" ".concat("NAME".padEnd(_)," |")+" ".concat("MIN".padStart(10)," |")+" ".concat("MEDIAN".padStart(10)," |")+" ".concat("MAX".padStart(10)," |")+" ".concat("SAMPLES".padStart(6)," \n"),T=(M+=" ".concat("-".repeat(M.length),"\n"),q(i=Array.from(i).sort()));try{for(T.s();!(B=T.n()).done;){var S=B.value,I=s.get(S),D=I.min.toFixed(3),P=I.median.toFixed(3),k=I.max.toFixed(3),L=I.n;M+=" ".concat(S.padEnd(_)," |")+" ".concat(D.padStart(10)," |")+" ".concat(P.padStart(10)," |")+" ".concat(k.padStart(10)," |")+" ".concat(L.toString().padStart(6),"\n")}}catch(e){T.e(e)}finally{T.f()}M+="\n",console.log(M),performance.clearMarks(),performance.clearMeasures(),this.toggle=e}}},{key:"loop",value:function(e){var t=this;this.stats&&this.stats.begin(),Potree.measureTimings&&performance.mark("loop-start"),this.update(this.clock.getDelta(),e),this.magnifier.render(),this.render(),this.objs.children.forEach(function(e){"3dTiles"==e.name&&e.runtime.update(t.clock.getDelta(),t.renderer,t.mainViewport.camera)}),Potree.measureTimings&&(performance.mark("loop-end"),performance.measure("loop","loop-start","loop-end")),this.resolveTimings(e),Potree.framenumber++,this.stats&&this.stats.end()}},{key:"postError",value:function(e){e=this.postMessage(e,1<arguments.length&&void 0!==arguments[1]?arguments[1]:{});return e.element.addClass("potree_message_error"),e}},{key:"postMessage",value:function(e){var t=this,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},i=new kv(e);return i.element.css("display","none"),i.elClose.click(function(){i.element.slideToggle(100);var e=t.messages.indexOf(i);0<=e&&t.messages.splice(e,1)}),this.elMessages.prepend(i.element),i.element.slideToggle(100),this.messages.push(i),void 0!==n.duration&&setTimeout(function(){i.element.animate({opacity:0},500),i.element.slideToggle(200)},n.duration),i}},{key:"getBoundingBox",value:function(e){return this.bound||this.updateModelBound(),this.bound.boundingBox.clone()}},{key:"updateModelBound",value:function(e){var t=this;this.bound=ie.computePointcloudsBound(this.scene.pointclouds.filter(function(e){return e.visible||e.unvisibleReasons&&1==e.unvisibleReasons.length&&"displayMode"==e.unvisibleReasons[0].reason})),Potree.settings.boundAddObjs&&(this.objs.children.forEach(function(e){t.bound.boundingBox.union(e.boundingBox.clone().applyMatrix4(e.matrixWorld))}),this.bound.boundingBox.getSize(this.bound.boundSize),this.bound.boundingBox.getCenter(this.bound.center)),viewer.farWhenShowPano=10*this.bound.boundSize.length(),viewer.scene.pointclouds.forEach(function(e){e.material.heightMin=t.bound.boundingBox.min.z,e.material.heightMax=t.bound.boundingBox.max.z}),this.dispatchEvent({type:"updateModelBound"})}},{key:"waitForLoad",value:function(e,t){this.waitQueue.push({object:e,isLoadedCallback:t}),1===this.waitQueue.length&&this.dispatchEvent({type:"loading",show:!0})}},{key:"ifAllLoaded",value:function(){0<this.waitQueue.length&&(this.waitQueue=this.waitQueue.filter(function(e){return!e.isLoadedCallback()})),0===this.waitQueue.length&&this.dispatchEvent({type:"loading",show:!1})}},{key:"cancelLoad",value:function(t){this.waitQueue=this.waitQueue.filter(function(e){return e.object!=t}),this.ifAllLoaded()}},{key:"setView",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};null!=e.pano?this.images360.flyToPano(e):this.scene.view.setView($.extend({},e,{callback:function(){e.displayMode&&(Potree.settings.displayMode=e.displayMode),e.callback&&e.callback()}}))}},{key:"setPointStandardMat",value:function(e,t,n){var i=this;if(console.log("setPointStandardMat",e),e){if(this.pointStatesBefore)return console.error("已设置过pointStatesBefore!");this.pointStatesBefore={opacity:new Map,size:new Map,density:Potree.settings.pointDensity,useEDL:this.getEDLEnabled(),shape:viewer.scene.pointclouds[0].material.shape},viewer.scene.pointclouds.forEach(function(e){i.pointStatesBefore.opacity.set(e,e.temp.pointOpacity),i.pointStatesBefore.colorType=e.material.activeAttributeName,n&&i.pointStatesBefore.size.set(e,e.temp.pointSize)}),t&&(Potree.settings.pointDensity=t),n&&(Potree.settings.sizeFitToLevel=!0),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName="rgba",e.material.shape=Potree.PointShape.SQUARE,n&&e.changePointSize(Potree.config.material.realPointSize,!0),e.changePointOpacity(1)}),viewer.setEDLEnabled(!1)}else{if(!this.pointStatesBefore)return console.error("未设置过pointStatesBefore!");Potree.settings.sizeFitToLevel=!1,t&&(Potree.settings.pointDensity=this.pointStatesBefore.pointDensity),viewer.scene.pointclouds.forEach(function(e){e.material.activeAttributeName=i.pointStatesBefore.colorType,e.changePointOpacity(i.pointStatesBefore.opacity.get(e)),e.material.shape=i.pointStatesBefore.shape;var t=i.pointStatesBefore.size.get(e);t&&e.changePointSize(t)}),viewer.setEDLEnabled(this.pointStatesBefore.useEDL),this.pointStatesBefore=null}}},{key:"transformObject",value:function(e){var t=viewer.inputHandler.selection[0];e?(t&&t!=e&&this.transformObject(null),e.boundingBox||(e.boundingBox=new Y),viewer.inputHandler.selection.includes(e)||viewer.inputHandler.toggleSelection(e)):t&&viewer.inputHandler.toggleSelection(t)}},{key:"pointInWhichPointcloud",value:function(n){var e=ag.sortByScore(this.scene.pointclouds,[],[function(e){var t=e.pcoGeometry.tightBoundingBox.getSize(new Re),e=e.bound.getCenter(new Re);return t.length()/2/n.distanceTo(e)}]);return 1<(e&&e[0]).score?e[0].item:null}},{key:"loadModel",value:(r=d(V().mark(function e(a,o,t,n){var s,l,i,r,u,c,h,d=this;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:s=new Y,l=a.tilesUrl?"3dTiles":a.objurl?"obj":"glb",i=function(n,e,t){n.opacity=1,n.updateMatrixWorld();var i,r,e=Math.round(e/1024/1024*100)/100;null!=a.id&&(n.dataset_id=a.id),console.log(t.split("/").pop(),"加载完毕, 模型数据量:"+e+"M"),"3dTiles"==l?(e=(t=n.runtime.getTileset().tileset).root.boundingVolume.box,new Re(e[0],e[1],e[2]),new Re,r=new Re(e[3],e[4],e[5]),i=new Re(e[6],e[7],e[8]),e=new Re(e[9],e[10],e[11]),r=r.length(),i=i.length(),e=e.length(),s.min.set(-r,-i,-e),s.max.set(r,i,e),console.log("3d tiles json",t),t.root.refine="ADD",t.refine="ADD"):(d.setObjectLayers(n,"model"),n.traverse(function(e){e instanceof Z&&(e.renderOrder=Potree.config.renderOrders.model,Potree.settings.boundAddObjs&&(e.geometry.computeBoundingBox(),s.union(e.geometry.boundingBox.clone().applyMatrix4(e.matrixWorld))),e.material instanceof ic)&&(e.material.roughness=.6,e.material.metalness=.3)})),n.name=null!=a.name?a.name:"obj",d.objs.add(n),n.boundingBox=s,a.transform&&((r=function(e){var t=a.transform[e];t&&(t instanceof Array?n[e].fromArray(t):n[e].copy(t))})("position"),r("rotation"),r("scale")),a.moveWithPointcloud&&(n.updateMatrix(),n.matrixAutoUpdate=!1,n.matrix.premultiply(viewer.scene.pointclouds[0].transformMatrix),n.matrixWorldNeedsUpdate=!0),o&&o(n)},r=function(e){e.lengthComputable&&(e=e.loaded/e.total*100,t)&&t(e)},"obj"!=l?e.next=8:(nk.mtlLoader.load(a.mtlurl,function(e){e.preload(),nk.objLoader.setMaterials(e).load(a.objurl,function(e,t){i(e,t,a.objurl)})},r,n),e.next=24);break;case 8:"glb"!=l?e.next=13:(nk.glbLoader.unlitMat=!0,nk.glbLoader.load(a.glburl,function(e,t){i(e.scene,t,a.glburl)},r,n),e.next=24);break;case 13:if("3dTiles"==l)return e.next=16,HP.load({url:a.tilesUrl,gltfLoader:nk.glbLoader,options:{maximumScreenSpaceError:48,maxDepth:100,showAllTile:!0}});e.next=24;break;case 16:u=e.sent,console.log(u),u.model.runtime=u.runtime,i(u.model,null,a.tilesUrl),c=!1,(h=u.runtime.getTileset()).addEventListener("endTileLoading",function(e){0!=e.loadingCount||c||(c=!0,console.log("loaded!!!!!!!!!!!!!"))}),h.addEventListener("tileLoaded",function(e){var t=u.model.opacity;E1.changeOpacity(e.tileContent,t)});case 24:case"end":return e.stop()}},e)})),function(e,t,n,i){return r.apply(this,arguments)})},{key:"removeObj",value:function(e){this.objs.remove(e),Potree.settings.boundAddObjs&&this.updateModelBound()}},{key:"addFire",value:function(){var e;"t-CwfhfqJ"==Potree.settings.number&&(e=Potree.Utils.datasetPosTransform({pointcloud:viewer.scene.pointclouds[0],position:new Re(4.4318,-.580291847759,-.78),fromDataset:!0}),viewer.modules.ParticleEditor.addParticle({type:"fire",positions:[e],radius:.42,height:10}),viewer.modules.ParticleEditor.addParticle({type:"smoke",positions:[(new Re).addVectors(e,new Re(0,0,.3))],positionStyle:"sphere",positionRadius:.3,sizeTween:[[0,.3,.9,1],[.05,.1,1,.8]],opacityBase:.2,opacityTween:[[0,.3,.7,.95,1],[0,.2,1,.1,0]],velocityBase:new Re(0,0,1),velocitySpread:new Re(.2,.2,-.3),accelerationBase:.2,accelerationSpread:.7,radius:0,particleDeathAge:3}),viewer.modules.ParticleEditor.addParticle({type:"explode",name:"fire splash",position:(new Re).addVectors(e,new Re(0,0,.3)),size:.1,sizeRange:.3,sizeTween:[[0,.05,.3,.45],[0,.02,.1,.05]],opacityTween:[[0,.05,.3,.45],[1,1,.5,0]],speed:1,speedRange:4,radius:.1,acceleration:.3,accelerationRange:1,particleSpaceTime:0,strength:4}))}},{key:"addVideo11",value:function(){var n,e,i,r,t=this;"SS-fckI7CClKC"==Potree.settings.number&&((n=$('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0]).setAttribute("crossOrigin","Anonymous"),e=new Ll(n),(i=this.videoPlane=new Z(new Ru(1,1,1,1),new L({color:"#ffffff",transparent:!0,depthTest:!1,opacity:.7,side:2,map:e}))).visible=!1,i.geometry.computeBoundingBox(),i.boundingBox=i.geometry.boundingBox.clone(),i.boundingBox.max.z=1,i.boundingBox.max.y=-.4,i.boundingBox.max.x=1,n.addEventListener("loadeddata",function(e){n.play(),console.log("video loadeddata")}),i.scale.set(1.08,1.92,1),this.addEventListener("global_mousedown",function e(){n.play(),t.removeEventListener("global_mousedown",e)}),r={9:{rotation:[-1.432978005954197,1.2296264545169697,3.0098547630197667],position:[6.532456676287381,-9.806373049095631,-.024205281024294284]},19:{rotation:[1.627167773445286,-1.172425902600188,.04682299709711613],position:[-9.558613948539932,-1.042301166581578,.08159683876743667]}},this.images360.addEventListener("flyToPano",function(e){var t;"showPanos"==Potree.settings.displayMode&&((t=r[e.toPano.pano.id])&&setTimeout(function(){i.visible=!0,i.position.fromArray(t.position),i.rotation.fromArray(t.rotation),n.src=Potree.resourcePath+"/video/".concat(Potree.settings.number,"/").concat(e.toPano.pano.id,".mp4"),n.play(),n.currentTime=0,Potree.settings.zoom.enabled=!1,Tg.start(Mg(i.material,"opacity",1),.4*e.toPano.duration,function(){},0,Cg.easeInOutQuad)},.6*e.toPano.duration),Tg.start(Mg(i.material,"opacity",0),.4*e.toPano.duration,function(){t||(i.visible=!1,n.pause(),Potree.settings.zoom.enabled=!0)},0,Cg.easeInOutQuad))}),this.images360.addEventListener("endChangeMode",function(e){"showPanos"==e.mode?(e=r[t.images360.currentPano.id])&&(i.visible=!0,i.position.fromArray(e.position),i.rotation.fromArray(e.rotation),i.material.opacity=0,n.src=Potree.resourcePath+"/video/".concat(Potree.settings.number,"/").concat(t.images360.currentPano.id,".mp4"),n.play(),n.currentTime=0,Potree.settings.zoom.enabled=!1,Tg.start(Mg(i.material,"opacity",1,function(e){console.log("fadeIn",e)}),300,function(){},0,Cg.easeInOutQuad)):(i.visible=!1,Potree.settings.zoom.enabled=!0)}),this.scene.scene.add(i))}},{key:"addVideo",value:function(){var a,e,o=this;"SS-t-P6zBR73Gke"==Potree.settings.number&&(a=new Ru(1,1,1,1),e=this.videoInfo=[{id:"40-2",url:"https://laser-oss.4dkankan.com/testdata/SS-t-P6zBR73Gke/temp/poi/2022/05/10/0aabafee-36b8-455d-9c11-0780bf694786.mp4",rotation:[-1.494468618954883,-1.4987317433158989,-3.061254983446741],position:[19.801820617361624,2.884673619844108,-.03362305858221648],scale:[3.5741423153151763,2.8738725275578703,1]},{id:40,url:"https://laser-oss.4dkankan.com/testdata/SS-t-P6zBR73Gke/temp/poi/2022/05/09/7896d6ef-a2d6-4fd7-949c-768782a5b484.mp4",rotation:[-1.5487684197910518,.021848470169552752,-3.1387534893955236],position:[17.277316608096,2.0840432922115846,-.0931149415437065],scale:[2.0821757723834047,.6129478480765236,1],visibles:[40]}],e.forEach(function(e){var t=e;function n(){i.play(),o.removeEventListener("global_mousedown",n)}var i=$('<video controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>')[0],e=(i.setAttribute("crossOrigin","Anonymous"),i.src=t.url||Potree.resourcePath+"/video/".concat(Potree.settings.number,"/").concat(t.id,".mp4"),new Ll(i)),r=o.videoPlane=new Z(a,new L({color:"#ffffff",transparent:!0,depthTest:!1,opacity:0,map:e}));r.position.fromArray(t.position),r.rotation.fromArray(t.rotation),t.scale&&r.scale.fromArray(t.scale),o.scene.scene.add(r),(t.plane=r).boundingBox=new Y(new Re(0,-.5,0),new Re(1,-.4,.2)),i.addEventListener("loadeddata",function(e){i.play(),t.visibles||(r.material.opacity=1),t.scale||r.scale.set(i.videoWidth/1e3,i.videoHeight/1e3,1),console.log("video loadeddata",t.id)}),t.visibles&&o.images360.addEventListener("flyToPano",function(e){t.visibles.includes(e.toPano.pano.id)?setTimeout(function(){r.visible=!0,i.currentTime=0,i.play(),i.paused&&o.addEventListener("global_mousedown",function e(){r.visible&&i.play(),o.removeEventListener("global_mousedown",e)}),Potree.settings.zoom.enabled=!1,Tg.start(Mg(r.material,"opacity",1),.4*e.toPano.duration,function(){},0,Cg.easeInOutQuad)},.6*e.toPano.duration):Tg.start(Mg(r.material,"opacity",0),.4*e.toPano.duration,function(){t||(r.visible=!1,i.pause(),Potree.settings.zoom.enabled=!0)},0,Cg.easeInOutQuad)}),o.addEventListener("global_mousedown",n),Potree.settings.isTest&&r.addEventListener("select",function(e){console.log(e)})}))}},{key:"addSprite",value:function(e){var t=new(null!=e.text?TextSprite:(t=texLoader.load(src),e.map=t,Sprite))(e);return t}}]),v}(),Vu=function(){y(n,Yf);var t=C(n);function n(e){te(this,n),(a=t.call(this)).viewer=e,a.renderer=e.renderer,a.scene=null,a.sceneControls=new Ps,a.rotationSpeed=5,a.fadeFactor=20,a.yawDelta=0,a.pitchDelta=0,a.panDelta=new Le(0,0),a.radiusDelta=0,a.doubleClockZoomEnabled=!0,a.tweens=[];var a,o=null;return a.addEventListener("touchstart",function(e){o=e}),a.addEventListener("touchend",function(e){o=e}),a.addEventListener("touchmove",function(e){var t,n,i,r;2===e.touches.length&&2===o.touches.length?(t=e,r=(i=o).touches[0].pageX-i.touches[1].pageX,i=i.touches[0].pageY-i.touches[1].pageY,r=Math.sqrt(r*r+i*i),i=t.touches[0].pageX-t.touches[1].pageX,t=t.touches[0].pageY-t.touches[1].pageY,i=Math.sqrt(i*i+t*t),t=a.scene.view.radius+a.radiusDelta,a.radiusDelta=t/(i/r)-t,a.stopTweens()):3===e.touches.length&&3===o.touches.length&&(r=((i=o).touches[0].pageX+i.touches[1].pageX+i.touches[2].pageX)/3,t=(i.touches[0].pageY+i.touches[1].pageY+i.touches[2].pageY)/3,i=(e.touches[0].pageX+e.touches[1].pageX+e.touches[2].pageX)/3,n=(e.touches[0].pageY+e.touches[1].pageY+e.touches[2].pageY)/3,i=(i-r)/a.renderer.domElement.clientWidth,r=(n-t)/a.renderer.domElement.clientHeight,a.panDelta.x+=i,a.panDelta.y+=r,a.stopTweens()),o=e}),a.addEventListener("drag",function(e){var t,n;null===e.drag.object&&(void 0===e.drag.startHandled&&(e.drag.startHandled=!0,a.dispatchEvent({type:"start"})),t=e.drag.lastDrag.x/a.renderer.domElement.clientWidth,n=e.drag.lastDrag.y/a.renderer.domElement.clientHeight,e.drag.mouse===um.LEFT?(a.yawDelta+=t*a.rotationSpeed,a.pitchDelta+=n*a.rotationSpeed,a.stopTweens()):e.drag.mouse===um.RIGHT&&(a.panDelta.x+=t,a.panDelta.y+=n,a.stopTweens()))}),a.addEventListener("drop",function(e){a.dispatchEvent({type:"end"})}),a.addEventListener("mousewheel",function(e){var t=a.scene.view.radius+a.radiusDelta;a.radiusDelta+=-e.delta*t*.1,a.stopTweens()}),a.addEventListener("dblclick",function(e){a.doubleClockZoomEnabled&&a.zoomToLocation(e.mouse)}),a}return A(n,[{key:"setScene",value:function(e){this.scene=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.radiusDelta=0,this.panDelta.set(0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i,r,a,o,s,l,u=this,c=this.scene.getActiveCamera(),h=ie.getMousePointCloudIntersection(e,c,this.viewer,this.scene.pointclouds,{pickClipped:!0});null!==h&&(t=0,n=this.renderer.domElement,e=ie.mouseToRay(e,c,n.clientWidth,n.clientHeight),n=(c=h.pointcloud.nodesOnRay(h.pointcloud.visibleNodes,e))[c.length-1].getBoundingSphere(new gi).radius,t=Math.min(this.scene.view.radius,n),t=Math.max(.2,t),e=this.scene.view.direction.multiplyScalar(-1),c=(new Re).addVectors(h.location,e.multiplyScalar(t)),n=TWEEN.Easing.Quartic.Out,i={x:0},(r=new TWEEN.Tween(i).to({x:1},600)).easing(n),this.tweens.push(r),a=this.scene.view.position.clone(),o=c.clone(),s=this.scene.view.radius,l=c.distanceTo(h.location),r.onUpdate(function(){var e=i.x;u.scene.view.position.x=(1-e)*a.x+e*o.x,u.scene.view.position.y=(1-e)*a.y+e*o.y,u.scene.view.position.z=(1-e)*a.z+e*o.z,u.scene.view.radius=(1-e)*s+e*l,u.viewer.setMoveSpeed(u.scene.view.radius)}),r.onComplete(function(){u.tweens=u.tweens.filter(function(e){return e!==r})}),r.start())}},{key:"stopTweens",value:function(){this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]}},{key:"update",value:function(e){var t=this.scene.view,n=Math.min(1,this.fadeFactor*e),i=t.yaw,r=t.pitch,a=t.getPivot(),n=(i-=n*this.yawDelta,r-=n*this.pitchDelta,t.yaw=i,t.pitch=r,this.scene.view.direction.multiplyScalar(-t.radius)),i=(new Re).addVectors(a,n);t.position.copy(i);r=Math.min(1,this.fadeFactor*e)*t.radius*3,a=-this.panDelta.x*r,n=this.panDelta.y*r,t.pan(a,n),i=Math.min(1,this.fadeFactor*e),r=t.radius+i*this.radiusDelta,a=t.direction.multiplyScalar(-r),n=(new Re).addVectors(t.getPivot(),a),t.radius=r,t.position.copy(n),i=t.radius,this.viewer.setMoveSpeed(i),a=Math.min(1,this.fadeFactor*e),r=Math.max(0,1-this.fadeFactor*e);this.yawDelta*=r,this.pitchDelta*=r,this.panDelta.multiplyScalar(r),this.radiusDelta-=a*this.radiusDelta}}]),n}(),Yd=function(){y(n,Yf);var t=C(n);function n(e){var r;te(this,n),(r=t.call(this)).viewer=e,r.renderer=e.renderer,r.scene=null,r.sceneControls=new Ps,r.rotationSpeed=200,r.moveSpeed=10,r.lockElevation=!1,r.keys={FORWARD:["W".charCodeAt(0),38],BACKWARD:["S".charCodeAt(0),40],LEFT:["A".charCodeAt(0),37],RIGHT:["D".charCodeAt(0),39],UP:["R".charCodeAt(0),33],DOWN:["F".charCodeAt(0),34]},r.fadeFactor=50,r.yawDelta=0,r.pitchDelta=0,r.translationDelta=new Re(0,0,0),r.translationWorldDelta=new Re(0,0,0),r.tweens=[];return r.addEventListener("drag",function(e){var t,n,i;null===e.drag.object&&(void 0===e.drag.startHandled&&(e.drag.startHandled=!0,r.dispatchEvent({type:"start"})),t=r.viewer.getMoveSpeed(),n=e.drag.lastDrag.x/r.renderer.domElement.clientWidth,i=e.drag.lastDrag.y/r.renderer.domElement.clientHeight,e.drag.mouse===um.LEFT?(r.yawDelta+=n*r.rotationSpeed,r.pitchDelta+=i*r.rotationSpeed):e.drag.mouse===um.RIGHT&&(r.translationDelta.x-=n*t*100,r.translationDelta.z+=i*t*100))}),r.addEventListener("drop",function(e){r.dispatchEvent({type:"end"})}),r.addEventListener("mousewheel",function(e){var t=r.viewer.getMoveSpeed();e.delta<0?t*=.9:0<e.delta&&(t/=.9),t=Math.max(t,.1),r.viewer.setMoveSpeed(t)}),r.addEventListener("dblclick",function(e){r.zoomToLocation(e.mouse)}),r}return A(n,[{key:"setScene",value:function(e){this.scene=e}},{key:"stop",value:function(){this.yawDelta=0,this.pitchDelta=0,this.translationDelta.set(0,0,0)}},{key:"zoomToLocation",value:function(e){var t,n,i,r,a,o,s,l,u=this,c=this.scene.getActiveCamera(),h=ie.getMousePointCloudIntersection(e,c,this.viewer,this.scene.pointclouds);null!==h&&(t=0,n=this.renderer.domElement,e=ie.mouseToRay(e,c,n.clientWidth,n.clientHeight),n=(c=h.pointcloud.nodesOnRay(h.pointcloud.visibleNodes,e))[c.length-1].getBoundingSphere(new gi).radius,t=Math.min(this.scene.view.radius,n),t=Math.max(.2,t),e=this.scene.view.direction.multiplyScalar(-1),c=(new Re).addVectors(h.location,e.multiplyScalar(t)),n=TWEEN.Easing.Quartic.Out,i={x:0},(r=new TWEEN.Tween(i).to({x:1},600)).easing(n),this.tweens.push(r),a=this.scene.view.position.clone(),o=c.clone(),s=this.scene.view.radius,l=c.distanceTo(h.location),r.onUpdate(function(){var e=i.x;u.scene.view.position.x=(1-e)*a.x+e*o.x,u.scene.view.position.y=(1-e)*a.y+e*o.y,u.scene.view.position.z=(1-e)*a.z+e*o.z,u.scene.view.radius=(1-e)*s+e*l,u.viewer.setMoveSpeed(u.scene.view.radius/2.5)}),r.onComplete(function(){u.tweens=u.tweens.filter(function(e){return e!==r})}),r.start())}},{key:"update",value:function(e){var t=this.scene.view,n=([this.yawDelta,this.pitchDelta,this.translationDelta.length(),this.translationWorldDelta.length()].some(function(e){return.001<Math.abs(e)})&&0<this.tweens.length&&(this.tweens.forEach(function(e){return e.stop()}),this.tweens=[]),this.viewer.inputHandler),i=this.keys.FORWARD.some(function(e){return n.pressedKeys[e]}),r=this.keys.BACKWARD.some(function(e){return n.pressedKeys[e]}),a=this.keys.LEFT.some(function(e){return n.pressedKeys[e]}),o=this.keys.RIGHT.some(function(e){return n.pressedKeys[e]}),s=this.keys.UP.some(function(e){return n.pressedKeys[e]}),l=this.keys.DOWN.some(function(e){return n.pressedKeys[e]}),u=(this.lockElevation?((u=t.direction).z=0,u.normalize(),i&&r?this.translationWorldDelta.set(0,0,0):i?this.translationWorldDelta.copy(u.multiplyScalar(this.viewer.getMoveSpeed())):r&&this.translationWorldDelta.copy(u.multiplyScalar(-this.viewer.getMoveSpeed()))):i&&r?this.translationDelta.y=0:i?this.translationDelta.y=this.viewer.getMoveSpeed():r&&(this.translationDelta.y=-this.viewer.getMoveSpeed()),a&&o?this.translationDelta.x=0:a?this.translationDelta.x=-this.viewer.getMoveSpeed():o&&(this.translationDelta.x=this.viewer.getMoveSpeed()),s&&l?this.translationWorldDelta.z=0:s?this.translationWorldDelta.z=this.viewer.getMoveSpeed():l&&(this.translationWorldDelta.z=-this.viewer.getMoveSpeed()),t.yaw),i=t.pitch,r=(u-=this.yawDelta*e,i-=this.pitchDelta*e,t.yaw=u,t.pitch=i,t.translate(this.translationDelta.x*e,this.translationDelta.y*e,this.translationDelta.z*e),t.translateWorld(this.translationWorldDelta.x*e,this.translationWorldDelta.y*e,this.translationWorldDelta.z*e),t.radius=3*this.viewer.getMoveSpeed(),Math.max(0,1-this.fadeFactor*e));this.yawDelta*=r,this.pitchDelta*=r,this.translationDelta.multiplyScalar(r),this.translationWorldDelta.multiplyScalar(r)}}]),n}(),ql=(mh.prototype.zoomTo=function(e){(e.geometry||e.boundingBox)&&this.updateProjectionMatrix()},ma.prototype.zoomTo=function(e,t){var n,i;(e.geometry||e.boundingSphere||e.boundingBox)&&(e.geometry&&null===e.geometry.boundingSphere&&e.geometry.computeBoundingSphere(),e.updateMatrixWorld(),t=t||1,e=(n=(n=e.boundingSphere||(e.geometry&&e.geometry.boundingSphere?e.geometry.boundingSphere:e.boundingBox.getBoundingSphere(new gi))).clone().applyMatrix4(e.matrixWorld)).radius,i=this.fov*Math.PI/180,this.aspect<1&&(i*=this.aspect),e=Math.abs(e/Math.sin(i/2))*t,i=this.getWorldDirection(new Re).multiplyScalar(-e),this.position.copy(n.center.clone().add(i)))},Bi.prototype.distanceToPlaneWithNegative=function(e){var t=e.normal.dot(this.direction);return 0===t?0===e.distanceToPoint(this.origin)?0:null:-(this.origin.dot(e.normal)+e.constant)/t},new Tu),nd={major:1,minor:8,suffix:".0"},od=new ip,Fu=(console.log("Potree "+nd.major+"."+nd.minor+nd.suffix),W.scriptPath="",document.currentScript&&document.currentScript.src?W.scriptPath=new URL(document.currentScript.src+"/..").href:("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("potree.js",document.baseURI).href,W.scriptPath=new URL(("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("potree.js",document.baseURI).href)+"/..").href),"/"===W.scriptPath.slice(-1)&&(W.scriptPath=W.scriptPath.slice(0,-1)),W.scriptPath+"/resources");function rk(e,t,n,i){return ak.apply(this,arguments)}function ak(){return(ak=d(V().mark(function e(t,n,i,r){var a,o,s,l;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=n||{},Potree.fileServer?(Potree.fileServer.get(t,{params:n}).then(function(e){(e=e.data?e.data:e).data&&(e=e.data),i&&i(e)}).catch(r),e.next=22):e.next=5;break;case 5:if(e.prev=5,0<Object.keys(n).length)for(o in t+="?",a=0,n)0<a&&(t+="&"),t=(t=t+o+"=")+n[o],a++;return e.next=9,fetch(t);case 9:return s=e.sent,e.next=12,s.text();case 12:return s=e.sent,(l=JSON.parse(s)).data&&(l=l.data),i&&i(l),e.abrupt("return",l);case 19:e.prev=19,e.t0=e.catch(5),r&&r(e.t0);case 22:case"end":return e.stop()}},e,null,[[5,19]])}))).apply(this,arguments)}function ok(){return(ok=d(V().mark(function e(t,n,i){var r;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=n||Potree.settings.number,r=(Potree.fileServer?"/laser/dataset/":"".concat(Potree.settings.urls.prefix,"/laser/dataset/")).concat(n,"/getDataSet"),e.abrupt("return",rk(r,null,t,i));case 3:case"end":return e.stop()}},e)}))).apply(this,arguments)}function sk(){return(sk=d(V().mark(function e(t,n){var i,r,a=this;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(Potree.settings.floorplanEnable||n||!Potree.fileServer){e.next=2;break}return e.abrupt("return");case 2:i="all"==t?viewer.scene.pointclouds.map(function(e){return e.dataset_id}):[t],r=function(t,e,n){e==Potree.settings.floorplanType[t]&&((e=viewer.mapViewer.mapLayer.maps.find(function(e){return e.name=="floorplan_"+t}))&&viewer.mapViewer.mapLayer.removeMap(e),n=viewer.mapViewer.mapLayer.addMapEntity(n.data||n,t),e&&(n.visibleReasons=e.visibleReasons,n.unvisibleReasons=e.unvisibleReasons),0)},i.forEach(function(e){var t=Potree.settings.floorplanType[e],n="";if(Potree.fileServer||(n=Potree.settings.urls.prefix),t)return n="".concat(n,"/laser/tiledMap/").concat(Potree.settings.number,"/tiledMap/").concat(t,"/").concat(e),Potree.settings.floorplanRequests[e]=!0,rk(n,null,r.bind(a,e,t))});case 6:case"end":return e.stop()}},e)}))).apply(this,arguments)}function lk(){return(lk=d(V().mark(function e(t,n){var i;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return i=(Potree.fileServer?"/laser/filter/":"".concat(Potree.settings.urls.prefix,"/laser/filter/")).concat(Potree.settings.number,"/query"),e.abrupt("return",rk(i,{datasetId:t},n));case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}function uk(){return(uk=d(V().mark(function e(t){var n;return V().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return Potree.fileServer||(n="".concat(Potree.scriptPath,"/data/panoEdit/vision_edit.txt")),e.abrupt("return",rk(n,null,t));case 2:case"end":return e.stop()}},e)}))).apply(this,arguments)}(XP=jQuery).fn.extend({selectgroup:function(){for(var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{},o=XP(this),t=o.prop("id"),s="".concat(t),t=void 0!==e.title?e.title:"",l=[],e=(o.find("option").each(function(e,t){var n=XP(t).prop("id"),i=XP(t).html(),t=XP(t).prop("value"),i=XP('\n\t\t\t\t\t<span style="flex-grow: 1; display: inherit">\n\t\t\t\t\t<label for="'.concat(n,'" class="ui-button" style="width: 100%; padding: .4em .1em">').concat(i,'</label>\n\t\t\t\t\t<input type="radio" name="').concat(s,'" id="').concat(n,'" value="').concat(t,'" style="display: none"/>\n\t\t\t\t\t</span>\n\t\t\t\t')),r=i.find("label"),a=i.find("input");a.change(function(){o.find("label").removeClass("ui-state-active"),o.find("label").addClass("ui-state-default"),a.is(":checked")&&r.addClass("ui-state-active")}),l.push(i)}),XP('\n\t\t\t\t<fieldset style="border: none; margin: 0px; padding: 0px">\n\t\t\t\t\t<legend>'.concat(t,'</legend>\n\t\t\t\t\t<span style="display: flex">\n\n\t\t\t\t\t</span>\n\t\t\t\t</fieldset>\n\t\t\t'))),n=e.find("span"),i=0,r=l;i<r.length;i++)n.append(r[i]);n.find("label").each(function(e,t){XP(t).css("margin","0px"),XP(t).css("border-radius","0px"),XP(t).css("border","1px solid black"),XP(t).css("border-left","none")}),n.find("label:first").each(function(e,t){XP(t).css("border-radius","4px 0px 0px 4px")}),n.find("label:last").each(function(e,t){XP(t).css("border-radius","0px 4px 4px 0px"),XP(t).css("border-left","none")}),o.empty(),o.append(e)}}),W.Action=Um,W.Annotation=zm,W.Box3Helper=Im,W.BoxVolume=fg,W.CameraAnimation=Gy,W.CameraMode=am,W.ClassificationScheme=im,W.ClipMethod=sm,W.ClipTask=om,W.ClipVolume=Dv,W.ClippingTool=Pv,W.ElevationGradientRepeat=lm,W.Enum=sd,W.EnumItem=rm,W.EptBinaryLoader=wv,W.EptKey=mp,W.EptLaszipLoader=Th,W.EptLazBatcher=bv,W.EptLoader=yv,W.EptZstandardLoader=Pu,W.EventDispatcher=Yf,W.ExtendPointCloudMaterial=Fm,W.ExtendPointCloudOctree=Qm,W.ExtendScene=kg,W.EyeDomeLightingMaterial=lv,W.Features=Qf,W.FirstPersonControls=Yd,W.GeoPackageLoader=Dd,W.Geopackage=Iv,W.Gradients=tm,W.HierarchicalSlider=zy,W.Images360=cy,W.KeyCodes=Dm,W.LRU=ip,W.LRUItem=Rm,W.LengthUnits=pm,W.Log=function(e,t,n){t=t||"#13f",n=n||14,console.warn("%c".concat(e),"color:".concat(t,";font-size:").concat(n,"px"))},W.MOUSE=um,W.Measure=eg,W.MeasuringTool=ig,W.Message=kv,W.NodeLoader=vv,W.NormalizationEDLMaterial=km,W.NormalizationMaterial=Pm,W.OctreeLoader=Iu,W.OrbitControls=Vu,W.OrientedImage=aw,W.OrientedImageLoader=Tp,W.OrientedImages=ow,W.POCLoader=pv,W.PointAttribute=w,W.PointAttributeTypes=Vf,W.PointAttributes=Wf,W.PointCloudEptGeometry=Zl,W.PointCloudEptGeometryNode=Fd,W.PointCloudOctreeGeometry=$f,W.PointCloudOctreeGeometryNode=em,W.PointCloudSM=Nu,W.PointCloudTree=Zf,W.PointCloudTreeNode=Kf,W.PointShape=hm,W.PointSizeType=cm,W.Points=Jf,W.PolygonClipVolume=Uf,W.Profile=ff,W.ProfileData=Vm,W.ProfileRequest=Rd,W.ProfileTool=Wu,W.Renderer=xm,W.ScreenBoxSelectTool=rg,W.ShapefileLoader=up,W.SphereVolume=mg,W.SpotLightHelper=Yu,W.TextSprite=qm,W.TransformationTool=sg,W.TreeType=dm,W.Utils=ie,W.Version=zf,W.Viewer=Od,W.Volume=pg,W.VolumeTool=Sm,W.WorkerPool=Tu,W.XHRFactory=uf,W.config=Gm,W.debug={},W.framenumber=0,W.loadDatasets=function(e,t,n){return ok.apply(this,arguments)},W.loadFile=rk,W.loadMapEntity=function(e,t){return sk.apply(this,arguments)},W.loadPanos=function(e,t){return lk.apply(this,arguments)},W.loadPanosInfo=function(e){return uk.apply(this,arguments)},W.loadPointCloud=function(n,t,i,e,r,a){var o=new Promise(function(t){n&&(0<n.indexOf("ept.json")?yv.load(n,function(e){e?(e=new Qm(e),t({type:"pointcloud_loaded",pointcloud:e})):console.error(new Error("failed to load point cloud from URL: ".concat(n)))}):0<n.indexOf("cloud.js")?pv.load(n,e,function(e){e?(e=new Qm(e),t({type:"pointcloud_loaded",pointcloud:e})):(console.error(new Error("failed to load point cloud from URL: ".concat(n))),a&&a())}):0<n.indexOf(".vpc")?PointCloudArena4DGeometry.load(n,function(e){e?(e=new PointCloudArena4D(e),t({type:"pointcloud_loaded",pointcloud:e})):console.error(new Error("failed to load point cloud from URL: ".concat(n)))}):console.error(new Error("failed to load point cloud from URL: ".concat(n))))});if(!r)return o;o.then(function(e){(e=e).pointcloud.name=t,e.pointcloud.sceneCode=i,r(e)})},W.loadProject=function(e,t){return sv.apply(this,arguments)},W.lru=od,W.maxNodesLoading=4,W.mergeEditStart=function(e){function o(e){var t=u.mainViewport.camera,n=new Re(e.pointer.x,e.pointer.y,-1).unproject(t),e=new Re(e.pointer.x,e.pointer.y,1).unproject(t).sub(n),i=(t=(0-n.z)/e.z)*e.x+n.x,t=t*e.y+n.y;c.moveBoundCenterTo(l,new Re(i,t,l.boundCenter.z)),l.dispatchEvent("position_changed")}function s(){return c.focusOn(l),t(),{stopContinue:!0}}Potree.settings.editType="merge",Potree.settings.intersectOnObjs=!0,Potree.settings.boundAddObjs=!0,Potree.settings.unableNavigate=!0;var l,u=new Potree.Viewer(e),t=(u.modules.Alignment,u.setEDLEnabled(!1),u.setFOV(Potree.config.view.fov),u.mainViewport.view.position.set(30,30,30),u.mainViewport.view.lookAt(0,0,0),u.updateModelBound(),u.transformationTool.setModeEnable(["translation","rotation"]),u.ssaaRenderPass.sampleLevel=1,u.inputHandler.fixSelection=!0,Potree.settings.sizeFitToLevel=!0,Potree.loadPointCloudScene=function(i,e,t,o,s){function r(e,t,n,r,a){Potree.loadPointCloud(e,t,n,r,function(e){var t=u.scene,e=e.pointcloud,n=Potree.config.material,i=e.material,n=(i.minSize=n.minSize,i.maxSize=n.maxSize,i.pointSizeType=n.pointSizeType,e.changePointSize(n.realPointSize),e.changePointOpacity(1),i.shape=Potree.PointShape.SQUARE,a&&(e.color=e.material.color=a),e.timeStamp=r,t.addPointCloud(e),u.updateModelBound(),u.bound);n.boundSize,n.center;u.dispatchEvent({type:"loadPointCloudDone"}),Potree.settings.UserPointDensity||(Potree.settings.UserPointDensity="high"),Potree.Log("loadPointCloudDone 点云加载完毕",null,10),u.dispatchEvent("allLoaded"),o(e)},s)}"laser"==e?Potree.loadDatasets(function(e){var e=e.find(function(e){return e.sceneCode==i}),t=e.updateTime?e.updateTime.replace(/[^0-9]/gi,""):"",n="".concat(Potree.settings.urls.prefix1,"/").concat(e.webBin);r(n,e.sceneName,i,t,e.color)},i,s):r(i+"/cloud.js",e=e+"|"+t,e,"")},function(){l=null,u.removeEventListener("global_mousemove",o),u.removeEventListener("global_click",s)}),c=u.modules.MergeEditor;return Potree.addModel=function(r,a,e,t){var n,i=function(e){var t,n,i;e.dataset_id=r.id,r.position&&e.position.copy(r.position),r.rotation&&e.rotation.setFromVector3(r.rotation),r.scale&&e.scale.set(r.scale,r.scale,r.scale),e.isPointcloud&&(e.renderOrder=Potree.config.renderOrders.model),Potree.settings.maintainBtmZ?(t=function(){e.updateMatrixWorld(),u.updateModelBound()},i=function(){c.maintainBoundXY(e),c.setModelBtmHeight(e),t(),e.dispatchEvent("transformChanged")},e.addEventListener("position_changed",function(){t(),c.getBoundCenter(e),c.computeBtmHeight(e),r.bottomRange&&(e.btmHeight>r.bottomRange.max||e.btmHeight<r.bottomRange.min)&&(e.btmHeight=Be.clamp(e.btmHeight,r.bottomRange.min,r.bottomRange.max),c.setModelBtmHeight(e),t()),e.dispatchEvent("transformChanged")}),e.addEventListener("rotation_changed",i),e.addEventListener("scale_changed",i)):(n=function(){e.updateMatrixWorld(),u.updateModelBound()},i=function(){c.maintainBoundCenter(e),n(),e.dispatchEvent("transformChanged")},e.addEventListener("position_changed",function(){n(),c.getBoundCenter(e),e.dispatchEvent("transformChanged")}),e.addEventListener("rotation_changed",i),e.addEventListener("scale_changed",i)),e.addEventListener("transformChanged",function(){c.modelTransformCallback(e)}),e.updateMatrixWorld(),u.updateModelBound(),c.getBoundCenter(e),e.lastMatrixWorld=e.matrixWorld.clone(),a(e),r.isFirstLoad?(c.moveBoundCenterTo(e,new Re(0,0,0)),c.setModelBtmHeight(e,0),"single"!=r.mode&&(u.addEventListener("global_mousemove",o),u.addEventListener("global_click",s,3),l=e),e.dispatchEvent("position_changed")):l=null};"glb"==r.type?(n={name:r.type,id:r.id,unlit:!0,glburl:r.url},u.loadModel(n,function(e){e.isModel=!0,e.traverse(function(e){return e.material&&(e.material.transparent=!0)}),i(e)},e,t)):"obsg"==r.type?u.loadModel({name:"3dTiles",id:r.id,tilesUrl:r.url},function(e){e.isModel=!0,i(e)},onprogress):Potree.loadPointCloudScene(r.url,r.type,r.modelId,function(e){e.matrixAutoUpdate=!0,e.initialPosition=e.position.clone(),e.pos1MatrixInvert=(new _e).setPosition(e.initialPosition).invert(),i(e)},t)},{THREE:Sp}},W.numNodesLoading=0,W.panoEditStart=function(e,t,n){function c(e){h.sidebar&&h.sidebar.addAlignmentButton(e);var t=e.panos[0].dataRotation.z+Math.PI,n=e.panos[0].dataPosition.clone();i.rotate(e,null,t),i.translate(e,n),e.updateMatrixWorld()}Potree.settings.editType="pano",Potree.settings.number=t,Potree.settings.unableNavigate=!0,Potree.settings.sizeFitToLevel=!0;var h=new Potree.Viewer(e),i=h.modules.Alignment,d=(h.setEDLEnabled(!1),h.setFOV(Potree.config.view.fov),0),r=(Potree.settings.isOfficial||(h.loadGUI(function(){h.setLanguage("en"),$("#menu_tools").next().show(),$("#panos").show(),$("#alignment").show(),h.toggleSidebar()}),Potree.settings.sizeFitToLevel=!0),Potree.loadPanosDone=function(a,o){Potree.settings.datasetsPanos[a]={panoData:o,panos:[]},console.log("panoData",a,o);var s=o.length,l=0,u=Object.keys(Potree.settings.datasetsPanos).length;o.forEach(function(r,e){var t="https://laser-oss.4dkankan.com/".concat(Potree.settings.webSite,"/").concat(Potree.settings.number,"/data/bundle_").concat(Potree.settings.number,"/building/uuidcloud/").concat(r.uuid,"/cloud.js"),n=a+"-"+r.uuid;r.index=e,Potree.loadPointCloud(t,n,n,0,function(e){var t=h.scene,e=e.pointcloud,n=Potree.config.material,i=e.material;i.minSize=n.minSize,i.maxSize=n.maxSize,i.pointSizeType=n.pointSizeType,e.changePointSize(.1),e.changePointOpacity(1),i.shape=Potree.PointShape.SQUARE,e.color=n.pointColor,e.dataset_id=a,e.panoUuid=r.uuid,e.timeStamp=0,t.addPointCloud(e),++l==s&&(d++,h.images360.addPanoData(o,a),d==u)&&(h.scene.pointclouds.forEach(function(e){c(e)}),h.images360.loadDone(),h.scene.add360Images(h.images360),h.updateModelBound(),i=h.bound,n=i.boundSize,i=i.center,Potree.Log("中心点: ".concat(ee.toPrecision(i.toArray(),2),", boundSize: ").concat(ee.toPrecision(n.toArray(),2)," "),null,12),h.scene.view.setView({position:i.clone().add(new Re(10,5,10)),target:i}),h.dispatchEvent({type:"loadPointCloudDone"}),Potree.settings.UserPointDensity||(Potree.settings.UserPointDensity="panoEdit"),Potree.Log("loadPointCloudDone 点云加载完毕",null,10),h.dispatchEvent("allLoaded"))})})});Potree.settings.isOfficial||(Potree.settings.datasetsPano={testDataset:null},Potree.loadPanosInfo(function(e){r("testDataset",e.sweepLocations)}))},W.pointBudget=1e6,W.resourcePath=Fu,W.saveProject=function(e){var t,n=e.scene;return{type:"Potree",version:1.7,settings:{pointBudget:(t=e).getPointBudget(),fov:t.getFOV(),edlEnabled:t.getEDLEnabled(),edlRadius:t.getEDLRadius(),edlStrength:t.getEDLStrength(),background:t.getBackground(),minNodeSize:t.getMinNodeSize(),showBoundingBoxes:t.getShowBoundingBox()},view:{position:(t=(t=e).scene.view).position.toArray(),target:t.getPivot().toArray()},classification:e.classifications,pointclouds:n.pointclouds.map(Xm),measurements:n.measurements.map($m),volumes:n.volumes.map(Km),cameraAnimations:n.cameraAnimations.map(Zm),profiles:n.profiles.map(Ym),annotations:nv(e),orientedImages:n.orientedImages.map(ev),geopackages:n.geopackages.map(tv)}},W.settings=zd,W.start=function(e,t,n){Potree.settings.number=n||"t-o5YMR13";var c=new Potree.Viewer(e,t),h=c.modules.Alignment;c.setEDLEnabled(!1),c.setFOV(Potree.config.view.fov),Potree.settings.isOfficial||(c.loadGUI(function(){c.setLanguage("en"),$("#menu_tools").next().show(),$("#menu_scene").next().show(),$("#siteModel").show(),c.toggleSidebar()}),Potree.settings.sizeFitToLevel=!0,Potree.settings.rotAroundPoint=!1),Potree.loadDatasetsCallback=function(e,o){if(!e||0==e.length)return console.error("getDataSet加载的数据为空");Potree.datasetData=e,c.transform=null;function s(e,t){var n=t.location.slice(0,2),i=c.transform.lonlatToLocal.forward(n);c.sidebar&&c.sidebar.addAlignmentButton(e),h.rotate(e,null,t.orientation),h.translate(e,new Re(i[0],i[1],t.location[2])),e.updateMatrixWorld(),Potree.Log("点云".concat(e.dataset_id,"旋转值:").concat(e.orientationUser,", 位置").concat(ee.toPrecision(e.translateUser.toArray(),3),", 经纬度 ").concat(n,", spacing ").concat(e.material.spacing),null,13)}var l=e.length,u=0;Potree.settings.originDatasetId||(Potree.settings.originDatasetId=e[0].id);var t=e.find(function(e){return e.id==Potree.settings.originDatasetId}).location.slice(0,2),t=(proj4.defs("NAVVIS:TMERC","+proj=tmerc +ellps=WGS84 +lon_0="+t[0].toPrecision(15)+" +lat_0="+t[1].toPrecision(15)),proj4.defs("WGS84","+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"),proj4("WGS84","NAVVIS:TMERC")),n=proj4("+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs;");c.transform={lonlatToLocal:t,lonlatTo4550:n},c.mapViewer&&c.mapViewer.mapLayer.maps[0].updateProjection(),e.forEach(function(r,e){var t,n,a;o?((t=c.scene.pointclouds.find(function(e){return e.dataset_id==r.id}))||(Potree.Log("数据集id变了,自动使用第一个","#500"),t=c.scene.pointclouds[0]),h.translate(t,t.translateUser.clone().negate()),h.rotate(t,null,-t.orientationUser),s(t,r)):(t=r.sceneCode||r.name,n="".concat(Potree.settings.urls.prefix1,"/").concat(r.webBin),a=r.updateTime?r.updateTime.replace(/[^0-9]/gi,""):"",Potree.loadPointCloud(n,r.name,t,a,function(e){var t=c.scene,e=e.pointcloud,n=Potree.config.material,i=e.material;e.datasetData=r,e.hasDepthTex=Potree.settings.useDepthTex&&(!!r.has_depth||Potree.settings.isLocalhost&&"SS-t-7DUfWAUZ3V"==Potree.settings.number),i.minSize=n.minSize,i.maxSize=n.maxSize,i.pointSizeType=n.pointSizeType,e.changePointSize(n.realPointSize),e.changePointOpacity(1),i.shape=Potree.PointShape.SQUARE,e.color=e.material.color=r.color,e.dataset_id=r.id,e.timeStamp=a,s(e,r),t.addPointCloud(e),Potree.settings.isOfficial||(Potree.settings.floorplanEnables[r.id]=!0,Potree.settings.floorplanType[r.id]="default"),Potree.loadPanos(r.id,function(e){var t;c.images360.addPanoData(e,r.id),++u==l&&(c.images360.loadDone(),c.scene.add360Images(c.images360),c.mapViewer.addListener(c.images360),c.updateModelBound(),(e=c.bound).boundSize,e.center,Potree.settings.isOfficial||Potree.loadMapEntity("all"),o||(c.dispatchEvent({type:"loadPointCloudDone"}),Potree.settings.UserPointDensity||(Potree.settings.UserPointDensity="high"),Potree.Log("loadPointCloudDone 点云加载完毕",null,10)),""!==(t=sf.urlHasValue("pano",!0))?(e=c.images360.panos.find(function(e){return e.id==t}))&&c.images360.focusPano({pano:e,duration:0,callback:function(){}}):((e=c.bound).boundSize,e=e.center,(e=c.images360.findNearestPano(e))&&c.images360.flyToPano({pano:e,duration:0,target:c.images360.bound.center.setZ(e.position.z)})),c.addVideo(),console.log("allLoaded"),c.dispatchEvent("allLoaded"))})}))})},Potree.loadDatasets(Potree.loadDatasetsCallback),window.testTransform=function(e,t,n){proj4.defs("NAVVIS:test","+proj=tmerc +ellps=WGS84 +lon_0="+e[0].toPrecision(15)+" +lat_0="+e[1].toPrecision(15));e=proj4("WGS84","NAVVIS:test");return t?e.forward(t):e.inverse(n)},window.THREE=Sp,window.buttonFunction=function(){c.scene.pointclouds.forEach(function(e){return e.predictNodeMaxLevel()})},Potree.settings.isLocalhost&&c.inputHandler.addEventListener("keydown",function(e){"t"==e.event.key?(c.images360.cube.visible=!0,c.images360.cube.material.wireframe=!0):"y"==e.event.key&&(c.images360.cube.material.wireframe=!1,c.images360.cube.visible="showPanos"==Potree.settings.displayMode)})},W.version=nd,W.workerPool=ql,Object.defineProperty(W,"__esModule",{value:!0})});
|