mars3d-wind 3.8.3 → 3.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Mars3D平台插件,支持气象 风向图 功能插件 mars3d-wind
3
3
  *
4
- * 版本信息:v3.8.3
5
- * 编译日期:2024-09-25 19:54:09
4
+ * 版本信息:v3.8.5
5
+ * 编译日期:2024-10-29 17:24
6
6
  * 版权所有:Copyright by 火星科技 http://mars3d.cn
7
7
  * 使用单位:免费公开版 ,2024-08-01
8
8
  */
@@ -11,5 +11,5 @@
11
11
  typeof define === 'function' && define.amd ? define(['exports', 'mars3d'], factory) :
12
12
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["mars3d-wind"] = {}, global.mars3d));
13
13
  })(this, (function (exports, mars3d) {
14
- 'use strict';(function(_0x34d376,_0x97bd3f){function _0x19a04c(_0x3e34bc,_0x31b61a){return _0xa9df(_0x31b61a- -0x248,_0x3e34bc);}function _0x57daf9(_0x588ed0,_0x2d0560){return _0xa9df(_0x588ed0- -0x25b,_0x2d0560);}const _0x36e242=_0x34d376();while(!![]){try{const _0x5a643d=-parseInt(_0x19a04c(-0xa9,-0x50))/0x1+parseInt(_0x57daf9(-0xf0,-0xf5))/0x2*(-parseInt(_0x57daf9(-0x25,-0x10))/0x3)+parseInt(_0x57daf9(-0xd8,-0xd8))/0x4+-parseInt(_0x57daf9(-0xdb,-0x6f))/0x5*(parseInt(_0x57daf9(-0x68,-0x8e))/0x6)+-parseInt(_0x57daf9(-0x55,0x2d))/0x7*(parseInt(_0x57daf9(-0x3a,-0x71))/0x8)+parseInt(_0x57daf9(-0x69,-0x5f))/0x9*(parseInt(_0x57daf9(-0x1e,0x19))/0xa)+parseInt(_0x57daf9(-0xa7,-0x104))/0xb;if(_0x5a643d===_0x97bd3f)break;else _0x36e242['push'](_0x36e242['shift']());}catch(_0x1991fe){_0x36e242['push'](_0x36e242['shift']());}}}(_0x1a65,0xdc567));function _interopNamespace(_0x3a0b4){if(_0x3a0b4&&_0x3a0b4['__esModule'])return _0x3a0b4;var _0x4b6bc8=Object['create'](null);_0x3a0b4&&Object['keys'](_0x3a0b4)[_0x2bea97(0x68,0xca)](function(_0x1f25dc){function _0x4c8e56(_0x1c6255,_0x3abed3){return _0x2bea97(_0x3abed3- -0x37,_0x1c6255);}function _0x494c25(_0x492b57,_0x4707a1){return _0x2bea97(_0x4707a1-0x16b,_0x492b57);}if(_0x1f25dc!=='default'){var _0x3d88ff=Object[_0x494c25(0xe5,0x149)](_0x3a0b4,_0x1f25dc);Object['defineProperty'](_0x4b6bc8,_0x1f25dc,_0x3d88ff[_0x494c25(0x12c,0x125)]?_0x3d88ff:{'enumerable':!![],'get':function(){return _0x3a0b4[_0x1f25dc];}});}});_0x4b6bc8[_0x2bea97(-0x7a,-0x78)]=_0x3a0b4;function _0x4ac237(_0x143ce7,_0x5ef043){return _0xa9df(_0x5ef043-0x2fc,_0x143ce7);}function _0x2bea97(_0x35a0ae,_0x570bd7){return _0xa9df(_0x35a0ae- -0x1ff,_0x570bd7);}return _0x4b6bc8;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x1495da,_0x4c7395){const _0x17b982=_0x1495da*Math['cos'](Cesium$7['Math']['toRadians'](_0x4c7395));return _0x17b982;}function getV(_0x30b248,_0x200a7b){const _0x5c4ce9=_0x30b248*Math['sin'](Cesium$7['Math'][_0x2138d0(0x3fb,0x37c)](_0x200a7b));function _0x2138d0(_0x320802,_0x383919){return _0xa9df(_0x320802-0x17e,_0x383919);}return _0x5c4ce9;}function getSpeed(_0x1b928d,_0xb0b878){const _0x5b8b4c=Math[_0x37847d(-0x19f,-0x178)](Math['pow'](_0x1b928d,0x2)+Math['pow'](_0xb0b878,0x2));function _0x37847d(_0x43100c,_0x208dd4){return _0xa9df(_0x208dd4- -0x301,_0x43100c);}return _0x5b8b4c;}function getDirection(_0x1fb8b9,_0x4a6503){let _0xa9fef7=Cesium$7[_0x5c561c(0x41b,0x3ac)][_0x5c561c(0x3e6,0x3c6)](Math['atan2'](_0x4a6503,_0x1fb8b9));function _0x5c561c(_0x2d0b0d,_0x173a2a){return _0xa9df(_0x2d0b0d-0x26b,_0x173a2a);}_0xa9fef7+=_0xa9fef7<0x0?0x168:0x0;function _0x2aea07(_0x3ebb40,_0x49e45b){return _0xa9df(_0x49e45b- -0xf8,_0x3ebb40);}return _0xa9fef7;}const _0x591255={};_0x591255['__proto__']=null,_0x591255[_0x2c6bea(0x20c,0x281)]=getU,_0x591255['getV']=getV,_0x591255['getSpeed']=getSpeed,_0x591255['getDirection']=getDirection;var WindUtil=_0x591255;const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x1cf8ba){this[_0x31d073(0x4e1,0x4f5)]=_0x1cf8ba[_0x586557(-0x1de,-0x1c4)],this['geometry']=_0x1cf8ba['geometry'],this['attributeLocations']=_0x1cf8ba['attributeLocations'],this['primitiveType']=_0x1cf8ba[_0x31d073(0x5ab,0x54f)];function _0x31d073(_0x3d6880,_0x318956){return _0x2c6bea(_0x318956-0x3bd,_0x3d6880);}this[_0x586557(-0x16b,-0x1dd)]=_0x1cf8ba['uniformMap'],this['vertexShaderSource']=_0x1cf8ba['vertexShaderSource'],this['fragmentShaderSource']=_0x1cf8ba['fragmentShaderSource'],this[_0x586557(-0x120,-0x17a)]=_0x1cf8ba['rawRenderState'],this[_0x31d073(0x474,0x4f1)]=_0x1cf8ba['framebuffer'],this['outputTexture']=_0x1cf8ba[_0x31d073(0x5a9,0x53b)],this['autoClear']=_0x1cf8ba['autoClear']??![],this['preExecute']=_0x1cf8ba['preExecute'],this[_0x586557(-0x1f1,-0x182)]=!![],this[_0x586557(-0xda,-0x132)]=undefined;function _0x586557(_0x169f59,_0x37e041){return _0x2c6bea(_0x37e041- -0x2fc,_0x169f59);}this['clearCommand']=undefined,this['autoClear']&&(this['clearCommand']=new Cesium$6[(_0x586557(-0x182,-0x18a))]({'color':new Cesium$6[(_0x31d073(0x514,0x51e))](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x586557(-0x14c,-0x1c8)],'pass':Cesium$6['Pass'][_0x586557(-0x94,-0xe5)]}));}['createCommand'](_0x3cb420){function _0x3689e6(_0x2b6866,_0x22a0ea){return _0x2c6bea(_0x2b6866- -0x368,_0x22a0ea);}function _0x497f33(_0x16729c,_0x48af08){return _0x2c6bea(_0x16729c- -0xfc,_0x48af08);}switch(this[_0x497f33(0x3c,-0x36)]){case'Draw':{const _0x1533ff=Cesium$6['VertexArray'][_0x497f33(0xb2,0x105)]({'context':_0x3cb420,'geometry':this[_0x497f33(0x50,0xb6)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']}),_0xfa1d2a={};_0xfa1d2a['context']=_0x3cb420,_0xfa1d2a['attributeLocations']=this['attributeLocations'],_0xfa1d2a[_0x3689e6(-0x1ad,-0x23a)]=this['vertexShaderSource'],_0xfa1d2a[_0x497f33(0xca,0x11c)]=this['fragmentShaderSource'];const _0x5d9508=Cesium$6['ShaderProgram']['fromCache'](_0xfa1d2a),_0x5c5900=Cesium$6['RenderState'][_0x3689e6(-0x189,-0x129)](this['rawRenderState']);return new Cesium$6[(_0x497f33(0xa4,0xd6))]({'owner':this,'vertexArray':_0x1533ff,'primitiveType':this[_0x497f33(0x96,0x67)],'uniformMap':this['uniformMap'],'modelMatrix':Cesium$6[_0x3689e6(-0x1bf,-0x202)][_0x3689e6(-0x18c,-0x11d)],'shaderProgram':_0x5d9508,'framebuffer':this['framebuffer'],'renderState':_0x5c5900,'pass':Cesium$6['Pass']['OPAQUE']});}case _0x3689e6(-0x165,-0x1a8):{const _0x46cb6c={};return _0x46cb6c['owner']=this,_0x46cb6c['fragmentShaderSource']=this['fragmentShaderSource'],_0x46cb6c[_0x497f33(0x23,0x4e)]=this[_0x497f33(0x23,0x33)],_0x46cb6c[_0x3689e6(-0x1ea,-0x1ba)]=this['outputTexture'],_0x46cb6c[_0x3689e6(-0x24f,-0x1c9)]=!![],new Cesium$6['ComputeCommand'](_0x46cb6c);}}}['setGeometry'](_0x4ac83a,_0x2e3706){this[_0x4bdc07(0x73,0xe5)]=_0x2e3706;function _0x4bdc07(_0x562da9,_0xaad863){return _0x2c6bea(_0xaad863- -0x67,_0x562da9);}function _0xd689ed(_0x1facfe,_0x580adf){return _0x2c6bea(_0x1facfe-0x23f,_0x580adf);}const _0x38443e=Cesium$6['VertexArray']['fromGeometry']({'context':_0x4ac83a,'geometry':this[_0x4bdc07(0xf9,0xe5)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage']['STATIC_DRAW']});this['commandToExecute']['vertexArray']=_0x38443e;}[_0x5bac0c(0x490,0x4de)](_0x458009){if(!this[_0x1415ac(0xdc,0xb7)])return;function _0x1415ac(_0x1a4be4,_0x5d5d3e){return _0x5bac0c(_0x1a4be4,_0x5d5d3e- -0x3b4);}if(_0x458009['mode']!==Cesium$6[_0x1415ac(0x83,0x81)][_0x1415ac(0x61,0xcb)])return;!Cesium$6[_0x155bbb(0x26d,0x29b)](this['commandToExecute'])&&(this['commandToExecute']=this['createCommand'](_0x458009['context']));function _0x155bbb(_0x12ba76,_0x341087){return _0x2c6bea(_0x12ba76-0xc1,_0x341087);}Cesium$6[_0x155bbb(0x26d,0x2ac)](this[_0x1415ac(0x9b,0x8a)])&&this['preExecute'](),Cesium$6['defined'](this['clearCommand'])&&_0x458009['commandList']['push'](this['clearCommand']),_0x458009['commandList']['push'](this['commandToExecute']);}[_0x2c6bea(0x1f4,0x1bb)](){return![];}[_0x5bac0c(0x4b7,0x428)](){function _0x2c6a61(_0x9f22,_0x4d4a94){return _0x2c6bea(_0x4d4a94-0x172,_0x9f22);}if(this['clearCommand']){var _0x17ef0b,_0x587e4d;(_0x17ef0b=this['clearCommand'])!==null&&_0x17ef0b!==void 0x0&&_0x17ef0b[_0x2c6a61(0x2d1,0x2c7)]&&this[_0x339a5b(0x518,0x52f)][_0x2c6a61(0x2a2,0x2c7)]['destroy'](),(_0x587e4d=this['clearCommand'])!==null&&_0x587e4d!==void 0x0&&_0x587e4d[_0x339a5b(0x5ea,0x573)]&&this[_0x2c6a61(0x326,0x327)][_0x2c6a61(0x3ac,0x36b)]['destroy'](),delete this[_0x2c6a61(0x381,0x327)];}function _0x339a5b(_0x1d02ae,_0x31d660){return _0x5bac0c(_0x1d02ae,_0x31d660-0x89);}return this[_0x2c6a61(0x33d,0x33c)]&&(this['commandToExecute'][_0x339a5b(0x555,0x4cf)]&&this['commandToExecute']['vertexArray']['destroy'](),this[_0x339a5b(0x569,0x544)]['shaderProgram']&&this[_0x339a5b(0x4bb,0x544)][_0x339a5b(0x54d,0x573)]['destroy'](),delete this['commandToExecute']),Cesium$6['destroyObject'](this);}}const Cesium$5=mars3d__namespace['Cesium'],Util=(function(){const _0xcf3542=function(){function _0x5a49ca(_0x2fba94,_0x45a323){return _0xa9df(_0x45a323- -0xc3,_0x2fba94);}function _0x1187c4(_0x503aee,_0xe3efe0){return _0xa9df(_0x503aee-0x2e4,_0xe3efe0);}const _0x243e64=new Cesium$5['Geometry']({'attributes':new Cesium$5[(_0x1187c4(0x4b7,0x427))]({'position':new Cesium$5[(_0x5a49ca(0x115,0x122))]({'componentDatatype':Cesium$5[_0x5a49ca(0x1eb,0x168)]['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});return _0x243e64;};function _0x435628(_0x281e5c,_0x11735d){return _0x5bac0c(_0x281e5c,_0x11735d- -0x499);}const _0x47faa7=function(_0x3b2b06,_0x5a2ca0){if(Cesium$5['defined'](_0x5a2ca0)){const _0x42c8be={};_0x42c8be[_0x218dc1(-0xc3,-0x33)]=_0x5a2ca0,_0x3b2b06['source']=_0x42c8be;}function _0x218dc1(_0x55ac27,_0x494c2b){return _0xa9df(_0x494c2b- -0x23b,_0x55ac27);}const _0x426f76=new Cesium$5['Texture'](_0x3b2b06);return _0x426f76;},_0x52db28=function(_0xe20c2b,_0x52122f,_0x44158a){const _0x685d79={};_0x685d79['context']=_0xe20c2b;function _0x46dbfe(_0xff4988,_0x498bc1){return _0xa9df(_0xff4988-0xc6,_0x498bc1);}_0x685d79['colorTextures']=[_0x52122f],_0x685d79['depthTexture']=_0x44158a;const _0x4c7a88=new Cesium$5[(_0x46dbfe(0x321,0x2d7))](_0x685d79);return _0x4c7a88;},_0x256ff5=function(_0x50fb4e){const _0x4eb19d=!![],_0xf2faf6=![],_0xc68bdf={};_0xc68bdf[_0x18a0fb(0x1c4,0x1a3)]=_0x50fb4e['viewport'],_0xc68bdf[_0x41fb8d(0x3cf,0x3dc)]=_0x50fb4e[_0x18a0fb(0x21e,0x24e)];function _0x18a0fb(_0x339ab9,_0x2f24a6){return _0xa9df(_0x2f24a6-0x2,_0x339ab9);}_0xc68bdf[_0x18a0fb(0x196,0x1ba)]=_0x50fb4e['depthMask'],_0xc68bdf['blending']=_0x50fb4e[_0x18a0fb(0x112,0x17e)];const _0x2072d5=_0xc68bdf,_0x3dcea8=Cesium$5['Appearance']['getDefaultRenderState'](_0x4eb19d,_0xf2faf6,_0x2072d5);function _0x41fb8d(_0x2340fe,_0x52a587){return _0xa9df(_0x52a587-0x190,_0x2340fe);}return _0x3dcea8;},_0x10441b=function(_0x597b28){const _0x2a5171={};function _0x1d7dc1(_0x6e43c4,_0x120c30){return _0xa9df(_0x6e43c4-0xe8,_0x120c30);}const _0x512389=Cesium$5['Math']['mod'](_0x597b28['west'],Cesium$5[_0x1d7dc1(0x298,0x29a)]['TWO_PI']),_0x27f3c0=Cesium$5['Math']['mod'](_0x597b28['east'],Cesium$5[_0x1d7dc1(0x298,0x323)]['TWO_PI']),_0x17bab3=_0x597b28['width'];let _0x1f65f0,_0x2f6bf2;_0x17bab3>Cesium$5['Math']['THREE_PI_OVER_TWO']?(_0x1f65f0=0x0,_0x2f6bf2=Cesium$5['Math'][_0x52c4d7(0x406,0x3ef)]):_0x27f3c0-_0x512389<_0x17bab3?(_0x1f65f0=_0x512389,_0x2f6bf2=_0x512389+_0x17bab3):(_0x1f65f0=_0x512389,_0x2f6bf2=_0x27f3c0);_0x2a5171['lon']={'min':Cesium$5['Math'][_0x1d7dc1(0x263,0x29a)](_0x1f65f0),'max':Cesium$5[_0x52c4d7(0x34a,0x395)]['toDegrees'](_0x2f6bf2)};const _0x4a07f7=_0x597b28['south'],_0x5a4842=_0x597b28['north'],_0x564b51=_0x597b28['height'],_0x1bf487=_0x564b51>Cesium$5[_0x1d7dc1(0x298,0x263)]['PI']/0xc?_0x564b51/0x2:0x0;let _0x2adcdc=Cesium$5['Math']['clampToLatitudeRange'](_0x4a07f7-_0x1bf487),_0x329daf=Cesium$5['Math']['clampToLatitudeRange'](_0x5a4842+_0x1bf487);_0x2adcdc<-Cesium$5['Math'][_0x1d7dc1(0x306,0x28f)]&&(_0x2adcdc=-Cesium$5['Math']['PI_OVER_TWO']);_0x329daf>Cesium$5[_0x1d7dc1(0x298,0x243)][_0x52c4d7(0x39e,0x403)]&&(_0x329daf=Cesium$5['Math'][_0x52c4d7(0x3e3,0x432)]);_0x2a5171['lat']={'min':Cesium$5[_0x52c4d7(0x406,0x395)]['toDegrees'](_0x2adcdc),'max':Cesium$5['Math']['toDegrees'](_0x329daf)};function _0x52c4d7(_0x1b39d6,_0x1a35b5){return _0xa9df(_0x1a35b5-0x1e5,_0x1b39d6);}return _0x2a5171;},_0x4569dd={};_0x4569dd['getFullscreenQuad']=_0xcf3542,_0x4569dd['createTexture']=_0x47faa7,_0x4569dd['createFramebuffer']=_0x52db28;function _0x19614c(_0x171bae,_0x2603a3){return _0x2c6bea(_0x2603a3- -0x1c3,_0x171bae);}return _0x4569dd[_0x19614c(-0x35,0xa)]=_0x256ff5,_0x4569dd[_0x435628(-0x92,-0x6a)]=_0x10441b,_0x4569dd;}());var fullscreenVert='#version\x20300\x20es\x0a\x0ain\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20gl_Position\x20=\x20vec4(position,\x201.0f);\x0a}\x0a',screenDrawFrag=_0x5bac0c(0x4b9,0x515),segmentDrawFrag='#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20bool\x20colour;\x0a\x0ain\x20float\x20heightNormalization;\x0ain\x20float\x20speedNormalization;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speedNormalization\x20>\x20zero)\x20{\x0a\x20\x20\x20\x20if(colour)\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(heightNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',segmentDrawVert=_0x2c6bea(0x1e9,0x1bd),trailDrawFrag=_0x2c6bea(0x22d,0x1f4);const Cesium$4=mars3d__namespace['Cesium'];class ParticlesRendering{constructor(_0xd13cd6,_0xba2be0,_0x2b04c3,_0x186878,_0xe318b9){this['colour']=_0x2b04c3['colors']===_0x57828e(-0xc3,-0xc2),this[_0x57828e(-0x4e,-0xcb)](_0xd13cd6,_0xba2be0,_0x2b04c3[_0x371c16(-0x9b,-0x8b)]);function _0x371c16(_0x175288,_0x51ef57){return _0x2c6bea(_0x51ef57- -0x21f,_0x175288);}function _0x57828e(_0x463979,_0x56375e){return _0x2c6bea(_0x56375e- -0x21e,_0x463979);}this['createRenderingFramebuffers'](_0xd13cd6),this['createRenderingPrimitives'](_0xd13cd6,_0xba2be0,_0x2b04c3,_0x186878,_0xe318b9);}[_0x2c6bea(0x153,0x1aa)](_0x5f4f45,_0x3fc308,_0x15a515){function _0x20d19a(_0x35f657,_0x274e3e){return _0x2c6bea(_0x274e3e-0x5b,_0x35f657);}const _0x28e12c={};_0x28e12c[_0x538bbc(0x7e,0x8a)]=_0x5f4f45,_0x28e12c['width']=_0x5f4f45['drawingBufferWidth'],_0x28e12c['height']=_0x5f4f45[_0x20d19a(0x1b3,0x172)],_0x28e12c['pixelFormat']=Cesium$4['PixelFormat']['RGBA'],_0x28e12c[_0x20d19a(0x222,0x274)]=Cesium$4['PixelDatatype']['UNSIGNED_BYTE'];const _0x2538bf=_0x28e12c,_0x25ec92={};_0x25ec92['context']=_0x5f4f45,_0x25ec92['width']=_0x5f4f45['drawingBufferWidth'];function _0x538bbc(_0x4283f2,_0x5aef7c){return _0x2c6bea(_0x5aef7c- -0x147,_0x4283f2);}_0x25ec92['height']=_0x5f4f45['drawingBufferHeight'],_0x25ec92[_0x20d19a(0x25a,0x218)]=Cesium$4['PixelFormat'][_0x538bbc(0x70,0x3c)],_0x25ec92[_0x538bbc(0x114,0xd2)]=Cesium$4[_0x538bbc(0x53,0x77)]['UNSIGNED_INT'];const _0x3fe129=_0x25ec92,_0x23fa8a=_0x15a515[_0x538bbc(0x10,0x35)],_0x2a362a=new Float32Array(_0x23fa8a*0x3);for(let _0x595948=0x0;_0x595948<_0x23fa8a;_0x595948++){const _0x4a519f=Cesium$4['Color'][_0x20d19a(0x1d1,0x1a0)](_0x15a515[_0x595948]);_0x2a362a[0x3*_0x595948]=_0x4a519f['red'],_0x2a362a[0x3*_0x595948+0x1]=_0x4a519f['green'],_0x2a362a[0x3*_0x595948+0x2]=_0x4a519f[_0x538bbc(0x71,-0xd)];}const _0x25b761={'context':_0x5f4f45,'width':_0x23fa8a,'height':0x1,'pixelFormat':Cesium$4[_0x538bbc(-0x35,0x1d)]['RGB'],'pixelDatatype':Cesium$4[_0x538bbc(0x8c,0x77)]['FLOAT'],'sampler':new Cesium$4['Sampler']({'minificationFilter':Cesium$4[_0x20d19a(0x1e9,0x27a)]['LINEAR'],'magnificationFilter':Cesium$4['TextureMagnificationFilter']['LINEAR']})};this['textures']={'segmentsColor':Util[_0x538bbc(0xec,0xd4)](_0x2538bf),'segmentsDepth':Util['createTexture'](_0x3fe129),'currentTrailsColor':Util[_0x538bbc(0x59,0xd4)](_0x2538bf),'currentTrailsDepth':Util['createTexture'](_0x3fe129),'nextTrailsColor':Util['createTexture'](_0x2538bf),'nextTrailsDepth':Util[_0x538bbc(0x44,0xd4)](_0x3fe129),'colorTable':Util['createTexture'](_0x25b761,_0x2a362a)};}['createRenderingFramebuffers'](_0x426c82){function _0x250d4f(_0xe2a245,_0x23672f){return _0x2c6bea(_0x23672f-0x361,_0xe2a245);}function _0x2b5751(_0x23c44f,_0xbd8440){return _0x5bac0c(_0x23c44f,_0xbd8440- -0x59d);}this[_0x250d4f(0x54f,0x55c)]={'segments':Util['createFramebuffer'](_0x426c82,this[_0x250d4f(0x467,0x4b9)]['segmentsColor'],this['textures']['segmentsDepth']),'currentTrails':Util['createFramebuffer'](_0x426c82,this['textures']['currentTrailsColor'],this[_0x250d4f(0x442,0x4b9)]['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x426c82,this[_0x2b5751(-0x1d5,-0x154)][_0x2b5751(-0x156,-0x101)],this[_0x250d4f(0x452,0x4b9)][_0x2b5751(-0x1fe,-0x18f)])};}['createSegmentsGeometry'](_0xc2a58f){const _0x65a3c1=0x4;let _0x54a8de=[];for(let _0x5f5544=0x0;_0x5f5544<_0xc2a58f['particlesTextureSize'];_0x5f5544++){for(let _0x2bc08a=0x0;_0x2bc08a<_0xc2a58f[_0x304d0f(0x107,0xda)];_0x2bc08a++){for(let _0x4202e2=0x0;_0x4202e2<_0x65a3c1;_0x4202e2++){_0x54a8de[_0x304d0f(0x211,0x197)](_0x5f5544/_0xc2a58f['particlesTextureSize']),_0x54a8de[_0x304d0f(0x17d,0x197)](_0x2bc08a/_0xc2a58f[_0x26d85b(0x39c,0x39b)]);}}}function _0x304d0f(_0x55ee8e,_0x2fcbbe){return _0x5bac0c(_0x55ee8e,_0x2fcbbe- -0x382);}_0x54a8de=new Float32Array(_0x54a8de);let _0x5da009=[];for(let _0x32a343=0x0;_0x32a343<_0xc2a58f[_0x26d85b(0x3b6,0x36e)];_0x32a343++){_0x5da009[_0x304d0f(0x1c5,0x197)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x5da009=new Float32Array(_0x5da009);let _0x376c94=[];for(let _0x5cebe7=0x0,_0x3abeac=0x0;_0x5cebe7<_0xc2a58f['maxParticles'];_0x5cebe7++){_0x376c94['push'](_0x3abeac+0x0,_0x3abeac+0x1,_0x3abeac+0x2,_0x3abeac+0x2,_0x3abeac+0x1,_0x3abeac+0x3),_0x3abeac+=_0x65a3c1;}_0x376c94=new Uint32Array(_0x376c94);const _0x38eab7=new Cesium$4['Geometry']({'attributes':new Cesium$4[(_0x26d85b(0x3ae,0x3d2))]({'st':new Cesium$4['GeometryAttribute']({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':_0x54a8de}),'normal':new Cesium$4[(_0x304d0f(0x13f,0xfe))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x5da009})}),'indices':_0x376c94});function _0x26d85b(_0x5a3a42,_0x32ea75){return _0x5bac0c(_0x32ea75,_0x5a3a42- -0xc0);}return _0x38eab7;}['createRenderingPrimitives'](_0x4695e3,_0x100ea3,_0x447564,_0x1c7a69,_0x169208){const _0x72babf=this,_0x2e34f8={};_0x2e34f8['st']=0x0,_0x2e34f8[_0x492f5b(-0x1c0,-0x13e)]=0x1;const _0x46b28b={};_0x46b28b[_0x492f5b(-0x1a4,-0x234)]=[segmentDrawVert];const _0x2288a3={};_0x2288a3['sources']=[segmentDrawFrag];const _0x31a04e={};_0x31a04e['enabled']=!![];const _0x11efd2={};_0x11efd2[_0x36534b(0x346,0x333)]=undefined,_0x11efd2['depthTest']=_0x31a04e,_0x11efd2[_0x36534b(0x34c,0x34a)]=!![];function _0x36534b(_0x4716d1,_0xc267cd){return _0x2c6bea(_0xc267cd-0x1e8,_0x4716d1);}const _0x4af987={};_0x4af987[_0x492f5b(-0x20c,-0x20a)]=0x0,_0x4af987['st']=0x1;const _0x1092aa={};_0x1092aa['defines']=['DISABLE_GL_POSITION_LOG_DEPTH'],_0x1092aa[_0x492f5b(-0x1a4,-0x220)]=[fullscreenVert];const _0x7e2786={};_0x7e2786[_0x492f5b(-0x163,-0x1a1)]=[_0x36534b(0x3f7,0x3b6)],_0x7e2786['sources']=[trailDrawFrag];const _0x37f97e={};_0x37f97e['position']=0x0,_0x37f97e['st']=0x1;const _0x14af9f={};_0x14af9f[_0x492f5b(-0x163,-0x112)]=[_0x492f5b(-0x1d5,-0x263)],_0x14af9f['sources']=[fullscreenVert];const _0x28cc28={};_0x28cc28['defines']=['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],_0x28cc28['sources']=[screenDrawFrag];const _0x1d2f6d={};_0x1d2f6d['enabled']=![];const _0xe39ce3={};function _0x492f5b(_0x6e71ce,_0x7e9983){return _0x2c6bea(_0x6e71ce- -0x373,_0x7e9983);}_0xe39ce3['enabled']=!![],this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x2e34f8,'geometry':this[_0x36534b(0x454,0x406)](_0x447564),'primitiveType':Cesium$4[_0x36534b(0x472,0x3e5)]['TRIANGLES'],'uniformMap':{'previousParticlesPosition':function(){function _0x2701ff(_0x68bf17,_0x1129ed){return _0x492f5b(_0x68bf17-0x33,_0x1129ed);}return _0x169208['particlesTextures'][_0x2701ff(-0x17b,-0x128)];},'currentParticlesPosition':function(){function _0x4eabdf(_0x32dae0,_0x363e3d){return _0x36534b(_0x363e3d,_0x32dae0-0x19c);}return _0x169208[_0x4eabdf(0x4ff,0x523)]['currentParticlesPosition'];},'postProcessingPosition':function(){function _0x36fb60(_0x41f077,_0x3c7cb3){return _0x492f5b(_0x3c7cb3-0x3,_0x41f077);}return _0x169208[_0x36fb60(-0x228,-0x1f5)]['postProcessingPosition'];},'particlesSpeed':function(){function _0x367d86(_0x3a7857,_0x51c154){return _0x492f5b(_0x3a7857-0x656,_0x51c154);}return _0x169208['particlesTextures'][_0x367d86(0x431,0x3ce)];},'colorTable':function(){return _0x72babf['textures']['colorTable'];},'aspect':function(){return _0x4695e3['drawingBufferWidth']/_0x4695e3['drawingBufferHeight'];},'H':function(){return _0x100ea3['H']['array'];},'hRange':function(){return new Cesium$4['Cartesian2'](_0x100ea3['H']['min'],_0x100ea3['H']['max']);},'uSpeedRange':function(){function _0x18d25c(_0x259e54,_0x39cc53){return _0x36534b(_0x39cc53,_0x259e54- -0x272);}return new Cesium$4[(_0x18d25c(0x11b,0x11a))](_0x100ea3['U']['min'],_0x100ea3['U']['max']);},'vSpeedRange':function(){function _0xfb5d99(_0x3c12f0,_0x52465d){return _0x492f5b(_0x3c12f0-0x12,_0x52465d);}return new Cesium$4['Cartesian2'](_0x100ea3['V'][_0xfb5d99(-0x14b,-0x1d9)],_0x100ea3['V']['max']);},'wSpeedRange':function(){function _0x20bb02(_0x5dbc61,_0x3f3239){return _0x36534b(_0x5dbc61,_0x3f3239- -0x10e);}return new Cesium$4['Cartesian2'](_0x100ea3['W'][_0x20bb02(0x2e7,0x2f0)],_0x100ea3['W']['max']);},'pixelSize':function(){return _0x1c7a69['pixelSize'];},'lineWidth':function(){function _0x366cdb(_0x26bee9,_0x105bf9){return _0x36534b(_0x26bee9,_0x105bf9-0x19d);}return _0x447564[_0x366cdb(0x5ff,0x5a5)];},'particleHeight':function(){function _0xbf66b6(_0x46c3b0,_0x9cdf1b){return _0x36534b(_0x9cdf1b,_0x46c3b0- -0x8c);}return _0x447564[_0xbf66b6(0x2fd,0x2a5)];},'colour':function(){return _0x72babf['colour'];}},'vertexShaderSource':new Cesium$4[(_0x492f5b(-0x25d,-0x2a2))](_0x46b28b),'fragmentShaderSource':new Cesium$4[(_0x36534b(0x32b,0x2fe))](_0x2288a3),'rawRenderState':Util[_0x36534b(0x3f4,0x3b5)](_0x11efd2),'framebuffer':this[_0x492f5b(-0x178,-0xfd)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x4af987,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4['PrimitiveType'][_0x36534b(0x310,0x33f)],'uniformMap':{'segmentsColorTexture':function(){return _0x72babf['textures']['segmentsColor'];},'segmentsDepthTexture':function(){return _0x72babf['textures']['segmentsDepth'];},'currentTrailsColor':function(){function _0x4a1b41(_0x3f20fb,_0x2c0304){return _0x492f5b(_0x2c0304-0xe4,_0x3f20fb);}return _0x72babf['framebuffers'][_0x4a1b41(-0x174,-0x109)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0x214806(_0x21b11e,_0x199f0a){return _0x492f5b(_0x199f0a-0x3c8,_0x21b11e);}return _0x72babf[_0x214806(0x1d3,0x250)]['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x447564['fadeOpacity'];}},'vertexShaderSource':new Cesium$4['ShaderSource'](_0x1092aa),'fragmentShaderSource':new Cesium$4[(_0x36534b(0x2a2,0x2fe))](_0x7e2786),'rawRenderState':Util[_0x36534b(0x41e,0x3b5)]({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){function _0x1e42c3(_0x11203a,_0x46751e){return _0x492f5b(_0x46751e-0x75a,_0x11203a);}if(_0x447564['dynamic']){const _0x454081=_0x72babf[_0x1e42c3(0x579,0x5e2)][_0xafa868(0x541,0x568)];_0x72babf[_0xafa868(0x607,0x5dd)][_0xafa868(0x578,0x568)]=_0x72babf['framebuffers'][_0x1e42c3(0x60b,0x5e9)],_0x72babf[_0x1e42c3(0x658,0x5e2)]['nextTrails']=_0x454081;}_0x72babf[_0xafa868(0x5b1,0x573)]['trails'][_0xafa868(0x59f,0x5ac)]['framebuffer']=_0x72babf['framebuffers'][_0xafa868(0x5d8,0x5e4)];function _0xafa868(_0x1ff19f,_0x94b94a){return _0x492f5b(_0x94b94a-0x755,_0x1ff19f);}_0x72babf['primitives'][_0xafa868(0x574,0x503)]['clearCommand'][_0xafa868(0x53b,0x516)]=_0x72babf[_0x1e42c3(0x5e8,0x5e2)]['nextTrails'];}}),'screen':new CustomPrimitive({'commandType':_0x36534b(0x44d,0x3ec),'attributeLocations':_0x37f97e,'geometry':Util[_0x36534b(0x42e,0x3fc)](),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'trailsColorTexture':function(){function _0x14c268(_0x2a2360,_0x35fdff){return _0x492f5b(_0x2a2360-0x6bf,_0x35fdff);}return _0x72babf['framebuffers'][_0x14c268(0x54e,0x58d)]['getColorTexture'](0x0);},'trailsDepthTexture':function(){function _0xe15aa8(_0x291a15,_0x4d4409){return _0x492f5b(_0x4d4409- -0x1c,_0x291a15);}function _0x18e951(_0x19890a,_0x2c45d5){return _0x492f5b(_0x2c45d5-0x196,_0x19890a);}return _0x72babf[_0x18e951(0x2f,0x1e)][_0xe15aa8(-0x1eb,-0x18d)][_0x18e951(-0x9c,-0x74)];}},'vertexShaderSource':new Cesium$4[(_0x36534b(0x322,0x2fe))](_0x14af9f),'fragmentShaderSource':new Cesium$4[(_0x492f5b(-0x25d,-0x250))](_0x28cc28),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':_0x1d2f6d,'depthMask':!![],'blending':_0xe39ce3}),'framebuffer':undefined})};}}var CalculateSpeedShader='#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20W;\x20//\x20upward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0auniform\x20float\x20speedScaleFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20//\x20map\x20the\x20z-axis\x20value\x20to\x20the\x20nearest\x20bit\x20plane\x20to\x20ensure\x20that\x20the\x20result\x20is\x20an\x20integer\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205,\x207,\x208,\x209],\x20width\x20=\x202,\x20height\x20=\x202,\x20level\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x206\x207\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x202\x203\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0afloat\x20interpolateTexture(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x201.0f\x20*\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x201.0f\x20*\x20interval.y;\x0a\x0a\x20\x20float\x20lon0_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon1_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon0_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat1,\x20lev));\x0a\x20\x20float\x20lon1_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat1,\x20lev));\x0a\x0a\x20\x20float\x20lon_lat0\x20=\x20mix(lon0_lat0,\x20lon1_lat0,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat1\x20=\x20mix(lon0_lat1,\x20lon1_lat1,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat\x20=\x20mix(lon_lat0,\x20lon_lat1,\x20lat\x20-\x20lat0);\x0a\x20\x20return\x20lon_lat;\x0a}\x0a\x0avec3\x20linearInterpolation(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bilinear_interpolation\x0a\x20\x20float\x20u\x20=\x20interpolateTexture(U,\x20lonLatLev);\x0a\x20\x20float\x20v\x20=\x20interpolateTexture(V,\x20lonLatLev);\x0a\x20\x20float\x20w\x20=\x20interpolateTexture(W,\x20lonLatLev);\x0a\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec3\x20convertSpeedUnitToLonLat(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20float\x20w\x20=\x20speed.z;\x0a\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20return\x20windVectorInLonLatLev;\x0a}\x0a\x0avec3\x20calculateSpeedByRungeKutta2(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec3\x20y_n\x20=\x20lonLatLev;\x0a\x20\x20vec3\x20f_n\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec3\x20speed\x20=\x20h\x20*\x20linearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20getRange(vec2\x20range)\x20{\x0a\x20\x20float\x20x1\x20=\x200.0f\x20-\x20range.x;\x0a\x20\x20float\x20x2\x20=\x20range.y\x20-\x200.0f;\x0a\x20\x20if(x1\x20<\x200.0f\x20||\x20x2\x20<\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(abs(x1),\x20abs(x2));\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x20abs(max(x1,\x20x2)));\x0a\x20\x20}\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20vec2\x20uRange\x20=\x20getRange(uSpeedRange);\x0a\x20\x20vec2\x20vRange\x20=\x20getRange(vSpeedRange);\x0a\x20\x20vec2\x20wRange\x20=\x20getRange(wSpeedRange);\x0a\x20\x20if(length(speed.xyz)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x200.0f;\x0a\x20\x20}\x0a\x0a\x20\x20percent.x\x20=\x20(abs(speed.x)\x20-\x20uRange.x)\x20/\x20(uRange.y\x20-\x20uRange.x);\x0a\x20\x20percent.y\x20=\x20(abs(speed.y)\x20-\x20vRange.x)\x20/\x20(vRange.y\x20-\x20vRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(abs(speed.z)\x20-\x20wRange.x)\x20/\x20(wRange.y\x20-\x20wRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speedOrigin\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLatLev);\x0a\x20\x20vec3\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLatLev,\x20speed);\x0a\x0a\x20\x20vec4\x20particleSpeed\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speed\x20/\x20speedScaleFactor));\x0a\x20\x20\x20\x20//\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a',PostProcessingPositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x0a\x0auniform\x20sampler2D\x20H;\x20//\x20particles\x20height\x20textures\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0auniform\x20vec2\x20viewerLonRange;\x0auniform\x20vec2\x20viewerLatRange;\x0a\x0aconst\x20float\x20randomCoefficient\x20=\x200.1f;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0aconst\x20float\x20dropRate\x20=\x200.1f;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0aconst\x20float\x20dropRateBump\x20=\x200.1f;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0avec4\x20getTextureValue(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20vec4\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D);\x0a\x20\x20return\x20result;\x0a}\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0abool\x20particleNoSpeed(vec3\x20particle)\x20{\x0a\x20\x20vec4\x20speed\x20=\x20getTextureValue(particlesSpeed,\x20particle);\x0a\x20\x20return\x20speed.r\x20==\x200.0f\x20&&\x20speed.g\x20==\x200.0f;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0f);\x0a\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20float\x20height\x20=\x20getTextureValue(H,\x20vec3(randomLon,\x20randomLat,\x20lev)).r;\x0a\x0a\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20height);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20viewerLatRange.x\x20||\x20particle.y\x20>\x20viewerLatRange.y\x20||\x20particle.x\x20<\x20viewerLonRange.x\x20||\x20particle.x\x20>\x20viewerLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x0a}\x0a',UpdatePositionShader=_0x5bac0c(0x4ac,0x4ed);const Cesium$3=mars3d__namespace[_0x5bac0c(0x385,0x409)];class ParticlesComputing{constructor(_0x11dd18,_0x4efb33,_0x544882,_0x32aa69){function _0x25e301(_0x335336,_0x50d781){return _0x5bac0c(_0x335336,_0x50d781- -0x1c4);}this['data']=_0x4efb33,this['createWindTextures'](_0x11dd18,_0x4efb33),this['createParticlesTextures'](_0x11dd18,_0x544882,_0x32aa69),this[_0x25e301(0x27a,0x300)](_0x4efb33,_0x544882,_0x32aa69);}['createWindTextures'](_0x5b244c,_0x3e3019){function _0x47bd89(_0x41fbe2,_0x40d0d9){return _0x5bac0c(_0x41fbe2,_0x40d0d9- -0x418);}var _0x58938a;function _0x12d010(_0x3ef443,_0x5848c9){return _0x2c6bea(_0x3ef443-0x40e,_0x5848c9);}const _0x59d3bb={'context':_0x5b244c,'width':_0x3e3019['dimensions']['lon'],'height':_0x3e3019[_0x47bd89(0x95,0x4e)]['lat']*(_0x3e3019[_0x47bd89(-0x5,0x4e)][_0x47bd89(0x5c,0xcb)]||0x1),'pixelFormat':Cesium$3[_0x12d010(0x572,0x5a0)]['RED'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x12d010(0x5e5,0x5d2))]({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x47bd89(0x155,0xe8)],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x47bd89(0x170,0xe8)]})};this['windTextures']={'U':Util['createTexture'](_0x59d3bb,_0x3e3019['U']['array']),'V':Util['createTexture'](_0x59d3bb,_0x3e3019['V']['array']),'W':Util['createTexture'](_0x59d3bb,((_0x58938a=_0x3e3019['W'])===null||_0x58938a===void 0x0?void 0x0:_0x58938a['array'])??_0x3e3019['U']['array']),'H':Util['createTexture'](_0x59d3bb,_0x3e3019['H'][_0x47bd89(0x79,0x14)])};}['createParticlesTextures'](_0x5e9243,_0x459f5f,_0xfbd424){const _0x302780={'context':_0x5e9243,'width':_0x459f5f['particlesTextureSize'],'height':_0x459f5f['particlesTextureSize'],'pixelFormat':Cesium$3[_0x55c53e(0x46d,0x473)]['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter'][_0x4eabfa(0x4cc,0x539)],'magnificationFilter':Cesium$3['TextureMagnificationFilter']['NEAREST']})},_0x236275=this['randomizeParticles'](_0x459f5f[_0x4eabfa(0x442,0x44f)],_0xfbd424),_0x560b60=new Float32Array(0x4*_0x459f5f['maxParticles'])[_0x4eabfa(0x4a5,0x4c3)](0x0);function _0x4eabfa(_0x5c6ff2,_0x4b27c4){return _0x2c6bea(_0x5c6ff2-0x2bd,_0x4b27c4);}function _0x55c53e(_0x1da45f,_0x1adda1){return _0x2c6bea(_0x1adda1-0x30f,_0x1da45f);}this['particlesTextures']={'previousParticlesPosition':Util['createTexture'](_0x302780,_0x236275),'currentParticlesPosition':Util[_0x55c53e(0x4ec,0x52a)](_0x302780,_0x236275),'nextParticlesPosition':Util['createTexture'](_0x302780,_0x236275),'postProcessingPosition':Util['createTexture'](_0x302780,_0x236275),'particlesSpeed':Util['createTexture'](_0x302780,_0x560b60)};}[_0x2c6bea(0x21d,0x1c1)](_0x1a7428,_0x228983){function _0x4ffc76(_0x9e65d,_0x4f8879){return _0x5bac0c(_0x4f8879,_0x9e65d- -0x1c2);}const _0x4ac55f=new Float32Array(0x4*_0x1a7428);for(let _0x59a7e4=0x0;_0x59a7e4<_0x1a7428;_0x59a7e4++){_0x4ac55f[0x4*_0x59a7e4]=Cesium$3[_0x4ed12f(0x188,0x1f1)]['randomBetween'](_0x228983['lonRange']['x'],_0x228983['lonRange']['y']),_0x4ac55f[0x4*_0x59a7e4+0x1]=Cesium$3['Math']['randomBetween'](_0x228983[_0x4ffc76(0x276,0x289)]['x'],_0x228983['latRange']['y']),_0x4ac55f[0x4*_0x59a7e4+0x2]=Cesium$3['Math']['randomBetween'](this['data']['lev'][_0x4ed12f(0x244,0x264)],this['data'][_0x4ffc76(0x321,0x34e)][_0x4ed12f(0x24f,0x1ce)]),_0x4ac55f[0x4*_0x59a7e4+0x3]=0x0;}function _0x4ed12f(_0x106717,_0x5ee3ae){return _0x5bac0c(_0x5ee3ae,_0x106717- -0x2c3);}return _0x4ac55f;}['getValidRange'](_0x43e987){const _0x1ff06b=[_0x43e987['dimensions'][_0x7d8ef0(0x5c,0x3)],_0x43e987['dimensions']['lat'],_0x43e987[_0x3b775c(0x535,0x50a)][_0x7d8ef0(0x120,0x9f)]],_0x80974b=[_0x43e987['lon']['min'],_0x43e987['lat'][_0x7d8ef0(0x141,0xc3)],_0x43e987[_0x3b775c(0x5b2,0x620)]['min']],_0x26b7e2=[_0x43e987['lon']['max'],_0x43e987['lat'][_0x7d8ef0(0xef,0xce)],_0x43e987[_0x3b775c(0x5b2,0x5ba)]['max']],_0x2b2e9b=[(_0x26b7e2[0x0]-_0x80974b[0x0])/(_0x1ff06b[0x0]-0x1),(_0x26b7e2[0x1]-_0x80974b[0x1])/(_0x1ff06b[0x1]-0x1),_0x1ff06b[0x2]>0x1?(_0x26b7e2[0x2]-_0x80974b[0x2])/(_0x1ff06b[0x2]-0x1):0x1],_0x3a6fe6=Math[_0x7d8ef0(0x46,-0x4)](Math['random']()*_0x43e987['U'][_0x3b775c(0x4fb,0x481)]['length']),_0x36b7ab=_0x3a6fe6%(_0x1ff06b[0x0]*_0x1ff06b[0x1]),_0x4a7baa=Math[_0x7d8ef0(0x54,-0x4)](_0x36b7ab/_0x1ff06b[0x0]);function _0x7d8ef0(_0x1075db,_0x361084){return _0x2c6bea(_0x361084- -0x153,_0x1075db);}const _0x2b79ce=_0x36b7ab%_0x1ff06b[0x0];function _0x3b775c(_0x158f93,_0x4a601a){return _0x2c6bea(_0x158f93-0x3c0,_0x4a601a);}const _0x2b852c=Cesium$3[_0x7d8ef0(-0x5c,0x7)]['randomBetween'](_0x80974b[0x0]+_0x2b79ce*_0x2b2e9b[0x0],_0x80974b[0x0]+(_0x2b79ce+0x1)*_0x2b2e9b[0x0]),_0x287568=Cesium$3['Math']['randomBetween'](_0x80974b[0x1]+(_0x4a7baa-0x1)*_0x2b2e9b[0x1],_0x80974b[0x1]+_0x4a7baa*_0x2b2e9b[0x1]),_0xd2aa0b=_0x43e987['H'][_0x3b775c(0x4fb,0x4bb)][_0x3a6fe6]||0x0;return[_0x2b852c,_0x287568,_0xd2aa0b];}[_0x2c6bea(0x232,0x27d)](){function _0x1541aa(_0x28a055,_0x34565a){return _0x5bac0c(_0x28a055,_0x34565a- -0x89);}function _0x20a1bc(_0x28a9f9,_0x4a9f1d){return _0x2c6bea(_0x28a9f9-0x300,_0x4a9f1d);}Object['keys'](this[_0x20a1bc(0x47b,0x483)])[_0x1541aa(0x4d5,0x479)](_0x427f5c=>{function _0x19ab69(_0x501a38,_0x1528b2){return _0x1541aa(_0x501a38,_0x1528b2- -0x1b);}this[_0x19ab69(0x357,0x3c8)][_0x427f5c]['destroy']();});}['createComputingPrimitives'](_0x1fcb23,_0x4006f8,_0x540937){function _0x1c3164(_0xcef12e,_0x484d99){return _0x2c6bea(_0xcef12e-0x209,_0x484d99);}const _0x4b9119=new Cesium$3['Cartesian3'](_0x1fcb23['dimensions']['lon'],_0x1fcb23['dimensions'][_0x1c3164(0x3e7,0x38b)],_0x1fcb23[_0x1c3164(0x37e,0x372)][_0x1c3164(0x3fb,0x414)]),_0x5ace32=new Cesium$3['Cartesian3'](_0x1fcb23[_0x34c9fa(0x352,0x38d)]['min'],_0x1fcb23['lat']['min'],_0x1fcb23[_0x34c9fa(0x3ee,0x3c7)]['min']),_0x40dd85=new Cesium$3[(_0x34c9fa(0x327,0x2fb))](_0x1fcb23['lon'][_0x1c3164(0x42a,0x4a3)],_0x1fcb23[_0x1c3164(0x3e7,0x432)]['max'],_0x1fcb23['lev'][_0x34c9fa(0x41d,0x3b4)]),_0x3e97bb=new Cesium$3['Cartesian3']((_0x40dd85['x']-_0x5ace32['x'])/(_0x4b9119['x']-0x1),(_0x40dd85['y']-_0x5ace32['y'])/(_0x4b9119['y']-0x1),_0x4b9119['z']>0x1?(_0x40dd85['z']-_0x5ace32['z'])/(_0x4b9119['z']-0x1):0x1);function _0x34c9fa(_0x250329,_0x15237a){return _0x5bac0c(_0x15237a,_0x250329- -0xf5);}const _0x246b12=new Cesium$3['Cartesian2'](_0x1fcb23[_0x1c3164(0x35f,0x3bb)][_0x34c9fa(0x412,0x42b)],_0x1fcb23['lon'][_0x1c3164(0x42a,0x48c)]),_0x3902e2=new Cesium$3['Cartesian2'](_0x1fcb23['lat']['min'],_0x1fcb23['lat']['max']),_0x12d8d5=new Cesium$3[(_0x34c9fa(0x3a1,0x36f))](_0x1fcb23['U']['min'],_0x1fcb23['U']['max']),_0x3ac416=new Cesium$3[(_0x34c9fa(0x3a1,0x426))](_0x1fcb23['V']['min'],_0x1fcb23['V']['max']),_0x115416=new Cesium$3['Cartesian2'](_0x1fcb23['W'][_0x1c3164(0x41f,0x3bc)],_0x1fcb23['W'][_0x34c9fa(0x41d,0x463)]),_0x3f2eb8=this,_0x5dc0e2={};_0x5dc0e2['U']=function(){return _0x3f2eb8['windTextures']['U'];},_0x5dc0e2['V']=function(){return _0x3f2eb8['windTextures']['V'];},_0x5dc0e2['W']=function(){function _0x2bf9fc(_0x39fe98,_0x194015){return _0x34c9fa(_0x39fe98- -0x4f3,_0x194015);}return _0x3f2eb8[_0x2bf9fc(-0x16d,-0x124)]['W'];},_0x5dc0e2['currentParticlesPosition']=function(){function _0x37c25c(_0x5e6c50,_0xcdc75d){return _0x34c9fa(_0xcdc75d-0x181,_0x5e6c50);}function _0x26a0c7(_0x5b2358,_0x28a607){return _0x34c9fa(_0x28a607-0xb7,_0x5b2358);}return _0x3f2eb8[_0x37c25c(0x55c,0x4f8)][_0x26a0c7(0x459,0x48e)];},_0x5dc0e2['dimension']=function(){return _0x4b9119;},_0x5dc0e2['minimum']=function(){return _0x5ace32;},_0x5dc0e2[_0x1c3164(0x3a3,0x396)]=function(){return _0x40dd85;},_0x5dc0e2[_0x1c3164(0x42b,0x412)]=function(){return _0x3e97bb;},_0x5dc0e2['uSpeedRange']=function(){return _0x12d8d5;},_0x5dc0e2[_0x34c9fa(0x3c0,0x411)]=function(){return _0x3ac416;},_0x5dc0e2[_0x34c9fa(0x3bb,0x3ee)]=function(){return _0x115416;},_0x5dc0e2['speedScaleFactor']=function(){function _0x1eaaaa(_0x4d1c0f,_0xedcdd8){return _0x1c3164(_0xedcdd8- -0x64,_0x4d1c0f);}return _0x540937[_0x1eaaaa(0x325,0x2d3)]*_0x4006f8['speedFactor'];};const _0x2eb904={};_0x2eb904['sources']=[CalculateSpeedShader];const _0x3f567c={};_0x3f567c[_0x34c9fa(0x3cb,0x3ac)]=[UpdatePositionShader];const _0x2c1168={};_0x2c1168['sources']=[PostProcessingPositionShader],this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':'Compute','uniformMap':_0x5dc0e2,'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x2eb904),'outputTexture':this[_0x34c9fa(0x377,0x3b4)]['particlesSpeed'],'preExecute':function(){function _0x50d7e5(_0x2926aa,_0x461764){return _0x1c3164(_0x2926aa- -0x413,_0x461764);}if(_0x4006f8!==undefined&&_0x4006f8[_0x50d7e5(-0x9,-0x58)]){const _0x35e840=_0x3f2eb8['particlesTextures'][_0x335a01(-0x1b8,-0x127)];_0x3f2eb8['particlesTextures'][_0x50d7e5(-0x45,0x17)]=_0x3f2eb8['particlesTextures'][_0x50d7e5(-0x2f,-0x9b)],_0x3f2eb8[_0x335a01(-0x11b,-0x171)][_0x50d7e5(-0x2f,-0xae)]=_0x3f2eb8['particlesTextures'][_0x50d7e5(-0xb8,-0x89)],_0x3f2eb8[_0x50d7e5(-0x8f,-0x108)]['postProcessingPosition']=_0x35e840;}function _0x335a01(_0x25466f,_0x3d6549){return _0x34c9fa(_0x3d6549- -0x4e8,_0x25466f);}_0x3f2eb8['primitives']['calculateSpeed'][_0x335a01(-0xf9,-0x122)]['outputTexture']=_0x3f2eb8['particlesTextures']['particlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x34c9fa(0x3ff,0x38f),'uniformMap':{'currentParticlesPosition':function(){function _0x138434(_0x5a8063,_0x5ab06a){return _0x1c3164(_0x5a8063- -0x14,_0x5ab06a);}function _0x2d4179(_0x1ca3a1,_0x5ec08c){return _0x34c9fa(_0x1ca3a1- -0x4db,_0x5ec08c);}return _0x3f2eb8[_0x2d4179(-0x164,-0x145)][_0x138434(0x3d0,0x42f)];},'particlesSpeed':function(){function _0x131f3f(_0x25f0df,_0x9c2198){return _0x1c3164(_0x9c2198- -0x449,_0x25f0df);}return _0x3f2eb8[_0x131f3f(-0xbc,-0xc5)]['particlesSpeed'];}},'fragmentShaderSource':new Cesium$3[(_0x1c3164(0x31f,0x399))](_0x3f567c),'outputTexture':this[_0x34c9fa(0x377,0x390)]['nextParticlesPosition'],'preExecute':function(){function _0x2cd76d(_0x41fea0,_0x56c20d){return _0x1c3164(_0x41fea0- -0x11e,_0x56c20d);}function _0x25be1d(_0x51334c,_0xfebf57){return _0x34c9fa(_0x51334c- -0x446,_0xfebf57);}_0x3f2eb8['primitives'][_0x2cd76d(0x20d,0x27c)]['commandToExecute'][_0x25be1d(-0xcc,-0x4d)]=_0x3f2eb8['particlesTextures']['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){function _0x3c220f(_0x789c80,_0x1bd68f){return _0x34c9fa(_0x789c80-0x72,_0x1bd68f);}return _0x3f2eb8['particlesTextures'][_0x3c220f(0x389,0x325)];},'particlesSpeed':function(){return _0x3f2eb8['particlesTextures']['particlesSpeed'];},'viewerLonRange':function(){return _0x540937['lonRange'];},'viewerLatRange':function(){function _0x3bae7d(_0x3ec620,_0x46ba1a){return _0x34c9fa(_0x46ba1a- -0x125,_0x3ec620);}return _0x540937[_0x3bae7d(0x1f8,0x21e)];},'lonRange':function(){return _0x246b12;},'latRange':function(){return _0x3902e2;},'dimension':function(){return _0x4b9119;},'minimum':function(){return _0x5ace32;},'maximum':function(){return _0x40dd85;},'interval':function(){return _0x3e97bb;},'H':function(){return _0x3f2eb8['windTextures']['H'];},'randomCoefficient':function(){const _0x1ac4e4=Math['random']();return _0x1ac4e4;},'dropRate':function(){return _0x4006f8['dropRate'];},'dropRateBump':function(){return _0x4006f8['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x2c1168),'outputTexture':this['particlesTextures']['postProcessingPosition'],'preExecute':function(){function _0x550823(_0x2fdda2,_0x3f5012){return _0x1c3164(_0x3f5012- -0x94,_0x2fdda2);}function _0x59f3b9(_0x3044c5,_0xcddb9b){return _0x1c3164(_0x3044c5- -0x495,_0xcddb9b);}_0x3f2eb8[_0x59f3b9(-0xfb,-0x119)]['postProcessingPosition']['commandToExecute']['outputTexture']=_0x3f2eb8[_0x59f3b9(-0x111,-0xad)]['postProcessingPosition'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0x5ca970,_0x28df24,_0x22c529,_0x35ea97){this[_0x52c132(-0xa5,-0x68)]=_0x5ca970,_0x28df24={..._0x28df24};function _0xcd4812(_0x13932f,_0x13bb6c){return _0x5bac0c(_0x13932f,_0x13bb6c- -0x66e);}_0x28df24['udata']&&_0x28df24['vdata']&&(_0x28df24['dimensions']={},_0x28df24[_0xcd4812(-0x1db,-0x208)][_0xcd4812(-0x25f,-0x227)]=_0x28df24[_0x52c132(-0x14f,-0xfc)],_0x28df24['dimensions']['lat']=_0x28df24['rows'],_0x28df24['dimensions']['lev']=_0x28df24['lev']||0x1,_0x28df24['lon']={},_0x28df24['lon'][_0xcd4812(-0x16f,-0x167)]=_0x28df24[_0xcd4812(-0x20c,-0x1cc)],_0x28df24['lon'][_0x52c132(-0x55,-0x58)]=_0x28df24['xmax'],_0x28df24['lat']={},_0x28df24['lat'][_0x52c132(-0x60,0x0)]=_0x28df24['ymin'],_0x28df24[_0xcd4812(-0x156,-0x19f)][_0x52c132(-0x55,-0x4d)]=_0x28df24['ymax'],_0x28df24[_0x52c132(-0x84,-0x50)]={},_0x28df24[_0xcd4812(-0x1df,-0x18b)][_0xcd4812(-0x1ae,-0x167)]=_0x28df24[_0xcd4812(-0x209,-0x20c)]??0x1,_0x28df24['lev'][_0xcd4812(-0xf3,-0x15c)]=_0x28df24[_0x52c132(-0x102,-0xcc)]??0x1,_0x28df24['U']={},_0x28df24['U'][_0xcd4812(-0x23a,-0x242)]=new Float32Array(_0x28df24[_0x52c132(-0xe9,-0x130)]),_0x28df24['U'][_0xcd4812(-0x1d5,-0x167)]=_0x28df24['umin']??Math['min'](..._0x28df24[_0x52c132(-0xe9,-0x130)]),_0x28df24['U'][_0x52c132(-0x55,-0xe5)]=_0x28df24['umax']??Math['max'](..._0x28df24[_0x52c132(-0xe9,-0xb0)]),_0x28df24['V']={},_0x28df24['V'][_0xcd4812(-0x1d7,-0x242)]=new Float32Array(_0x28df24['vdata']),_0x28df24['V']['min']=_0x28df24['vmin']??Math[_0x52c132(-0x60,0x4)](..._0x28df24[_0xcd4812(-0x241,-0x1c6)]),_0x28df24['V']['max']=_0x28df24['vmax']??Math[_0xcd4812(-0x136,-0x15c)](..._0x28df24[_0xcd4812(-0x190,-0x1c6)]));!_0x28df24['W']&&(_0x28df24['W']={'array':new Float32Array(_0x28df24['U'][_0xcd4812(-0x22b,-0x242)]['length']),'min':0x0,'max':0x0});if(!_0x28df24['H']){var _0x5f173a;_0x28df24['H']={'array':new Float32Array(_0x28df24['U'][_0xcd4812(-0x288,-0x242)][_0x52c132(-0xfa,-0x89)]),'min':0x0,'max':0x0};if((_0x5f173a=_0x28df24[_0x52c132(-0x84,-0x6d)])!==null&&_0x5f173a!==void 0x0&&_0x5f173a[_0xcd4812(-0x1f6,-0x242)]){const {lon:_0x3df598,lat:_0x2e5916,lev:_0x5a5d3f}=_0x28df24['dimensions'];for(let _0x461552=0x0;_0x461552<_0x5a5d3f;_0x461552++){for(let _0x2e69a3=0x0;_0x2e69a3<_0x2e5916;_0x2e69a3++){for(let _0x24e3de=0x0;_0x24e3de<_0x3df598;_0x24e3de++){const _0x69491b=_0x461552*(_0x3df598*_0x2e5916)+_0x2e69a3*_0x3df598+_0x24e3de;_0x28df24['H']['array'][_0x69491b]=_0x28df24[_0x52c132(-0x84,-0xfc)]['array'][_0x461552];}}}_0x28df24['H'][_0x52c132(-0x60,-0x8c)]=Math['min'](..._0x28df24['lev']['array']),_0x28df24['H']['max']=Math['max'](..._0x28df24[_0x52c132(-0x84,-0x59)]['array']);}}this['data']=_0x28df24,this['options']=_0x22c529,this['viewerParameters']=_0x35ea97;function _0x52c132(_0x3a829e,_0x25111b){return _0x2c6bea(_0x3a829e- -0x276,_0x25111b);}this[_0x52c132(-0x106,-0x17d)]=new ParticlesComputing(this[_0x52c132(-0xa5,-0xff)],this[_0x52c132(-0x64,0x1b)],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this[_0x52c132(-0xa5,-0xa9)],this['data'],this[_0x52c132(-0x93,-0xfd)],this['viewerParameters'],this[_0x52c132(-0x106,-0x17c)]);}[_0x2c6bea(0x1c1,0x23d)](_0x55d247){this[_0x1cbc1e(0x26f,0x1f9)][_0x1cbc1e(0x331,0x35a)](),Object['keys'](this[_0x1bff46(0x558,0x4e6)]['windTextures'])[_0x1bff46(0x5f9,0x5e6)](_0x1f126e=>{function _0x48c589(_0x3084b3,_0xbcdf97){return _0x1cbc1e(_0xbcdf97- -0x3f3,_0x3084b3);}this[_0x48c589(-0x1cc,-0x184)]['windTextures'][_0x1f126e]['destroy']();}),this['particlesRendering'][_0x1bff46(0x540,0x4cc)][_0x1bff46(0x5be,0x55d)][_0x1cbc1e(0x236,0x1d0)](),Object['keys'](this['particlesRendering']['framebuffers'])['forEach'](_0x2c802b=>{function _0x455cab(_0x319d13,_0x195030){return _0x1bff46(_0x319d13- -0x352,_0x195030);}this['particlesRendering']['framebuffers'][_0x2c802b][_0x455cab(0x1cd,0x1e6)]();});function _0x1bff46(_0x16924c,_0x2f7231){return _0x5bac0c(_0x2f7231,_0x16924c-0xf7);}this[_0x1cbc1e(0x2d0,0x2f5)]=_0x55d247,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']);function _0x1cbc1e(_0x27d34e,_0xd1bdb6){return _0x5bac0c(_0xd1bdb6,_0x27d34e- -0x1f2);}this[_0x1bff46(0x557,0x4f9)]=new ParticlesRendering(this['context'],this[_0x1bff46(0x5fa,0x599)],this['options'],this[_0x1bff46(0x5f3,0x58e)],this['particlesComputing']);}['clearFramebuffers'](){function _0x3d5e19(_0x354b39,_0x493525){return _0x5bac0c(_0x493525,_0x354b39- -0x1ce);}const _0x1c49b7=new Cesium$2[(_0x3d5e19(0x295,0x23c))]({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2[_0x3d5e19(0x2ef,0x2fa)]['OPAQUE']});function _0x2715c2(_0x1c02a6,_0x2a1498){return _0x5bac0c(_0x1c02a6,_0x2a1498- -0x243);}Object['keys'](this['particlesRendering'][_0x3d5e19(0x31e,0x398)])['forEach'](_0x278c00=>{function _0x3f7c18(_0x15a3cf,_0x56dc57){return _0x3d5e19(_0x56dc57- -0x120,_0x15a3cf);}function _0x205b65(_0x3d605f,_0x19f9db){return _0x2715c2(_0x3d605f,_0x19f9db- -0x3b7);}_0x1c49b7['framebuffer']=this[_0x3f7c18(0x1a0,0x172)]['framebuffers'][_0x278c00],_0x1c49b7[_0x3f7c18(0x12a,0x19a)](this['context']);});}['refreshParticles'](_0x42b422,_0x1021f0=!![]){function _0x457606(_0x279270,_0x3b6447){return _0x2c6bea(_0x3b6447- -0x207,_0x279270);}_0x1021f0&&(this[_0x457606(-0x11f,-0xae)](),this['particlesComputing'][_0x457606(0xa,0x2b)](),this[_0x22e8ab(0x109,0x14f)]['createParticlesTextures'](this['context'],this[_0x457606(0x33,-0x24)],this['viewerParameters']));function _0x22e8ab(_0x560de7,_0x386501){return _0x2c6bea(_0x560de7- -0x67,_0x386501);}if(_0x42b422){var _0x2a3c98;const _0x411df9=this['particlesRendering'][_0x457606(0x64,0x17)](this['options']);this[_0x22e8ab(0x108,0x138)]['primitives']['segments'][_0x22e8ab(0xe5,0x148)]=_0x411df9;const _0xd734b7=Cesium$2['VertexArray'][_0x457606(-0x35,-0x59)]({'context':this[_0x22e8ab(0x16a,0x132)],'geometry':_0x411df9,'attributeLocations':this['particlesRendering']['primitives'][_0x457606(-0x38,-0x17)]['attributeLocations'],'bufferUsage':Cesium$2['BufferUsage']['STATIC_DRAW']});(_0x2a3c98=this['particlesRendering'][_0x22e8ab(0x12a,0x1a1)])!==null&&_0x2a3c98!==void 0x0&&(_0x2a3c98=_0x2a3c98[_0x457606(-0x7e,-0x17)])!==null&&_0x2a3c98!==void 0x0&&_0x2a3c98['commandToExecute']&&(this['particlesRendering']['primitives']['segments']['commandToExecute'][_0x457606(-0x34,-0xb2)]=_0xd734b7);}}['setOptions'](_0x4089ff){let _0x5bd0e1=![];this[_0x1328c9(0x9e,0x21)]['maxParticles']!==_0x4089ff[_0x59706f(0x30a,0x391)]&&(_0x5bd0e1=!![]);Object['keys'](_0x4089ff)[_0x1328c9(0xcc,0x13c)](_0x2b139a=>{this['options'][_0x2b139a]=_0x4089ff[_0x2b139a];});function _0x1328c9(_0x28f329,_0x5097b9){return _0x2c6bea(_0x28f329- -0x145,_0x5097b9);}function _0x59706f(_0x11ca8e,_0x570c78){return _0x5bac0c(_0x11ca8e,_0x570c78- -0xe5);}this['refreshParticles'](_0x5bd0e1,_0x4089ff['dynamic']);}['applyViewerParameters'](_0x39a5fd){Object['keys'](_0x39a5fd)[_0x2e37bc(0x119,0xc4)](_0x33b093=>{this['viewerParameters'][_0x33b093]=_0x39a5fd[_0x33b093];});function _0x1b44ba(_0x1e257f,_0x3888ac){return _0x5bac0c(_0x1e257f,_0x3888ac- -0x619);}function _0x2e37bc(_0x31d48c,_0x270765){return _0x5bac0c(_0x31d48c,_0x270765- -0x43e);}this['refreshParticles'](![]),!this['options']['dynamic']&&(this['options']['dynamic']=!![],this[_0x2e37bc(0xd0,0x62)](this['options']),setTimeout(()=>{this['options']['dynamic']=![],this['setOptions'](this['options']);},0x1f4));}['destroy'](){function _0x323fa(_0x2cfa48,_0x49279f){return _0x5bac0c(_0x2cfa48,_0x49279f- -0x57e);}clearTimeout(this[_0x323fa(-0x6e,-0xca)]),this[_0x31ecab(0xa9,0xe4)][_0x31ecab(0x16b,0x1fa)](),Object[_0x31ecab(0x116,0x17d)](this[_0x31ecab(0xa9,0xad)]['windTextures'])['forEach'](_0xfafc5f=>{function _0x312f75(_0x373e6f,_0x16bdf7){return _0x31ecab(_0x373e6f- -0x5d,_0x16bdf7);}this['particlesComputing'][_0x312f75(0x66,0xf6)][_0xfafc5f]['destroy']();}),this['particlesRendering']['textures'][_0x31ecab(0x10f,0x177)][_0x323fa(-0xd7,-0x156)]();function _0x31ecab(_0x34c8c8,_0x33c324){return _0x2c6bea(_0x34c8c8- -0xc7,_0x33c324);}Object['keys'](this[_0x31ecab(0xa8,0xb4)]['framebuffers'])[_0x31ecab(0x14a,0x192)](_0x213f58=>{this['particlesRendering']['framebuffers'][_0x213f58]['destroy']();});for(const _0x8c6562 in this){delete this[_0x8c6562];}}}const Cesium$1=mars3d__namespace[_0x2c6bea(0x118,0x16f)],BaseLayer$1=mars3d__namespace['layer'][_0x2c6bea(0x190,0x19e)],_0x23d3b6={};_0x23d3b6['particlesNumber']=0x1000,_0x23d3b6['fixedHeight']=0x0,_0x23d3b6['fadeOpacity']=0.996;function _0x2c6bea(_0x5be79b,_0x61c73){return _0xa9df(_0x5be79b- -0x56,_0x61c73);}function _0xa9df(_0x1ed943,_0x6d03c5){const _0x1a658a=_0x1a65();return _0xa9df=function(_0xa9dfef,_0x45c19f){_0xa9dfef=_0xa9dfef-0x169;let _0xb16aaf=_0x1a658a[_0xa9dfef];return _0xb16aaf;},_0xa9df(_0x1ed943,_0x6d03c5);}_0x23d3b6['dropRate']=0.003;function _0x5bac0c(_0x3c4d1d,_0x31a096){return _0xa9df(_0x31a096-0x29b,_0x3c4d1d);}_0x23d3b6['dropRateBump']=0.01,_0x23d3b6['speedFactor']=0.5,_0x23d3b6[_0x2c6bea(0x220,0x21f)]=0x2,_0x23d3b6['colors']=['rgb(206,255,255)'],_0x23d3b6['dynamic']=!![];const DEF_OPTIONS=_0x23d3b6;class WindLayer extends BaseLayer$1{constructor(_0x57aab2={}){_0x57aab2={...DEF_OPTIONS,..._0x57aab2};function _0x4e5ab4(_0x6c5d0e,_0x5b60c7){return _0x5bac0c(_0x6c5d0e,_0x5b60c7- -0x31b);}super(_0x57aab2),this[_0x4e5ab4(0x1a0,0x149)](_0x57aab2);}get['layer'](){return this['primitives'];}get['data'](){return this['_data'];}set['data'](_0x83fb4f){this['setData'](_0x83fb4f);}get['colors'](){function _0x42ffa5(_0x1a8eab,_0x3147dc){return _0x2c6bea(_0x3147dc- -0x29d,_0x1a8eab);}return this[_0x42ffa5(-0xa7,-0xba)]['colors'];}set['colors'](_0x103760){function _0x53e93b(_0x5807d8,_0x11bc13){return _0x5bac0c(_0x11bc13,_0x5807d8- -0x640);}function _0x1f129a(_0x484cce,_0x454fe3){return _0x5bac0c(_0x454fe3,_0x484cce- -0x3db);}this[_0x1f129a(0xf9,0x146)]['colors']=_0x103760;if(this['particleSystem']){const _0x46ddce={};_0x46ddce['colors']=_0x103760,this['particleSystem'][_0x1f129a(0xc5,0xdc)](_0x46ddce);}this['resize']();}[_0x2c6bea(0x14a,0x185)](){}['_addedHook'](){function _0x22b770(_0x5b6331,_0x5088cf){return _0x2c6bea(_0x5088cf- -0x33e,_0x5b6331);}this['scene']=this['_map']['scene'],this['camera']=this[_0x22b770(-0x199,-0x212)][_0x4dab57(0x360,0x30c)],this['primitives']=new Cesium$1[(_0x22b770(-0x27f,-0x201))](),this['_map']['scene']['primitives']['add'](this[_0x4dab57(0x39d,0x3dc)]),this['viewerParameters']={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0,'lonDisplayRange':new Cesium$1[(_0x4dab57(0x3b1,0x435))](),'latDisplayRange':new Cesium$1['Cartesian2']()},this[_0x22b770(-0xbe,-0x138)]=new Cesium$1[(_0x4dab57(0x33d,0x2f8))](Cesium$1['Cartesian3']['ZERO'],0.99*0x615299),this['updateViewerParameters'](),window['addEventListener']('resize',this[_0x22b770(-0x191,-0x194)]['bind'](this),![]),this[_0x22b770(-0x111,-0x182)]=![],this['mouse_move']=![];function _0x4dab57(_0x35194d,_0x283e35){return _0x2c6bea(_0x35194d-0x20c,_0x283e35);}this['_map']['on'](mars3d__namespace['EventType'][_0x4dab57(0x3c4,0x412)],this['_onMapWhellEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4dab57(0x416,0x442)],this['_onMouseDownEvent'],this),this[_0x22b770(-0x272,-0x212)]['on'](mars3d__namespace[_0x22b770(-0x1dd,-0x21b)][_0x22b770(-0x12a,-0x19a)],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace['EventType'][_0x4dab57(0x3ee,0x40d)],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x4dab57(0x33c,0x35f)](this[_0x4dab57(0x413,0x475)]);}['_removedHook'](){window['removeEventListener']('resize',this['resize']),this['_map']['off'](mars3d__namespace[_0x212aa1(-0x151,-0x16a)][_0x212aa1(-0xab,-0x76)],this[_0x4410a2(0x18d,0x122)],this);function _0x212aa1(_0x50230e,_0x14a893){return _0x2c6bea(_0x50230e- -0x274,_0x14a893);}this['_map'][_0x4410a2(0xf3,0xed)](mars3d__namespace['EventType']['wheel'],this['_onMapWhellEvent'],this),this[_0x212aa1(-0x148,-0x17c)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['off'](mars3d__namespace[_0x4410a2(0x80,0xd)]['mouseUp'],this[_0x4410a2(0xc9,0x11a)],this),this['_map'][_0x4410a2(0xf3,0xd9)](mars3d__namespace['EventType'][_0x4410a2(0x13f,0x16a)],this['_onMouseMoveEvent'],this);function _0x4410a2(_0x1fa14b,_0x353a60){return _0x5bac0c(_0x353a60,_0x1fa14b- -0x394);}this[_0x4410a2(0xee,0x104)][_0x212aa1(-0xeb,-0xff)](),this['_map']['scene']['primitives'][_0x212aa1(-0x114,-0xcb)](this['primitives']);}['resize'](){if(!this[_0x50c7ea(0x4d3,0x45d)]||!this['particleSystem'])return;function _0x31414e(_0x458811,_0x45b9de){return _0x5bac0c(_0x458811,_0x45b9de- -0x14a);}function _0x50c7ea(_0xc95c99,_0x2d40b7){return _0x5bac0c(_0xc95c99,_0x2d40b7- -0xe);}this['primitives']['show']=![],this[_0x50c7ea(0x478,0x474)]['removeAll'](),this['_map']['once'](mars3d__namespace['EventType']['preRender'],this[_0x50c7ea(0x4f1,0x513)],this);}[_0x5bac0c(0x5ac,0x521)](_0x206342){this[_0x764aba(0x80,0xd5)]['canvasResize'](this['scene'][_0x7a2312(0x1b9,0x1cd)]);function _0x7a2312(_0x10234f,_0x4f4441){return _0x5bac0c(_0x10234f,_0x4f4441- -0x2f5);}this['addPrimitives']();function _0x764aba(_0x1370e4,_0x45caf2){return _0x2c6bea(_0x45caf2- -0x99,_0x1370e4);}this['primitives'][_0x7a2312(0x164,0x176)]=!![];}['_onMapWhellEvent'](_0x1878fa){function _0x2db820(_0x238a41,_0xbfbe45){return _0x5bac0c(_0xbfbe45,_0x238a41- -0x1c1);}function _0x4e9be3(_0x456054,_0x4daf22){return _0x5bac0c(_0x456054,_0x4daf22-0xe9);}clearTimeout(this[_0x2db820(0x32f,0x37c)]);if(!this[_0x4e9be3(0x500,0x554)]||!this['particleSystem'])return;this[_0x2db820(0x2c1,0x249)][_0x2db820(0x2aa,0x28f)]=![],this[_0x4e9be3(0x661,0x5d9)]=setTimeout(()=>{function _0x1f440e(_0x4ad2b,_0x11c064){return _0x4e9be3(_0x4ad2b,_0x11c064- -0x399);}if(!this['show'])return;this[_0x1f440e(0x27b,0x24e)]();},0xc8);}['_onMouseDownEvent'](_0x55980c){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x5850c2){if(!this['show']||!this['particleSystem'])return;function _0x3f752a(_0x144c44,_0x53a213){return _0x5bac0c(_0x144c44,_0x53a213- -0x4c1);}function _0x2cbe19(_0x5e2619,_0x519036){return _0x2c6bea(_0x519036- -0x335,_0x5e2619);}this['mouse_down']&&(this[_0x2cbe19(-0x1ac,-0x1a4)]['show']=![],this[_0x3f752a(-0xbe,-0x4f)]=!![]);}[_0x2c6bea(0x16c,0xfa)](_0x21dfd){function _0x51d11b(_0x45274f,_0x2f11e5){return _0x2c6bea(_0x2f11e5- -0x38b,_0x45274f);}if(!this['show']||!this[_0x51d11b(-0x1cc,-0x21d)])return;function _0x3b4637(_0x202b83,_0x1c231f){return _0x5bac0c(_0x1c231f,_0x202b83-0x33);}this['mouse_down']&&this['mouse_move']&&this[_0x3b4637(0x531,0x4bd)](),this[_0x51d11b(-0x236,-0x1fa)][_0x3b4637(0x49e,0x49f)]=!![],this['mouse_down']=![],this[_0x3b4637(0x4a5,0x514)]=![];}['redraw'](){if(!this['_map']||!this['show'])return;function _0x228468(_0x195693,_0x58cd3f){return _0x5bac0c(_0x58cd3f,_0x195693- -0x47e);}function _0x21349f(_0x10c071,_0x1a84c7){return _0x5bac0c(_0x10c071,_0x1a84c7- -0x4a8);}this[_0x228468(-0x20,-0x5c)](),this['particleSystem']['applyViewerParameters'](this['viewerParameters']),this[_0x21349f(0x13,-0x26)]['show']=!![];}[_0x2c6bea(0x130,0x15b)](_0x3d3a5a){this['_data']=_0x3d3a5a;function _0x387db8(_0x32308c,_0x5446fc){return _0x2c6bea(_0x32308c-0x382,_0x5446fc);}function _0x1e8f40(_0x3906e8,_0x3cee1b){return _0x2c6bea(_0x3906e8-0x10e,_0x3cee1b);}this['particleSystem']&&this[_0x1e8f40(0x27c,0x242)]['destroy'](),this['particleSystem']=new ParticleSystem(this['scene']['context'],_0x3d3a5a,this['getOptions'](),this[_0x387db8(0x58d,0x514)]),this['addPrimitives']();}[_0x5bac0c(0x462,0x464)](_0x1b78b4,_0x2a8245){if(_0x1b78b4)for(const _0x56d583 in _0x1b78b4){this[_0x56d583]=_0x1b78b4[_0x56d583];}this['particleSystem']&&this['particleSystem']['setOptions'](this['getOptions']());}[_0x2c6bea(0x1ee,0x185)](){const _0x171144=Math['ceil'](Math['sqrt'](this[_0x4b462e(0x294,0x21d)]));this['particlesNumber']=_0x171144*_0x171144;const _0x25f694={};_0x25f694['particlesTextureSize']=_0x171144,_0x25f694[_0x4b462e(0x2ff,0x2cf)]=this['particlesNumber'];function _0x4b462e(_0x54b678,_0xd2ab32){return _0x5bac0c(_0xd2ab32,_0x54b678- -0x177);}function _0x3f4393(_0x47e097,_0x2f9c37){return _0x2c6bea(_0x2f9c37-0xea,_0x47e097);}return _0x25f694[_0x4b462e(0x30e,0x2be)]=this['colors'],_0x25f694[_0x3f4393(0x2b0,0x28b)]=this['fixedHeight'],_0x25f694['fadeOpacity']=this['fadeOpacity'],_0x25f694['dropRate']=this[_0x4b462e(0x29e,0x258)],_0x25f694['dropRateBump']=this['dropRateBump'],_0x25f694[_0x4b462e(0x2cb,0x313)]=this['speedFactor'],_0x25f694[_0x3f4393(0x2c9,0x30a)]=this['lineWidth'],_0x25f694['dynamic']=this[_0x4b462e(0x37b,0x315)],_0x25f694;}['addPrimitives'](){this[_0x4f2f19(-0x198,-0x123)][_0x4f2f19(-0x77,-0xc8)](this['particleSystem']['particlesComputing']['primitives']['calculateSpeed']),this['primitives']['add'](this[_0x4f2f19(-0x18e,-0x146)]['particlesComputing'][_0x507f5d(-0x16f,-0x129)]['updatePosition']),this['primitives']['add'](this['particleSystem']['particlesComputing'][_0x507f5d(-0x112,-0x129)]['postProcessingPosition']);function _0x4f2f19(_0x403ea3,_0x109191){return _0x5bac0c(_0x403ea3,_0x109191- -0x5a5);}function _0x507f5d(_0x52adad,_0x581987){return _0x2c6bea(_0x581987- -0x2ba,_0x52adad);}this[_0x507f5d(-0x181,-0x129)]['add'](this['particleSystem']['particlesRendering']['primitives']['segments']),this[_0x4f2f19(-0x195,-0x123)][_0x507f5d(-0x137,-0xce)](this['particleSystem']['particlesRendering']['primitives'][_0x4f2f19(-0x17f,-0x193)]),this[_0x507f5d(-0xcf,-0x129)][_0x507f5d(-0xc2,-0xce)](this['particleSystem']['particlesRendering']['primitives']['screen']);}['updateViewerParameters'](){let _0xe6be5b=this['camera']['computeViewRectangle'](this[_0x4d2f7d(0x99,0x110)]['globe']['ellipsoid']);function _0x4d2f7d(_0x401b83,_0x12ae90){return _0x5bac0c(_0x401b83,_0x12ae90- -0x349);}function _0x4bc0f5(_0x14b448,_0xeb0742){return _0x5bac0c(_0xeb0742,_0x14b448- -0x59a);}if(!_0xe6be5b){const _0xd3d38d=this['_map']['getExtent']();_0xe6be5b=Cesium$1[_0x4d2f7d(0x20e,0x181)][_0x4bc0f5(-0x163,-0x183)](_0xd3d38d['xmin'],_0xd3d38d['ymin'],_0xd3d38d['xmax'],_0xd3d38d['ymax']);}const _0x25a1a9=Util[_0x4d2f7d(0x121,0xe6)](_0xe6be5b);this[_0x4d2f7d(0x191,0x1af)]?(this[_0x4d2f7d(0x22a,0x1b3)]['lonRange']['x']=Math['max'](_0x25a1a9['lon']['min'],this[_0x4d2f7d(0x22e,0x1af)]['xmin']),this['viewerParameters']['lonRange']['y']=Math['min'](_0x25a1a9[_0x4d2f7d(0xca,0xfe)][_0x4bc0f5(-0x88,-0x4)],this[_0x4d2f7d(0x185,0x1af)][_0x4d2f7d(0x74,0xe1)]),this['viewerParameters']['latRange']['x']=Math[_0x4bc0f5(-0x88,-0x112)](_0x25a1a9['lat']['min'],this['_data'][_0x4bc0f5(-0xbe,-0xf6)]),this['viewerParameters']['latRange']['y']=Math['min'](_0x25a1a9[_0x4d2f7d(0x1dc,0x186)]['max'],this['_data'][_0x4bc0f5(-0x101,-0x90)])):(this[_0x4d2f7d(0x1c7,0x1b3)]['lonRange']['x']=_0x25a1a9['lon']['min'],this[_0x4bc0f5(-0x9e,-0xaa)][_0x4d2f7d(0x23c,0x1bb)]['y']=_0x25a1a9[_0x4d2f7d(0x10f,0xfe)][_0x4bc0f5(-0x88,-0xd8)],this[_0x4bc0f5(-0x9e,-0xb3)]['latRange']['x']=_0x25a1a9[_0x4d2f7d(0x160,0x186)][_0x4bc0f5(-0x93,-0x74)],this['viewerParameters']['latRange']['y']=_0x25a1a9['lat']['max']);const _0x2c81e4=this[_0x4d2f7d(0xf2,0xfc)][_0x4bc0f5(-0x116,-0x18b)](this[_0x4d2f7d(0x16c,0x1ae)],this['scene'][_0x4bc0f5(-0xc3,-0xa3)],this[_0x4bc0f5(-0x141,-0xf3)]['drawingBufferHeight']);_0x2c81e4>0x0&&(this[_0x4bc0f5(-0x9e,-0x4d)]['pixelSize']=_0x2c81e4);}}mars3d__namespace[_0x5bac0c(0x41c,0x456)]['register']('wind',WindLayer),mars3d__namespace[_0x5bac0c(0x501,0x520)]['WindLayer']=WindLayer;class CanvasParticle{constructor(){function _0x5c69a6(_0xeadd0b,_0x1f6b0b){return _0x5bac0c(_0xeadd0b,_0x1f6b0b-0x6d);}this['lng']=null,this[_0x5808a0(0x5cb,0x60f)]=null,this['tlng']=null,this['tlat']=null,this['age']=null;function _0x5808a0(_0x453601,_0x502404){return _0x5bac0c(_0x502404,_0x453601-0xfc);}this[_0x5808a0(0x5ed,0x5af)]=null;}[_0x2c6bea(0x137,0x147)](){for(const _0x3f9b49 in this){delete this[_0x3f9b49];}}}class CanvasWindField{constructor(_0xff9c1d){this['setOptions'](_0xff9c1d);}get[_0x2c6bea(0x128,0x167)](){function _0x10c27e(_0x9dfc61,_0x2257da){return _0x2c6bea(_0x2257da- -0x238,_0x9dfc61);}return this[_0x10c27e(-0xbc,-0xdb)];}set['speedRate'](_0x1da6ed){function _0x5e5692(_0x5d4eff,_0x17fb27){return _0x2c6bea(_0x5d4eff-0x32c,_0x17fb27);}function _0x37ca1f(_0x3041b3,_0x190244){return _0x2c6bea(_0x3041b3-0x2b5,_0x190244);}this['_speedRate']=(0x64-(_0x1da6ed>0x63?0x63:_0x1da6ed))*0x64,this[_0x37ca1f(0x477,0x403)]=[(this['xmax']-this[_0x37ca1f(0x466,0x4cb)])/this[_0x5e5692(0x489,0x473)],(this[_0x37ca1f(0x45d,0x3d8)]-this['ymin'])/this['_speedRate']];}get[_0x2c6bea(0x11e,0xd1)](){return this['_maxAge'];}set['maxAge'](_0x5f0bca){this['_maxAge']=_0x5f0bca;}[_0x2c6bea(0x1af,0x17b)](_0x20b090){function _0x29906a(_0x1bc9f8,_0x380aaa){return _0x5bac0c(_0x380aaa,_0x1bc9f8- -0x13e);}this['options']=_0x20b090,this['maxAge']=_0x20b090[_0x29906a(0x2d1,0x282)]||0x78,this['speedRate']=_0x20b090['speedRate']||0x32,this['particles']=[];const _0x3491de=_0x20b090['particlesNumber']||0x1000;for(let _0x3e69db=0x0;_0x3e69db<_0x3491de;_0x3e69db++){const _0x202b8a=this['_randomParticle'](new CanvasParticle());this['particles']['push'](_0x202b8a);}}['setDate'](_0x337c5e){this['rows']=_0x337c5e[_0x2bedb9(0x389,0x386)],this['cols']=_0x337c5e[_0x1620c1(0x3ed,0x3f1)],this[_0x2bedb9(0x32c,0x3b5)]=_0x337c5e[_0x2bedb9(0x32c,0x2e1)],this[_0x1620c1(0x393,0x403)]=_0x337c5e[_0x1620c1(0x410,0x403)],this['ymin']=_0x337c5e['ymin'],this['ymax']=_0x337c5e['ymax'];function _0x2bedb9(_0x15f4f9,_0x3861d8){return _0x2c6bea(_0x15f4f9-0x17b,_0x3861d8);}this[_0x1620c1(0x4d3,0x4f6)]=[];const _0x4761ee=_0x337c5e['udata'],_0x8d2306=_0x337c5e['vdata'];let _0x324305=![];_0x4761ee['length']===this['rows']&&_0x4761ee[0x0]['length']===this[_0x2bedb9(0x2a2,0x27c)]&&(_0x324305=!![]);function _0x1620c1(_0x3d5d5e,_0x5abb80){return _0x5bac0c(_0x3d5d5e,_0x5abb80- -0x27);}let _0x214163=0x0,_0x176c15=null,_0x122604=null;for(let _0xa3fff3=0x0;_0xa3fff3<this['rows'];_0xa3fff3++){_0x176c15=[];for(let _0x19434e=0x0;_0x19434e<this[_0x1620c1(0x38e,0x3f1)];_0x19434e++,_0x214163++){_0x324305?_0x122604=this[_0x1620c1(0x41c,0x41a)](_0x4761ee[_0xa3fff3][_0x19434e],_0x8d2306[_0xa3fff3][_0x19434e]):_0x122604=this['_calcUV'](_0x4761ee[_0x214163],_0x8d2306[_0x214163]),_0x176c15['push'](_0x122604);}this[_0x1620c1(0x51c,0x4f6)]['push'](_0x176c15);}this['options'][_0x2bedb9(0x34f,0x352)]&&this[_0x1620c1(0x47a,0x4f6)][_0x2bedb9(0x33b,0x392)]();}['clear'](){delete this[_0x231200(0x37d,0x32c)],delete this['cols'],delete this[_0xac25f7(-0x199,-0x10d)],delete this['xmax'],delete this['ymin'],delete this['ymax'];function _0x231200(_0x1fcd0b,_0x4d6d55){return _0x5bac0c(_0x4d6d55,_0x1fcd0b- -0x182);}function _0xac25f7(_0x5c5ef1,_0x5bd0b7){return _0x2c6bea(_0x5bd0b7- -0x2be,_0x5c5ef1);}delete this[_0xac25f7(-0xa3,-0x92)],delete this['particles'];}['toGridXY'](_0x422316,_0x331dbf){function _0x2b58cb(_0x441d3e,_0x408448){return _0x5bac0c(_0x408448,_0x441d3e- -0x55d);}function _0x1e47f6(_0x558cb9,_0x1d5bea){return _0x2c6bea(_0x558cb9- -0x294,_0x1d5bea);}const _0x5e17c6=(_0x422316-this['xmin'])/(this['xmax']-this[_0x2b58cb(-0xbb,-0xd1)])*(this[_0x2b58cb(-0x145,-0x1a0)]-0x1),_0x173ea2=(this['ymax']-_0x331dbf)/(this[_0x2b58cb(-0xc4,-0x3a)]-this['ymin'])*(this[_0x1e47f6(-0x86,-0x96)]-0x1);return[_0x5e17c6,_0x173ea2];}['getUVByXY'](_0x348009,_0xed7483){if(_0x348009<0x0||_0x348009>=this['cols']||_0xed7483>=this[_0x48fa62(0x267,0x2d6)])return[0x0,0x0,0x0];function _0x48fa62(_0x470991,_0x5b5fb5){return _0x2c6bea(_0x470991-0x59,_0x5b5fb5);}const _0xfae7ce=Math[_0x545f4c(0x36e,0x2f3)](_0x348009),_0x47e86e=Math[_0x545f4c(0x2ec,0x2f3)](_0xed7483);if(_0xfae7ce===_0x348009&&_0x47e86e===_0xed7483)return this['grid'][_0xed7483][_0x348009];const _0x341c68=_0xfae7ce+0x1;function _0x545f4c(_0xfd55f9,_0x5750c2){return _0x2c6bea(_0x5750c2-0x1a4,_0xfd55f9);}const _0x47c6eb=_0x47e86e+0x1,_0x105957=this['getUVByXY'](_0xfae7ce,_0x47e86e),_0x390803=this['getUVByXY'](_0x341c68,_0x47e86e),_0x540f80=this[_0x545f4c(0x2f5,0x36b)](_0xfae7ce,_0x47c6eb),_0x35c0ba=this[_0x48fa62(0x220,0x203)](_0x341c68,_0x47c6eb);let _0x202624=null;try{_0x202624=this['_bilinearInterpolation'](_0x348009-_0xfae7ce,_0xed7483-_0x47e86e,_0x105957,_0x390803,_0x540f80,_0x35c0ba);}catch(_0x5b3b97){console['log'](_0x348009,_0xed7483);}return _0x202624;}[_0x5bac0c(0x4f7,0x470)](_0x57ecf0,_0x2bff62,_0x31f532,_0xdbb407,_0x58154a,_0x6a02a2){const _0x37b83e=0x1-_0x57ecf0,_0x1415ef=0x1-_0x2bff62,_0x451730=_0x37b83e*_0x1415ef,_0x3d9eec=_0x57ecf0*_0x1415ef,_0x46d1e=_0x37b83e*_0x2bff62,_0x10d84c=_0x57ecf0*_0x2bff62,_0x59b25b=_0x31f532[0x0]*_0x451730+_0xdbb407[0x0]*_0x3d9eec+_0x58154a[0x0]*_0x46d1e+_0x6a02a2[0x0]*_0x10d84c,_0x33590f=_0x31f532[0x1]*_0x451730+_0xdbb407[0x1]*_0x3d9eec+_0x58154a[0x1]*_0x46d1e+_0x6a02a2[0x1]*_0x10d84c;return this['_calcUV'](_0x59b25b,_0x33590f);}['_calcUV'](_0x2efed8,_0x1abd3e){function _0x411027(_0x4edd50,_0x12b5e8){return _0x2c6bea(_0x4edd50- -0x1ca,_0x12b5e8);}return[+_0x2efed8,+_0x1abd3e,Math[_0x411027(-0x97,-0x113)](_0x2efed8*_0x2efed8+_0x1abd3e*_0x1abd3e)];}[_0x5bac0c(0x498,0x4e2)](_0x2362f5,_0x5aea71){if(!this['isInExtent'](_0x2362f5,_0x5aea71))return null;const _0x7c3d5f=this[_0x14f3c3(0x27,-0x5a)](_0x2362f5,_0x5aea71),_0x2a8fc9=this['getUVByXY'](_0x7c3d5f[0x0],_0x7c3d5f[0x1]);function _0x14f3c3(_0x340b4d,_0x11ce7e){return _0x2c6bea(_0x11ce7e- -0x1d3,_0x340b4d);}return _0x2a8fc9;}['isInExtent'](_0x13cc95,_0x929d6b){function _0x7772ef(_0x173087,_0x1016b8){return _0x2c6bea(_0x173087- -0x227,_0x1016b8);}function _0x2885f3(_0x26f2ae,_0x45ec1f){return _0x2c6bea(_0x45ec1f- -0x7d,_0x26f2ae);}return _0x13cc95>=this['xmin']&&_0x13cc95<=this['xmax']&&_0x929d6b>=this[_0x7772ef(-0x3c,-0x1c)]&&_0x929d6b<=this[_0x2885f3(0x171,0x12b)]?!![]:![];}['getRandomLatLng'](){function _0x5c58f7(_0xb9ff02,_0x21f92e){return _0x2c6bea(_0x21f92e-0x275,_0xb9ff02);}const _0x1401f2=fRandomByfloat(this[_0x5c58f7(0x3bc,0x426)],this['xmax']),_0x2ec7e5=fRandomByfloat(this['ymin'],this['ymax']);function _0x1f6c7c(_0x5165a9,_0x307ac2){return _0x2c6bea(_0x307ac2-0x39,_0x5165a9);}const _0x402105={};return _0x402105[_0x1f6c7c(0x222,0x217)]=_0x2ec7e5,_0x402105[_0x5c58f7(0x3c3,0x3b5)]=_0x1401f2,_0x402105;}['getParticles'](){function _0x56123c(_0x84a90b,_0x450f75){return _0x2c6bea(_0x84a90b-0x3c0,_0x450f75);}let _0x4b4945,_0x5a5031,_0x274fb7;for(let _0x121f25=0x0,_0x42dd33=this['particles'][_0x304559(0x3d5,0x42f)];_0x121f25<_0x42dd33;_0x121f25++){let _0x5e65ec=this['particles'][_0x121f25];_0x5e65ec['age']<=0x0&&(_0x5e65ec=this['_randomParticle'](_0x5e65ec));if(_0x5e65ec['age']>0x0){const _0x102849=_0x5e65ec[_0x304559(0x406,0x3b4)],_0xe3939b=_0x5e65ec['tlat'];_0x274fb7=this['getUVByPoint'](_0x102849,_0xe3939b),_0x274fb7?(_0x4b4945=_0x102849+this[_0x56123c(0x582,0x5ee)][0x0]*_0x274fb7[0x0],_0x5a5031=_0xe3939b+this['_calc_speedRate'][0x1]*_0x274fb7[0x1],_0x5e65ec[_0x304559(0x399,0x3c5)]=_0x102849,_0x5e65ec[_0x304559(0x437,0x3a8)]=_0xe3939b,_0x5e65ec['tlng']=_0x4b4945,_0x5e65ec['tlat']=_0x5a5031,_0x5e65ec['speed']=_0x274fb7[0x2],_0x5e65ec[_0x304559(0x38b,0x3ce)]--):_0x5e65ec['age']=0x0;}}function _0x304559(_0x16cfd7,_0x537fe7){return _0x5bac0c(_0x537fe7,_0x16cfd7- -0x98);}return this['particles'];}['_randomParticle'](_0xe8d888){function _0x2152ac(_0x5d7735,_0x488d36){return _0x5bac0c(_0x488d36,_0x5d7735- -0x5e5);}let _0x23cbc2,_0x56f32f;for(let _0x4821be=0x0;_0x4821be<0x1e;_0x4821be++){_0x23cbc2=this[_0x46b572(0x1d9,0x256)](),_0x56f32f=this['getUVByPoint'](_0x23cbc2['lng'],_0x23cbc2[_0x2152ac(-0x116,-0xf9)]);if(_0x56f32f&&_0x56f32f[0x2]>0x0)break;}if(!_0x56f32f)return _0xe8d888;const _0x426a39=_0x23cbc2['lng']+this['_calc_speedRate'][0x0]*_0x56f32f[0x0],_0x414862=_0x23cbc2['lat']+this['_calc_speedRate'][0x1]*_0x56f32f[0x1];_0xe8d888[_0x2152ac(-0x1b4,-0x129)]=_0x23cbc2[_0x46b572(0x1e0,0x23b)],_0xe8d888[_0x46b572(0x2fc,0x2d9)]=_0x23cbc2[_0x46b572(0x278,0x2d9)],_0xe8d888[_0x2152ac(-0x147,-0x140)]=_0x426a39,_0xe8d888[_0x2152ac(-0x159,-0x1d9)]=_0x414862;function _0x46b572(_0x3e4083,_0x595889){return _0x5bac0c(_0x3e4083,_0x595889- -0x1f6);}return _0xe8d888['age']=Math['round'](Math[_0x46b572(0x288,0x265)]()*this['maxAge']),_0xe8d888['speed']=_0x56f32f[0x2],_0xe8d888;}['destroy'](){for(const _0x1c34e5 in this){delete this[_0x1c34e5];}}}function fRandomByfloat(_0x14e886,_0x39bf29){function _0xed2994(_0x5eac6e,_0x4ed29e){return _0x5bac0c(_0x5eac6e,_0x4ed29e- -0x4d2);}return _0x14e886+Math[_0xed2994(-0x1b,-0x77)]()*(_0x39bf29-_0x14e886);}function _0x1a65(){const _0x2ec549=['Compute','Draw','Framebuffer','globeBoundingSphere','_data','windData','pointerEvents','mouseDown','viewerParameters','getU','redraw','rows','NEAREST','defines','forEach','data','lonRange','getFullscreenQuad','_createCanvas','min','OPAQUE','windField','pixelDatatype','pointer-events','createTexture','_tomap','randomizeParticles','createSegmentsGeometry','TextureMinificationFilter','lineWidth','max','interval','__esModule','#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20trailsColor;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','value','toWindowCoordinates','toRadians','push','visibility','mars3d-canvasWind','setDate','grid','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0aout\x20vec4\x20fragColor;\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0f\x20*\x20trailsColor)\x20/\x20255.0f;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20if(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20pointsColor;\x0a\x20\x20}\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20trailsColor;\x0a\x20\x20}\x0a\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a','globalCompositeOperation','layer','_onMap_preRenderEvent','_updateIng2','destroyParticlesTextures','_removedHook','_updateIng','ColorRamp','28rJTGRl','ShaderSource','drawingBufferHeight','Cesium','persists','particlesNumber','nextParticlesPosition','_onMouseMoveEvent','nextTrailsDepth','maxAge','uniformMap','lineTo','trails','updatePosition','EventType','dropRate','toDegrees','blending','cols','speedRate','frameTime','175045hLnKwp','Cartesian3','_map','4095480YOlXGx','pixelSize','default','setData','BoundingSphere','age','sqrt','framebuffer','now','_canrefresh','destroy','commandType','xmax','blue','array','visible','PrimitiveCollection','viewRectangleToLonLatRange','positionWC','lng','onmessage','hidden','canvasWind','SceneMode','fromCssColorString','fromDegrees','latRange','requestAnimationFrame','stroke','_mountedHook','viewport','geometry','preExecute','particlesSpeed','floor','_calcUV','speedFactor','postProcessingPosition','createRenderingTextures','camera','vertexArray','lon','TRIANGLES','textures','clearFramebuffers','Math','getRandomLatLng','height','_speedRate','32569493LnayjX','canvasContext','remove','Color','depthMask','get','PixelFormat','LayerUtil','_onMapWhellEvent','position','scene','depthTexture','random','particlesTextureSize','_onMouseUpEvent','updateViewerParameters','particleSystem','particlesRendering','particlesComputing','levmin','ClearCommand','_setOptionsHook','levmax','dimensions','canvasHeight','#ffffff','EllipsoidalOccluder','toGridXY','show','particlesTextures','length','GeometryAttributes','outputTexture','_bilinearInterpolation','_animateFrame','mouse_move','rawRenderState','DEPTH_COMPONENT','zIndex','maxParticles','currentTrails','getOwnPropertyDescriptor','_colorRamp','removeAll','windTextures','steps','strokeStyle','udata','SCENE3D','GeometryAttribute','BaseLayer','primitives','primitiveType','getPixelSize','colors','willReadFrequently','off','execute','getColor','auto','maximum','tlat','9OCHoBP','24LZHiam','DISABLE_GL_POSITION_LOG_DEPTH','style','DrawCommand','particleHeight','727277HTaMLY','clientWidth','mouseUp','Cartesian2','globalAlpha','type','ymax','Matrix4','resize','nextTrailsColor','defined','tlng','fromGeometry','setOptions','342223qqFAXE','xmin','arrayBufferView','normal','TWO_PI','clearCommand','canvas','vdata','wheel','container','width','vertexShaderSource','mouse_down','pixelFormat','PixelDatatype','wSpeedRange','reverse','canvasResize','_calc_speedRate','canrefresh','vSpeedRange','previousParticlesPosition','fragmentShaderSource','getUVByXY','PI_OVER_THREE','preRender','commandToExecute','280ugCbRu','Pass','createRawRenderState','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','sources','clear','context','worker','createComputingPrimitives','reverseY','ComponentDatatype','colorTable','Sampler','_drawLines','Rectangle','CanvasWindLayer','currentParticlesPosition','IDENTITY','keys','lat','fromCache','116826lpthZO','fixedHeight','mouseMove','options','WindUtil','0px','drawingBufferWidth','413860hjZPlO','fill','#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20lines\x20drawing\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0auniform\x20vec2\x20hRange;\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0aout\x20float\x20heightNormalization;\x0aout\x20float\x20speedNormalization;\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight\x20+\x20lonLatLev.z;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0f,\x20360.0f)\x20-\x20180.0f;\x0a\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0f;\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(speed.z\x20-\x20wSpeedRange.x)\x20/\x20(wSpeedRange.y\x20-\x20wSpeedRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20vec3\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rgb;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x20\x20\x20\x20//\x20render\x20lines\x20with\x20triangles\x20and\x20miter\x20joint\x0a\x20\x20\x20\x20//\x20read\x20https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html\x20for\x20detail\x0a\x20\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20projectedCoordinates.next,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.next\x20+\x20offset;\x0a\x20\x20}\x0a\x0a\x20\x20heightNormalization\x20=\x20(currentPosition.z\x20-\x20hRange.x)\x20/\x20(hRange.y\x20-\x20hRange.x);\x0a\x0a\x20\x20speedNormalization\x20=\x20texture(particlesSpeed,\x20particleIndex).a;\x0a}\x0a','getParticles','ymin','add','update','getOptions','_addedHook','segments','getUVByPoint','lev','destination-in','isDestroyed','addEventListener','depthTest','PI_OVER_TWO','_pointerEvents','shaderProgram','postMessage','framebuffers','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x20Unit\x20converted\x20to\x20degrees\x20of\x20longitude\x20and\x20latitude\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20speed;\x0a\x20\x20if(length(speed.rgb)\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','PrimitiveType','canvasWidth','refreshTimer','speed','dynamic','nextTrails'];_0x1a65=function(){return _0x2ec549;};return _0x1a65();}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace['layer']['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x5067ee={}){function _0xccd961(_0x1ffc0f,_0x33c657){return _0x2c6bea(_0x33c657-0x120,_0x1ffc0f);}super(_0x5067ee),this['_setOptionsHook'](_0x5067ee);function _0x5708eb(_0x1eb910,_0x49ec7e){return _0x5bac0c(_0x1eb910,_0x49ec7e-0x105);}this['canvas']=null,_0x5067ee[_0x5708eb(0x612,0x58a)]&&_0x5067ee[_0x5708eb(0x553,0x581)]&&(this['_colorRamp']=new mars3d__namespace[(_0x5708eb(0x49a,0x50a))](_0x5067ee));}['_setOptionsHook'](_0x63bcd5,_0xf5c2ca){this['frameTime']=0x3e8/(_0x63bcd5['frameRate']||0xa),this['_pointerEvents']=this['options'][_0x191fbd(0x643,0x607)]??![],this['color']=_0x63bcd5['color']||_0x191fbd(0x54f,0x575);function _0xffd5c9(_0x31d07a,_0x502209){return _0x5bac0c(_0x502209,_0x31d07a- -0x21a);}this[_0xffd5c9(0x2f7,0x2fc)]=_0x63bcd5['lineWidth']||0x1,this[_0x191fbd(0x642,0x5df)]=_0x63bcd5['fixedHeight']??0x0,this[_0xffd5c9(0x2ab,0x275)]=_0x63bcd5['reverseY']??![];function _0x191fbd(_0x1bc62e,_0x49dae7){return _0x2c6bea(_0x49dae7-0x3fe,_0x1bc62e);}this['windField']&&this['windField']['setOptions'](_0x63bcd5);}get['layer'](){return this['canvas'];}get['canvasWidth'](){function _0x59416b(_0x25dbeb,_0x1f790d){return _0x5bac0c(_0x25dbeb,_0x1f790d- -0x53e);}return this['_map']['scene'][_0x59416b(-0xa5,-0x97)]['clientWidth'];}get[_0x5bac0c(0x4d2,0x467)](){function _0x394af3(_0x1831eb,_0x48bfa2){return _0x5bac0c(_0x1831eb,_0x48bfa2- -0x15d);}function _0x12ffe1(_0x1df6a5,_0x5f2ee5){return _0x5bac0c(_0x5f2ee5,_0x1df6a5- -0x28d);}return this[_0x12ffe1(0x190,0x1f1)]['scene'][_0x394af3(0x2d0,0x34a)]['clientHeight'];}get[_0x5bac0c(0x4df,0x4fa)](){function _0x3cda00(_0x25fd0d,_0x41703e){return _0x5bac0c(_0x25fd0d,_0x41703e- -0x132);}return this[_0x3cda00(0x3cd,0x3b7)];}set[_0x5bac0c(0x4d7,0x4fa)](_0x407277){this['_pointerEvents']=_0x407277;if(!this['canvas'])return;function _0x315b27(_0x47a089,_0xf43922){return _0x2c6bea(_0x47a089-0x293,_0xf43922);}function _0x1cb738(_0x16f960,_0x107c01){return _0x5bac0c(_0x16f960,_0x107c01-0x75);}_0x407277?this['canvas']['style'][_0x1cb738(0x55b,0x580)]='all':this[_0x1cb738(0x48d,0x51c)]['style']['pointer-events']='none';}get[_0x2c6bea(0x11a,0x121)](){function _0x12afe7(_0x118509,_0x12d772){return _0x2c6bea(_0x12d772- -0x5b,_0x118509);}function _0x1ac7b8(_0x2538ad,_0x5ab225){return _0x2c6bea(_0x2538ad-0x3be,_0x5ab225);}return this[_0x1ac7b8(0x5a1,0x5a4)][_0x1ac7b8(0x4d8,0x4fa)];}set[_0x2c6bea(0x11a,0x98)](_0x1e3966){this['options']['particlesNumber']=_0x1e3966,clearTimeout(this['_canrefresh']);function _0xfd33ad(_0x4a2595,_0x34cd72){return _0x2c6bea(_0x34cd72- -0x2b7,_0x4a2595);}this[_0xfd33ad(-0x20e,-0x181)]=setTimeout(()=>{function _0x2b06b6(_0x11d436,_0x291dd1){return _0xfd33ad(_0x291dd1,_0x11d436-0x6a9);}this[_0x2b06b6(0x5ff,0x5cf)]();},0x1f4);}get['speedRate'](){return this['options']['speedRate'];}set['speedRate'](_0x98f4a7){function _0x3ce889(_0x6ce62a,_0x59aed6){return _0x2c6bea(_0x6ce62a-0x396,_0x59aed6);}this['options'][_0x3ce889(0x4be,0x54d)]=_0x98f4a7;function _0x1c7653(_0x5b898b,_0x11a93b){return _0x5bac0c(_0x5b898b,_0x11a93b- -0x547);}this[_0x3ce889(0x5ae,0x623)]&&(this['windField']['speedRate']=_0x98f4a7);}get[_0x5bac0c(0x403,0x40f)](){return this['options']['maxAge'];}set[_0x2c6bea(0x11e,0x178)](_0x1a1ba6){this['options']['maxAge']=_0x1a1ba6;function _0x14df51(_0x350859,_0x151b56){return _0x2c6bea(_0x151b56-0x2a5,_0x350859);}this['windField']&&(this['windField'][_0x14df51(0x345,0x3c3)]=_0x1a1ba6);}get[_0x5bac0c(0x53d,0x503)](){return this['windData'];}set[_0x5bac0c(0x54a,0x503)](_0x54d57c){function _0x960be4(_0x30d6ab,_0x4671dd){return _0x2c6bea(_0x30d6ab- -0x1fa,_0x4671dd);}this[_0x960be4(-0xca,-0x75)](_0x54d57c);}['_showHook'](_0x17d311){function _0x1480f3(_0x37c6d5,_0x3ff3f4){return _0x5bac0c(_0x3ff3f4,_0x37c6d5- -0x5f5);}function _0x559ac2(_0x553487,_0x27ce40){return _0x5bac0c(_0x27ce40,_0x553487- -0x399);}_0x17d311?this['_addedHook']():(this['windData']&&(this[_0x559ac2(0x13b,0x16e)]['data']=this[_0x1480f3(-0xfc,-0x167)]),this[_0x559ac2(0x18b,0x103)]());}[_0x2c6bea(0x14a,0x12a)](){function _0x3081d0(_0x2fa797,_0x344633){return _0x5bac0c(_0x344633,_0x2fa797-0x54);}function _0x111a6b(_0x54dec4,_0x5d4329){return _0x5bac0c(_0x54dec4,_0x5d4329- -0x5be);}this['options']['worker']?this['initWorker']():this[_0x3081d0(0x55d,0x578)]=new CanvasWindField(this[_0x3081d0(0x528,0x56b)]);}[_0x5bac0c(0x4a5,0x4e0)](){function _0x2730cb(_0x421549,_0x7241fe){return _0x5bac0c(_0x7241fe,_0x421549- -0x2bd);}this['canvas']=this[_0x2868d6(-0x1c,-0xa7)]();const _0x5a5b17={};_0x5a5b17[_0x2868d6(-0x9c,-0x5e)]=!![],this['canvasContext']=this['canvas']['getContext']('2d',_0x5a5b17);function _0x2868d6(_0xc55ab5,_0x519d50){return _0x2c6bea(_0xc55ab5- -0x231,_0x519d50);}this['bindEvent'](),this[_0x2868d6(-0x4e,-0x27)][_0x2868d6(-0x1f,-0x89)]&&this[_0x2730cb(0x164,0x11f)](this['options']['data']);}['_removedHook'](){function _0x2bba34(_0x30af23,_0x308a2d){return _0x2c6bea(_0x308a2d- -0x326,_0x30af23);}this[_0x2bba34(-0xe2,-0x156)](),this['unbindEvent'](),this['canvas']&&(this['_map']['container']['removeChild'](this['canvas']),delete this['canvas']);}['_createCanvas'](){const _0x4c8543=mars3d__namespace['DomUtil']['create']('canvas',_0x3aaf6e(0x35d,0x392),this['_map'][_0x3aaf6e(0x2f4,0x321)]);_0x4c8543['style']['position']='absolute',_0x4c8543['style']['top']=_0x3aaf6e(0x367,0x34d),_0x4c8543[_0x39272c(0x562,0x523)]['left']='0px',_0x4c8543['style'][_0x3aaf6e(0x392,0x322)]=this['_map']['scene'][_0x39272c(0x579,0x5b7)][_0x3aaf6e(0x2c4,0x30b)]+'px';function _0x3aaf6e(_0x599b44,_0x5e4553){return _0x2c6bea(_0x5e4553-0x168,_0x599b44);}_0x4c8543[_0x39272c(0x562,0x4e8)]['height']=this[_0x39272c(0x4ef,0x473)]['scene']['canvas']['clientHeight']+'px',_0x4c8543['style']['pointerEvents']=this['_pointerEvents']?_0x3aaf6e(0x336,0x301):'none',_0x4c8543[_0x39272c(0x562,0x51b)][_0x3aaf6e(0x279,0x2ec)]=this['options']['zIndex']??0x9,_0x4c8543[_0x39272c(0x57d,0x512)]=this['_map']['scene'][_0x39272c(0x579,0x581)]['clientWidth'],_0x4c8543[_0x39272c(0x51f,0x4e1)]=this['_map']['scene'][_0x3aaf6e(0x2b0,0x31e)]['clientHeight'];function _0x39272c(_0x16c297,_0x5c7fb2){return _0x2c6bea(_0x16c297-0x3c3,_0x5c7fb2);}return _0x4c8543;}['resize'](){function _0x503103(_0x45062f,_0x4dfbea){return _0x2c6bea(_0x4dfbea-0x13,_0x45062f);}function _0x34870f(_0x2a08bd,_0x1016d7){return _0x2c6bea(_0x1016d7- -0x277,_0x2a08bd);}this['canvas']&&(this[_0x34870f(-0x12a,-0xc1)]['style']['width']=this['_map'][_0x34870f(-0xf7,-0x10f)][_0x503103(0x142,0x1c9)]['clientWidth']+'px',this[_0x503103(0x18c,0x1c9)][_0x503103(0x1b0,0x1b2)]['height']=this[_0x34870f(-0x132,-0x14b)]['scene'][_0x503103(0x249,0x1c9)]['clientHeight']+'px',this['canvas']['width']=this['_map'][_0x34870f(-0x17c,-0x10f)]['canvas']['clientWidth'],this[_0x34870f(-0xa1,-0xc1)]['height']=this['_map'][_0x34870f(-0x17c,-0x10f)]['canvas']['clientHeight']);}['bindEvent'](){function _0x24b5aa(_0x4d9d75,_0x2383d5){return _0x5bac0c(_0x2383d5,_0x4d9d75-0x10c);}const _0xecd788=this;let _0x4178f3=Date[_0x24b5aa(0x532,0x5b5)]();(function _0x5823a9(){function _0x59b95e(_0x2af88c,_0x2e7ee4){return _0x24b5aa(_0x2e7ee4- -0x261,_0x2af88c);}function _0x288bea(_0x7f8441,_0x51e46a){return _0x24b5aa(_0x7f8441- -0x33d,_0x51e46a);}if(_0xecd788['isDestroy'])return;_0xecd788[_0x59b95e(0x2c1,0x31c)]=window[_0x288bea(0x208,0x1e8)](_0x5823a9);if(_0xecd788['show']&&_0xecd788['windField']){const _0x5533ba=Date['now'](),_0x1a3bf3=_0x5533ba-_0x4178f3;_0x1a3bf3>_0xecd788[_0x288bea(0x1e9,0x189)]&&(_0x4178f3=_0x5533ba-_0x1a3bf3%_0xecd788[_0x288bea(0x1e9,0x1a2)],_0xecd788['update']());}}(),window[_0x24b5aa(0x5f2,0x5bc)]('resize',this[_0x1814c5(-0xb1,-0x37)]['bind'](this),![]));function _0x1814c5(_0x482bea,_0x4d7be9){return _0x5bac0c(_0x4d7be9,_0x482bea- -0x54c);}this[_0x24b5aa(0x5b9,0x5e4)]=![],this['mouse_move']=![],this[_0x1814c5(-0x78,-0xae)]['mouseHidden']&&(this['_map']['on'](mars3d__namespace['EventType']['wheel'],this[_0x24b5aa(0x563,0x557)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x24b5aa(0x529,0x5b9)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this));}['unbindEvent'](){function _0x2f68ea(_0x12f2e7,_0x3aaa8e){return _0x2c6bea(_0x3aaa8e-0x9e,_0x12f2e7);}window['cancelAnimationFrame'](this[_0x5178e(0x30c,0x2df)]),delete this[_0x5178e(0x30c,0x2fa)],window['removeEventListener']('resize',this[_0x5178e(0x336,0x373)]);function _0x5178e(_0x4d29f4,_0x44c0aa){return _0x5bac0c(_0x44c0aa,_0x4d29f4- -0x165);}this['options']['mouseHidden']&&(this['_map']['off'](mars3d__namespace['EventType'][_0x5178e(0x344,0x368)],this[_0x2f68ea(0x181,0x204)],this),this[_0x5178e(0x2b8,0x341)]['off'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x5178e(0x2b8,0x319)]['off'](mars3d__namespace[_0x5178e(0x2af,0x244)]['mouseUp'],this[_0x5178e(0x2f8,0x335)],this),this['_map']['off'](mars3d__namespace[_0x5178e(0x2af,0x303)][_0x5178e(0x36e,0x357)],this['_onMouseMoveEvent'],this));}['_onMapWhellEvent'](_0x38db89){function _0x5087c5(_0x399e85,_0x4ffd05){return _0x5bac0c(_0x399e85,_0x4ffd05- -0x23c);}clearTimeout(this['refreshTimer']);if(!this[_0x305758(-0x113,-0x112)]||!this['canvas'])return;function _0x305758(_0x13b1b7,_0x4889fc){return _0x2c6bea(_0x13b1b7- -0x28d,_0x4889fc);}this['canvas']['style']['visibility']=_0x5087c5(0x23a,0x1f7),this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;function _0x8e84ea(_0x2d0940,_0x40cba0){return _0x5087c5(_0x2d0940,_0x40cba0-0x381);}function _0x5de8d0(_0x2c55bb,_0xb3ac40){return _0x5087c5(_0xb3ac40,_0x2c55bb- -0xf5);}this[_0x5de8d0(0x1cd,0x150)](),this[_0x8e84ea(0x566,0x5ec)]['style'][_0x5de8d0(0x1e9,0x24f)]=_0x5de8d0(0xfc,0x186);},0xc8);}['_onMouseDownEvent'](_0xad6d45){this['mouse_down']=!![],this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['_map']['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x1de834){function _0x370b18(_0x428c06,_0x1534c5){return _0x2c6bea(_0x428c06-0x411,_0x1534c5);}function _0x483953(_0x4dd486,_0x339769){return _0x2c6bea(_0x339769-0x11c,_0x4dd486);}if(!this['show']||!this['canvas'])return;this['mouse_down']&&(this[_0x483953(0x273,0x2d2)][_0x483953(0x323,0x2bb)]['visibility']='hidden',this['mouse_move']=!![]);}[_0x2c6bea(0x16c,0x19e)](_0x462f04){function _0x22179c(_0x4d6d41,_0x440d3d){return _0x5bac0c(_0x4d6d41,_0x440d3d- -0x56d);}if(!this[_0x31a2fb(-0xd8,-0x95)]||!this['canvas'])return;this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x22179c(-0x162,-0x160)],this);this['mouse_down']&&this['mouse_move']&&this[_0x31a2fb(-0x45,0x8)]();function _0x31a2fb(_0x2abb45,_0x2b1915){return _0x2c6bea(_0x2abb45- -0x252,_0x2b1915);}this[_0x31a2fb(-0x9c,-0x20)]['style']['visibility']=_0x31a2fb(-0x116,-0x196),this['mouse_down']=![],this[_0x31a2fb(-0xd1,-0x90)]=![];}['setData'](_0x2f6c5f){this['clear'](),this[_0x24ef12(0x301,0x313)]=_0x2f6c5f;function _0x24ef12(_0x1c12ab,_0x435a70){return _0x5bac0c(_0x1c12ab,_0x435a70- -0x1e6);}this['windField'][_0x24ef12(0x35a,0x336)](_0x2f6c5f);function _0x4d7f2e(_0x2a0601,_0x17ff52){return _0x5bac0c(_0x2a0601,_0x17ff52- -0x42c);}this[_0x4d7f2e(0x12b,0xd2)]();}['redraw'](){function _0x3a63d6(_0x15e5ca,_0x2b6298){return _0x5bac0c(_0x2b6298,_0x15e5ca-0x149);}function _0x3f647b(_0xa279aa,_0x1b787c){return _0x5bac0c(_0x1b787c,_0xa279aa- -0xe7);}if(!this['show'])return;this[_0x3f647b(0x422,0x431)][_0x3a63d6(0x5e9,0x55d)](this['options']),this['update']();}[_0x5bac0c(0x500,0x4de)](){if(this[_0x473a29(-0x218,-0x231)])return;function _0x516d36(_0x1f0709,_0x42406d){return _0x5bac0c(_0x1f0709,_0x42406d-0xf);}this['_updateIng']=!![];function _0x473a29(_0x393f08,_0x4500e8){return _0x2c6bea(_0x4500e8- -0x344,_0x393f08);}if(this['worker'])this['windField'][_0x473a29(-0x1dd,-0x157)]();else{const _0x26f6fc=this['windField'][_0x516d36(0x4a5,0x4ea)]();this['_drawLines'](_0x26f6fc);}this['_updateIng']=![];}['_drawLines'](_0xf2c0b1){this['canvasContext'][_0x461675(0x5ec,0x5cc)]=_0x461675(0x602,0x591),this[_0x461675(0x4cd,0x4fd)]['fillRect'](0x0,0x0,this[_0x461675(0x52d,0x59c)],this['canvasHeight']),this['canvasContext'][_0x461675(0x540,0x5cc)]='lighter',this['canvasContext'][_0x461675(0x4c5,0x544)]=0.9;const _0x451405=this[_0x461675(0x4ef,0x4ca)]['scene']['mode']!==Cesium['SceneMode']['SCENE3D'];function _0x461675(_0x2ea895,_0x2ba644){return _0x2c6bea(_0x2ba644-0x39e,_0x2ea895);}function _0x59b4f(_0x4d164f,_0x3b0e1d){return _0x2c6bea(_0x3b0e1d-0x156,_0x4d164f);}const _0x2935f8=this['canvasWidth']*0.25;if(this[_0x461675(0x4ca,0x526)])for(let _0x514351=0x0,_0x24b624=_0xf2c0b1['length'];_0x514351<_0x24b624;_0x514351++){const _0x2749d3=_0xf2c0b1[_0x514351],_0x4ea3d7=this['_tomap'](_0x2749d3['lng'],_0x2749d3['lat'],_0x2749d3),_0x32f403=this['_tomap'](_0x2749d3['tlng'],_0x2749d3[_0x59b4f(0x295,0x2f1)],_0x2749d3);if(!_0x4ea3d7||!_0x32f403)continue;if(_0x451405&&Math['abs'](_0x4ea3d7[0x0]-_0x32f403[0x0])>=_0x2935f8)continue;this['canvasContext']['beginPath'](),this[_0x59b4f(0x259,0x2b5)][_0x59b4f(0x365,0x376)]=this['lineWidth'],this[_0x461675(0x4c7,0x4fd)][_0x461675(0x5a4,0x52a)]=this[_0x59b4f(0x35c,0x2de)][_0x461675(0x4db,0x536)](_0x2749d3['speed']),this['canvasContext']['moveTo'](_0x4ea3d7[0x0],_0x4ea3d7[0x1]),this['canvasContext'][_0x461675(0x47b,0x4be)](_0x32f403[0x0],_0x32f403[0x1]),this['canvasContext'][_0x59b4f(0x2ec,0x29f)]();}else{this[_0x461675(0x4fd,0x4fd)]['beginPath'](),this[_0x59b4f(0x31a,0x2b5)][_0x461675(0x626,0x5be)]=this['lineWidth'],this['canvasContext'][_0x59b4f(0x34c,0x2e2)]=this['color'];for(let _0x4490ed=0x0,_0x51e2b5=_0xf2c0b1['length'];_0x4490ed<_0x51e2b5;_0x4490ed++){const _0x411ed9=_0xf2c0b1[_0x4490ed],_0x41117c=this['_tomap'](_0x411ed9['lng'],_0x411ed9[_0x59b4f(0x37c,0x334)],_0x411ed9),_0x15ee73=this[_0x461675(0x5aa,0x5ba)](_0x411ed9['tlng'],_0x411ed9['tlat'],_0x411ed9);if(!_0x41117c||!_0x15ee73)continue;if(_0x451405&&Math['abs'](_0x41117c[0x0]-_0x15ee73[0x0])>=_0x2935f8)continue;this['canvasContext']['moveTo'](_0x41117c[0x0],_0x41117c[0x1]),this['canvasContext']['lineTo'](_0x15ee73[0x0],_0x15ee73[0x1]);}this['canvasContext'][_0x461675(0x511,0x4e7)]();}}['_tomap'](_0x9f83c9,_0x3034b8,_0x2c81e3){function _0x7e1156(_0x4411a8,_0x52730c){return _0x5bac0c(_0x4411a8,_0x52730c- -0x65d);}const _0x23bca7=Cesium[_0x58e251(0xb7,0x4b)][_0x7e1156(-0x1fb,-0x226)](_0x9f83c9,_0x3034b8,this['fixedHeight']),_0xca0673=this['_map']['scene'];function _0x58e251(_0xfb2c06,_0x63ee16){return _0x5bac0c(_0xfb2c06,_0x63ee16- -0x3d1);}if(_0xca0673['mode']===Cesium[_0x58e251(0x11,0x64)]['SCENE3D']){const _0x6f92d6=new Cesium[(_0x58e251(0x18,0x98))](_0xca0673['globe']['ellipsoid'],_0xca0673['camera'][_0x7e1156(-0x1b5,-0x22d)]),_0x5be4a1=_0x6f92d6['isPointVisible'](_0x23bca7);if(!_0x5be4a1)return _0x2c81e3['age']=0x0,null;}const _0x34b4cd=mars3d__namespace['PointTrans'][_0x7e1156(-0x137,-0x146)](this['_map'][_0x7e1156(-0x1bd,-0x204)],_0x23bca7);return _0x34b4cd?[_0x34b4cd['x'],_0x34b4cd['y']]:null;}['clear'](){this['windField']['clear']();function _0x38fe59(_0x2460fa,_0x643a03){return _0x5bac0c(_0x643a03,_0x2460fa- -0x4b8);}delete this[_0x38fe59(0x41,0x5a)];}['initWorker'](){this['worker']=new Worker(this['options'][_0x2a1233(0x1d4,0x162)]);function _0x2a1233(_0x5a344a,_0x142e34){return _0x5bac0c(_0x5a344a,_0x142e34- -0x361);}this[_0x2a1233(0x1f2,0x162)][_0x1d1e71(-0x1d9,-0x15c)]=_0x2d8a4c=>{this[_0x1336fa(0x54a,0x5a3)](_0x2d8a4c[_0x543010(0x247,0x275)]['particles']);function _0x1336fa(_0x323fae,_0x3fd182){return _0x2a1233(_0x323fae,_0x3fd182-0x43b);}function _0x543010(_0x188d93,_0x792648){return _0x2a1233(_0x792648,_0x188d93-0xa5);}this[_0x543010(0x266,0x287)]=![];},this['windField']={'init':_0x3b2151=>{const _0xfe6ff1={};function _0x2daf17(_0x46e7d5,_0x55df88){return _0x2a1233(_0x55df88,_0x46e7d5- -0x6a);}_0xfe6ff1[_0x2bb6b3(-0x178,-0x1aa)]='init',_0xfe6ff1['options']=_0x3b2151;function _0x2bb6b3(_0x562037,_0x5c8550){return _0x1d1e71(_0x5c8550,_0x562037- -0x82);}this['worker'][_0x2daf17(0x120,0x10e)](_0xfe6ff1);},'setOptions':_0x4d6cf1=>{const _0x5b2995={};function _0x18ab2d(_0x101f56,_0x4da5e5){return _0x1d1e71(_0x4da5e5,_0x101f56-0x3ec);}function _0x331194(_0x44c806,_0x599843){return _0x2a1233(_0x44c806,_0x599843- -0x2b6);}_0x5b2995[_0x18ab2d(0x2f6,0x2aa)]='setOptions',_0x5b2995['options']=_0x4d6cf1,this[_0x18ab2d(0x321,0x380)]['postMessage'](_0x5b2995);},'setDate':_0x28d5d3=>{const _0x4d3bae={};_0x4d3bae['type']='setDate';function _0x351b79(_0x44c0a3,_0xd237b9){return _0x1d1e71(_0x44c0a3,_0xd237b9-0x576);}_0x4d3bae[_0x351b79(0x502,0x4eb)]=_0x28d5d3;function _0x45030b(_0x15b508,_0x15ddc4){return _0x1d1e71(_0x15ddc4,_0x15b508-0x5ba);}this[_0x45030b(0x4ef,0x4db)][_0x45030b(0x517,0x4b8)](_0x4d3bae);},'update':()=>{if(this['_updateIng2'])return;this['_updateIng2']=!![];function _0x2f09b3(_0x43df56,_0x32bb92){return _0x2a1233(_0x43df56,_0x32bb92-0x2e5);}const _0x2827f5={};_0x2827f5['type']='update',this[_0x2f09b3(0x41f,0x447)]['postMessage'](_0x2827f5);},'clear':()=>{const _0x2b0f6f={};_0x2b0f6f['type']='clear',this['worker']['postMessage'](_0x2b0f6f);}};function _0x1d1e71(_0x3036c6,_0x24915c){return _0x5bac0c(_0x3036c6,_0x24915c- -0x58e);}this[_0x1d1e71(-0xfb,-0x85)]['init'](this['options']);}}mars3d__namespace['LayerUtil']['register'](_0x5bac0c(0x457,0x434),CanvasWindLayer),mars3d__namespace['layer']['CanvasWindLayer']=CanvasWindLayer,mars3d__namespace['CanvasWindField']=CanvasWindField,mars3d__namespace[_0x5bac0c(0x55f,0x4d5)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x5bac0c(0x54d,0x4cb)]=CanvasWindLayer,exports['WindLayer']=WindLayer,exports[_0x5bac0c(0x4fc,0x4d5)]=WindUtil;const _0x1efec6={};_0x1efec6[_0x2c6bea(0x225,0x200)]=!![],Object['defineProperty'](exports,_0x5bac0c(0x51a,0x514),_0x1efec6);
14
+ 'use strict';(function(_0x3ecf10,_0x4f50ff){const _0x190415=_0x3ecf10();function _0x31f2e3(_0x1b24b3,_0x5240cb){return _0x8444(_0x1b24b3- -0x25f,_0x5240cb);}function _0x276674(_0x5119f2,_0x11d1b0){return _0x8444(_0x5119f2-0x63,_0x11d1b0);}while(!![]){try{const _0x24cd43=parseInt(_0x31f2e3(-0x136,-0xfa))/0x1+-parseInt(_0x276674(0x1b5,0x18b))/0x2+-parseInt(_0x31f2e3(-0xdb,-0x76))/0x3*(parseInt(_0x31f2e3(-0x118,-0xc8))/0x4)+-parseInt(_0x276674(0x152,0x1c2))/0x5*(-parseInt(_0x31f2e3(-0x12f,-0x18c))/0x6)+-parseInt(_0x276674(0x107,0xbe))/0x7+parseInt(_0x31f2e3(-0xcf,-0x10e))/0x8+parseInt(_0x276674(0x187,0x1bd))/0x9*(-parseInt(_0x276674(0x1ab,0x1e0))/0xa);if(_0x24cd43===_0x4f50ff)break;else _0x190415['push'](_0x190415['shift']());}catch(_0x1dc0ab){_0x190415['push'](_0x190415['shift']());}}}(_0x3e68,0x41138));function _interopNamespace(_0x4e6bf0){if(_0x4e6bf0&&_0x4e6bf0[_0xe71164(0x3fe,0x442)])return _0x4e6bf0;var _0x343527=Object['create'](null);function _0x5b7ae2(_0x38c141,_0x26ba28){return _0x8444(_0x26ba28- -0x199,_0x38c141);}function _0xe71164(_0x43e6b6,_0x3fa30e){return _0x8444(_0x3fa30e-0x2c2,_0x43e6b6);}return _0x4e6bf0&&Object['keys'](_0x4e6bf0)['forEach'](function(_0x2c55a3){function _0x784d5b(_0x459a03,_0x11fe7f){return _0xe71164(_0x11fe7f,_0x459a03- -0x376);}if(_0x2c55a3!==_0x784d5b(0x63,0xdc)){var _0x155ac9=Object['getOwnPropertyDescriptor'](_0x4e6bf0,_0x2c55a3);Object['defineProperty'](_0x343527,_0x2c55a3,_0x155ac9['get']?_0x155ac9:{'enumerable':!![],'get':function(){return _0x4e6bf0[_0x2c55a3];}});}}),_0x343527[_0xe71164(0x437,0x3d9)]=_0x4e6bf0,_0x343527;}var mars3d__namespace=_interopNamespace(mars3d);const Cesium$7=mars3d__namespace['Cesium'];function getU(_0x388c12,_0x359a9f){function _0x265928(_0x1dc47c,_0x4b304f){return _0x8444(_0x1dc47c-0x128,_0x4b304f);}const _0xa25bc5=_0x388c12*Math['cos'](Cesium$7[_0x265928(0x216,0x200)]['toRadians'](_0x359a9f));return _0xa25bc5;}function getV(_0x3a78b3,_0x142474){function _0x29acf7(_0x2a2540,_0x5b3e4b){return _0x8444(_0x5b3e4b- -0x39d,_0x2a2540);}const _0x30920d=_0x3a78b3*Math[_0x458077(0x57,0xc0)](Cesium$7[_0x29acf7(-0x253,-0x2af)]['toRadians'](_0x142474));function _0x458077(_0x13f21b,_0x15367d){return _0x8444(_0x13f21b- -0x94,_0x15367d);}return _0x30920d;}function getSpeed(_0x50daa5,_0x23de9b){function _0x399b89(_0x29efc0,_0xc22ee){return _0x8444(_0xc22ee- -0x23a,_0x29efc0);}const _0x310f05=Math[_0x399b89(-0x18e,-0x18d)](Math['pow'](_0x50daa5,0x2)+Math['pow'](_0x23de9b,0x2));return _0x310f05;}function getDirection(_0xe46eb8,_0x37d505){function _0x50e10d(_0x47f761,_0x2b0d84){return _0x8444(_0x47f761-0x14c,_0x2b0d84);}let _0xaa5a1b=Cesium$7['Math'][_0x50e10d(0x22f,0x28d)](Math['atan2'](_0x37d505,_0xe46eb8));return _0xaa5a1b+=_0xaa5a1b<0x0?0x168:0x0,_0xaa5a1b;}const _0x1d1ddc={};_0x1d1ddc['__proto__']=null,_0x1d1ddc['getU']=getU,_0x1d1ddc[_0x413bec(0x353,0x3ae)]=getV,_0x1d1ddc['getSpeed']=getSpeed,_0x1d1ddc['getDirection']=getDirection;var WindUtil=_0x1d1ddc;const Cesium$6=mars3d__namespace['Cesium'];class CustomPrimitive{constructor(_0x54b749){this[_0x340cae(-0x255,-0x1e0)]=_0x54b749['commandType'],this[_0x1f5429(0x6,-0x5c)]=_0x54b749[_0x1f5429(0x6,0x2a)];function _0x1f5429(_0x43c530,_0x12f315){return _0x413bec(_0x43c530- -0x29e,_0x12f315);}this['attributeLocations']=_0x54b749[_0x340cae(-0x9c,-0x11f)],this[_0x340cae(-0x148,-0x142)]=_0x54b749['primitiveType'];function _0x340cae(_0x1a80ce,_0x45b33d){return _0x413bec(_0x45b33d- -0x46d,_0x1a80ce);}this['uniformMap']=_0x54b749[_0x340cae(-0x74,-0xfe)],this['vertexShaderSource']=_0x54b749['vertexShaderSource'],this['fragmentShaderSource']=_0x54b749['fragmentShaderSource'],this['rawRenderState']=_0x54b749[_0x340cae(-0x21c,-0x19a)],this['framebuffer']=_0x54b749[_0x340cae(-0x13d,-0x118)],this['outputTexture']=_0x54b749[_0x1f5429(0x3c,0x34)],this[_0x340cae(-0x1c1,-0x1d1)]=_0x54b749['autoClear']??![],this['preExecute']=_0x54b749['preExecute'],this[_0x1f5429(-0x39,-0x3f)]=!![],this[_0x1f5429(-0x3c,-0x87)]=undefined,this['clearCommand']=undefined,this[_0x1f5429(-0x2,-0x6c)]&&(this['clearCommand']=new Cesium$6[(_0x1f5429(-0x33,-0x71))]({'color':new Cesium$6['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':this[_0x340cae(-0xe7,-0x118)],'pass':Cesium$6[_0x1f5429(0xc,-0x15)]['OPAQUE']}));}[_0x413bec(0x307,0x314)](_0xd7af41){function _0x1a8644(_0x3edb02,_0x1eff6d){return _0x413bec(_0x3edb02- -0x86,_0x1eff6d);}function _0x42f12d(_0x41d584,_0x4195e2){return _0x92c83a(_0x41d584,_0x4195e2-0x148);}switch(this['commandType']){case'Draw':{const _0x4a4652=Cesium$6['VertexArray'][_0x1a8644(0x2a4,0x258)]({'context':_0xd7af41,'geometry':this[_0x42f12d(-0x32,-0x86)],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6[_0x1a8644(0x2b9,0x338)]['STATIC_DRAW']}),_0x38016e={};_0x38016e['context']=_0xd7af41,_0x38016e[_0x42f12d(-0x2b,0x24)]=this['attributeLocations'],_0x38016e['vertexShaderSource']=this['vertexShaderSource'],_0x38016e['fragmentShaderSource']=this[_0x42f12d(0x72,0x2f)];const _0x192dec=Cesium$6['ShaderProgram']['fromCache'](_0x38016e),_0xb997a9=Cesium$6['RenderState']['fromCache'](this['rawRenderState']);return new Cesium$6['DrawCommand']({'owner':this,'vertexArray':_0x4a4652,'primitiveType':this['primitiveType'],'uniformMap':this[_0x1a8644(0x2e9,0x35b)],'modelMatrix':Cesium$6['Matrix4'][_0x42f12d(0x28,0x34)],'shaderProgram':_0x192dec,'framebuffer':this[_0x42f12d(0xa1,0x2b)],'renderState':_0xb997a9,'pass':Cesium$6['Pass']['OPAQUE']});}case'Compute':{const _0x3f3fe5={};return _0x3f3fe5['owner']=this,_0x3f3fe5['fragmentShaderSource']=this[_0x42f12d(-0x1d,0x2f)],_0x3f3fe5['uniformMap']=this['uniformMap'],_0x3f3fe5['outputTexture']=this['outputTexture'],_0x3f3fe5['persists']=!![],new Cesium$6['ComputeCommand'](_0x3f3fe5);}}}['setGeometry'](_0xff8f02,_0x5b16fb){function _0x2a1257(_0x19f3c1,_0x5b31aa){return _0x92c83a(_0x5b31aa,_0x19f3c1-0x384);}this['geometry']=_0x5b16fb;function _0x158c3c(_0x3e1466,_0x221d70){return _0x92c83a(_0x3e1466,_0x221d70-0x196);}const _0x467237=Cesium$6['VertexArray'][_0x158c3c(0xcb,0x4e)]({'context':_0xff8f02,'geometry':this['geometry'],'attributeLocations':this['attributeLocations'],'bufferUsage':Cesium$6['BufferUsage'][_0x158c3c(0x15,0x2d)]});this[_0x2a1257(0x174,0x1a8)]['vertexArray']=_0x467237;}[_0x92c83a(-0x12d,-0x13d)](_0x11b423){if(!this[_0x1a869c(0xf3,0x61)])return;if(_0x11b423['mode']!==Cesium$6['SceneMode'][_0x80275a(0x1bb,0x1e8)])return;function _0x1a869c(_0x29cef2,_0x1469c9){return _0x413bec(_0x29cef2- -0x172,_0x1469c9);}!Cesium$6['defined'](this['commandToExecute'])&&(this[_0x1a869c(0xf0,0x152)]=this[_0x1a869c(0x195,0x20f)](_0x11b423['context']));Cesium$6['defined'](this['preExecute'])&&this[_0x80275a(0x196,0x136)]();Cesium$6['defined'](this['clearCommand'])&&_0x11b423['commandList']['push'](this['clearCommand']);function _0x80275a(_0x42b34c,_0x37c7e7){return _0x92c83a(_0x37c7e7,_0x42b34c-0x37f);}_0x11b423['commandList'][_0x1a869c(0x13b,0x17f)](this['commandToExecute']);}['isDestroyed'](){return![];}['destroy'](){function _0x366877(_0x1efc29,_0x5b8bf4){return _0x92c83a(_0x5b8bf4,_0x1efc29-0x119);}if(this['clearCommand']){var _0x5f443f,_0x29dd6a;(_0x5f443f=this[_0x366877(-0xfa,-0x170)])!==null&&_0x5f443f!==void 0x0&&_0x5f443f['vertexArray']&&this[_0x57313c(-0x2e1,-0x2a5)]['vertexArray'][_0x57313c(-0x1dd,-0x17a)](),(_0x29dd6a=this['clearCommand'])!==null&&_0x29dd6a!==void 0x0&&_0x29dd6a[_0x57313c(-0x1d4,-0x21a)]&&this[_0x366877(-0xfa,-0xc0)]['shaderProgram'][_0x366877(0xa,0x49)](),delete this['clearCommand'];}this['commandToExecute']&&(this['commandToExecute']['vertexArray']&&this['commandToExecute']['vertexArray']['destroy'](),this[_0x366877(-0xf7,-0xa7)]['shaderProgram']&&this['commandToExecute']['shaderProgram'][_0x366877(0xa,0x38)](),delete this['commandToExecute']);function _0x57313c(_0x4d6aad,_0x3cc8bf){return _0x413bec(_0x4d6aad- -0x540,_0x3cc8bf);}return Cesium$6[_0x366877(-0x45,-0x46)](this);}}const Cesium$5=mars3d__namespace[_0x413bec(0x350,0x345)],Util=(function(){function _0x5c2b13(_0x29fb07,_0x27bf6d){return _0x413bec(_0x29fb07- -0x3dd,_0x27bf6d);}const _0x579fd2=function(){const _0x3756a0=new Cesium$5['Geometry']({'attributes':new Cesium$5['GeometryAttributes']({'position':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5[_0xafcd8a(0x1eb,0x24e)]['FLOAT'],'componentsPerAttribute':0x3,'values':new Float32Array([-0x1,-0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0,-0x1,0x1,0x0])}),'st':new Cesium$5['GeometryAttribute']({'componentDatatype':Cesium$5['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x2,'values':new Float32Array([0x0,0x0,0x1,0x0,0x1,0x1,0x0,0x1])})}),'indices':new Uint32Array([0x3,0x2,0x0,0x0,0x2,0x1])});function _0xafcd8a(_0xdea7d2,_0x28ae72){return _0x8444(_0xdea7d2-0x6e,_0x28ae72);}return _0x3756a0;},_0x1965b5=function(_0x45ae2f,_0x1865c6){if(Cesium$5[_0x47f6fa(0x428,0x467)](_0x1865c6)){const _0x4b98b4={};_0x4b98b4[_0x211084(0x61,0x72)]=_0x1865c6,_0x45ae2f['source']=_0x4b98b4;}const _0x4c6fc5=new Cesium$5['Texture'](_0x45ae2f);function _0x211084(_0x3aa957,_0x480ec0){return _0x8444(_0x3aa957- -0xf6,_0x480ec0);}function _0x47f6fa(_0x2c1f8b,_0x49ef88){return _0x8444(_0x2c1f8b-0x363,_0x49ef88);}return _0x4c6fc5;},_0x43b291=function(_0x4431df,_0x3388ea,_0x133d1d){function _0x5671e7(_0x5939bc,_0x12bf3d){return _0x8444(_0x12bf3d- -0x212,_0x5939bc);}const _0x3d9a1a={};_0x3d9a1a['context']=_0x4431df,_0x3d9a1a['colorTextures']=[_0x3388ea],_0x3d9a1a[_0x5671e7(-0x84,-0x10b)]=_0x133d1d;const _0x532ac0=new Cesium$5['Framebuffer'](_0x3d9a1a);return _0x532ac0;},_0x362f9e=function(_0x5c9f8f){const _0x2a8df9=!![],_0x12662f=![],_0x100cf5={};_0x100cf5['viewport']=_0x5c9f8f['viewport'],_0x100cf5['depthTest']=_0x5c9f8f[_0x41f28d(0x16d,0x1c6)],_0x100cf5[_0x41f28d(0xc3,0xfc)]=_0x5c9f8f['depthMask'],_0x100cf5[_0x13dfa4(0x445,0x469)]=_0x5c9f8f['blending'];function _0x41f28d(_0x325154,_0x57cd14){return _0x8444(_0x57cd14-0x3f,_0x325154);}const _0x2000bf=_0x100cf5;function _0x13dfa4(_0x22525f,_0x56da44){return _0x8444(_0x56da44-0x381,_0x22525f);}const _0x2104e4=Cesium$5['Appearance']['getDefaultRenderState'](_0x2a8df9,_0x12662f,_0x2000bf);return _0x2104e4;},_0x5d0a3e=function(_0x468ff1){const _0x2f9c78={},_0x2ea80f=Cesium$5['Math']['mod'](_0x468ff1['west'],Cesium$5[_0x36de75(0x245,0x25b)]['TWO_PI']);function _0x8ef052(_0x398707,_0x1801ac){return _0x8444(_0x398707- -0x2e9,_0x1801ac);}const _0x5c8796=Cesium$5['Math']['mod'](_0x468ff1[_0x8ef052(-0x147,-0x1ab)],Cesium$5['Math']['TWO_PI']),_0x5dccd1=_0x468ff1['width'];let _0x503886,_0x28fdc4;_0x5dccd1>Cesium$5['Math'][_0x36de75(0x282,0x249)]?(_0x503886=0x0,_0x28fdc4=Cesium$5['Math']['TWO_PI']):_0x5c8796-_0x2ea80f<_0x5dccd1?(_0x503886=_0x2ea80f,_0x28fdc4=_0x2ea80f+_0x5dccd1):(_0x503886=_0x2ea80f,_0x28fdc4=_0x5c8796);_0x2f9c78['lon']={'min':Cesium$5[_0x36de75(0x299,0x25b)]['toDegrees'](_0x503886),'max':Cesium$5[_0x36de75(0x219,0x25b)]['toDegrees'](_0x28fdc4)};function _0x36de75(_0x3e3542,_0x334ef5){return _0x8444(_0x334ef5-0x16d,_0x3e3542);}const _0x3ca530=_0x468ff1['south'],_0x569b41=_0x468ff1['north'],_0x254aec=_0x468ff1['height'],_0x109199=_0x254aec>Cesium$5['Math']['PI']/0xc?_0x254aec/0x2:0x0;let _0x4719ef=Cesium$5['Math']['clampToLatitudeRange'](_0x3ca530-_0x109199),_0x2bbe39=Cesium$5['Math'][_0x8ef052(-0x20b,-0x1ed)](_0x569b41+_0x109199);return _0x4719ef<-Cesium$5[_0x8ef052(-0x1fb,-0x1ef)]['PI_OVER_THREE']&&(_0x4719ef=-Cesium$5[_0x36de75(0x2ce,0x25b)][_0x8ef052(-0x235,-0x1c6)]),_0x2bbe39>Cesium$5['Math']['PI_OVER_THREE']&&(_0x2bbe39=Cesium$5['Math']['PI_OVER_TWO']),_0x2f9c78['lat']={'min':Cesium$5['Math'][_0x36de75(0x1cc,0x250)](_0x4719ef),'max':Cesium$5['Math'][_0x8ef052(-0x206,-0x26f)](_0x2bbe39)},_0x2f9c78;},_0xd6ecc2={};return _0xd6ecc2['getFullscreenQuad']=_0x579fd2,_0xd6ecc2['createTexture']=_0x1965b5,_0xd6ecc2['createFramebuffer']=_0x43b291,_0xd6ecc2[_0x5c2b13(-0xec,-0xc0)]=_0x362f9e,_0xd6ecc2['viewRectangleToLonLatRange']=_0x5d0a3e,_0xd6ecc2;}());var fullscreenVert='#version\x20300\x20es\x0a\x0ain\x20vec3\x20position;\x0ain\x20vec2\x20st;\x0a\x0aout\x20vec2\x20textureCoordinate;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20textureCoordinate\x20=\x20st;\x0a\x20\x20gl_Position\x20=\x20vec4(position,\x201.0f);\x0a}\x0a',screenDrawFrag='#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20trailsColorTexture;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(trailsColorTexture,\x20textureCoordinate);\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20trailsColor;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a',segmentDrawFrag='#version\x20300\x20es\x0a\x0auniform\x20sampler2D\x20colorTable;\x0auniform\x20bool\x20colour;\x0a\x0ain\x20float\x20heightNormalization;\x0ain\x20float\x20speedNormalization;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20const\x20float\x20zero\x20=\x200.0f;\x0a\x20\x20if(speedNormalization\x20>\x20zero)\x20{\x0a\x20\x20\x20\x20if(colour)\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(heightNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20\x20\x20fragColor\x20=\x20texture(colorTable,\x20vec2(speedNormalization,\x20zero));\x0a\x20\x20\x20\x20}\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(zero);\x0a\x20\x20}\x0a}\x0a',segmentDrawVert='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20st;\x0a//\x20it\x20is\x20not\x20normal\x20itself,\x20but\x20used\x20to\x20control\x20lines\x20drawing\x0ain\x20vec3\x20normal;\x20//\x20(point\x20to\x20use,\x20offset\x20sign,\x20not\x20used\x20component)\x0auniform\x20vec2\x20hRange;\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0a\x0auniform\x20sampler2D\x20previousParticlesPosition;\x0auniform\x20sampler2D\x20currentParticlesPosition;\x0auniform\x20sampler2D\x20postProcessingPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x0a\x0auniform\x20float\x20particleHeight;\x0a\x0auniform\x20float\x20aspect;\x0auniform\x20float\x20pixelSize;\x0auniform\x20float\x20lineWidth;\x0a\x0astruct\x20adjacentPoints\x20{\x0a\x20\x20vec4\x20previous;\x0a\x20\x20vec4\x20current;\x0a\x20\x20vec4\x20next;\x0a};\x0a\x0aout\x20float\x20heightNormalization;\x0aout\x20float\x20speedNormalization;\x0avec3\x20convertCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20WGS84\x20(lon,\x20lat,\x20lev)\x20->\x20ECEF\x20(x,\x20y,\x20z)\x0a\x20\x20\x20\x20//\x20read\x20https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20WGS\x2084\x20geometric\x20constants\x0a\x20\x20float\x20a\x20=\x206378137.0f;\x20//\x20Semi-major\x20axis\x0a\x20\x20float\x20b\x20=\x206356752.3142f;\x20//\x20Semi-minor\x20axis\x0a\x20\x20float\x20e2\x20=\x206.69437999014e-3f;\x20//\x20First\x20eccentricity\x20squared\x0a\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x20\x20float\x20longitude\x20=\x20radians(lonLatLev.x);\x0a\x0a\x20\x20float\x20cosLat\x20=\x20cos(latitude);\x0a\x20\x20float\x20sinLat\x20=\x20sin(latitude);\x0a\x20\x20float\x20cosLon\x20=\x20cos(longitude);\x0a\x20\x20float\x20sinLon\x20=\x20sin(longitude);\x0a\x0a\x20\x20float\x20N_Phi\x20=\x20a\x20/\x20sqrt(1.0f\x20-\x20e2\x20*\x20sinLat\x20*\x20sinLat);\x0a\x20\x20float\x20h\x20=\x20particleHeight\x20+\x20lonLatLev.z;\x20//\x20it\x20should\x20be\x20high\x20enough\x20otherwise\x20the\x20particle\x20may\x20not\x20pass\x20the\x20terrain\x20depth\x20test\x0a\x20\x20vec3\x20cartesian\x20=\x20vec3(0.0f);\x0a\x20\x20cartesian.x\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20cosLon;\x0a\x20\x20cartesian.y\x20=\x20(N_Phi\x20+\x20h)\x20*\x20cosLat\x20*\x20sinLon;\x0a\x20\x20cartesian.z\x20=\x20((b\x20*\x20b)\x20/\x20(a\x20*\x20a)\x20*\x20N_Phi\x20+\x20h)\x20*\x20sinLat;\x0a\x20\x20return\x20cartesian;\x0a}\x0a\x0avec4\x20calculateProjectedCoordinate(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20the\x20range\x20of\x20longitude\x20in\x20Cesium\x20is\x20[-180,\x20180]\x20but\x20the\x20range\x20of\x20longitude\x20in\x20the\x20NetCDF\x20file\x20is\x20[0,\x20360]\x0a\x20\x20\x20\x20//\x20[0,\x20180]\x20is\x20corresponding\x20to\x20[0,\x20180]\x20and\x20[180,\x20360]\x20is\x20corresponding\x20to\x20[-180,\x200]\x0a\x20\x20lonLatLev.x\x20=\x20mod(lonLatLev.x\x20+\x20180.0f,\x20360.0f)\x20-\x20180.0f;\x0a\x20\x20vec3\x20particlePosition\x20=\x20convertCoordinate(lonLatLev);\x0a\x20\x20vec4\x20projectedCoordinate\x20=\x20czm_modelViewProjection\x20*\x20vec4(particlePosition,\x201.0f);\x0a\x20\x20return\x20projectedCoordinate;\x0a}\x0a\x0avec4\x20calculateOffsetOnNormalDirection(vec4\x20pointA,\x20vec4\x20pointB,\x20float\x20offsetSign)\x20{\x0a\x20\x20vec2\x20aspectVec2\x20=\x20vec2(aspect,\x201.0f);\x0a\x20\x20vec2\x20pointA_XY\x20=\x20(pointA.xy\x20/\x20pointA.w)\x20*\x20aspectVec2;\x0a\x20\x20vec2\x20pointB_XY\x20=\x20(pointB.xy\x20/\x20pointB.w)\x20*\x20aspectVec2;\x0a\x0a\x20\x20float\x20offsetLength\x20=\x20lineWidth\x20/\x202.0f;\x0a\x20\x20vec2\x20direction\x20=\x20normalize(pointB_XY\x20-\x20pointA_XY);\x0a\x20\x20vec2\x20normalVector\x20=\x20vec2(-direction.y,\x20direction.x);\x0a\x20\x20normalVector.x\x20=\x20normalVector.x\x20/\x20aspect;\x0a\x20\x20normalVector\x20=\x20offsetLength\x20*\x20normalVector;\x0a\x0a\x20\x20vec4\x20offset\x20=\x20vec4(offsetSign\x20*\x20normalVector,\x200.0f,\x200.0f);\x0a\x20\x20return\x20offset;\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20percent.x\x20=\x20(speed.x\x20-\x20uSpeedRange.x)\x20/\x20(uSpeedRange.y\x20-\x20uSpeedRange.x);\x0a\x20\x20percent.y\x20=\x20(speed.y\x20-\x20vSpeedRange.x)\x20/\x20(vSpeedRange.y\x20-\x20vSpeedRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(speed.z\x20-\x20wSpeedRange.x)\x20/\x20(wSpeedRange.y\x20-\x20wSpeedRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec2\x20particleIndex\x20=\x20st;\x0a\x0a\x20\x20vec3\x20previousPosition\x20=\x20texture(previousParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20currentPosition\x20=\x20texture(currentParticlesPosition,\x20particleIndex).rgb;\x0a\x20\x20vec3\x20nextPosition\x20=\x20texture(postProcessingPosition,\x20particleIndex).rgb;\x0a\x0a\x20\x20float\x20isAnyRandomPointUsed\x20=\x20texture(postProcessingPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(currentParticlesPosition,\x20particleIndex).a\x20+\x0a\x20\x20\x20\x20texture(previousParticlesPosition,\x20particleIndex).a;\x0a\x0a\x20\x20adjacentPoints\x20projectedCoordinates;\x0a\x20\x20if(isAnyRandomPointUsed\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20projectedCoordinates.previous;\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20projectedCoordinates.previous;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20projectedCoordinates.previous\x20=\x20calculateProjectedCoordinate(previousPosition);\x0a\x20\x20\x20\x20projectedCoordinates.current\x20=\x20calculateProjectedCoordinate(currentPosition);\x0a\x20\x20\x20\x20projectedCoordinates.next\x20=\x20calculateProjectedCoordinate(nextPosition);\x0a\x20\x20}\x0a\x0a\x20\x20int\x20pointToUse\x20=\x20int(normal.x);\x0a\x20\x20float\x20offsetSign\x20=\x20normal.y;\x0a\x20\x20vec4\x20offset\x20=\x20vec4(0.0f);\x0a\x20\x20\x20\x20//\x20render\x20lines\x20with\x20triangles\x20and\x20miter\x20joint\x0a\x20\x20\x20\x20//\x20read\x20https://blog.scottlogic.com/2019/11/18/drawing-lines-with-webgl.html\x20for\x20detail\x0a\x20\x20if(pointToUse\x20==\x20-1)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.previous,\x20projectedCoordinates.current,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.previous\x20+\x20offset;\x0a\x20\x20}\x20else\x20if(pointToUse\x20==\x201)\x20{\x0a\x20\x20\x20\x20offset\x20=\x20pixelSize\x20*\x20calculateOffsetOnNormalDirection(projectedCoordinates.current,\x20projectedCoordinates.next,\x20offsetSign);\x0a\x20\x20\x20\x20gl_Position\x20=\x20projectedCoordinates.next\x20+\x20offset;\x0a\x20\x20}\x0a\x0a\x20\x20heightNormalization\x20=\x20(currentPosition.z\x20-\x20hRange.x)\x20/\x20(hRange.y\x20-\x20hRange.x);\x0a\x0a\x20\x20speedNormalization\x20=\x20texture(particlesSpeed,\x20particleIndex).a;\x0a}\x0a',trailDrawFrag=_0x413bec(0x268,0x2cb);const Cesium$4=mars3d__namespace[_0x92c83a(-0x96,-0x122)];class ParticlesRendering{constructor(_0x375745,_0x18c8c1,_0x4fb552,_0x274bda,_0x319fa4){this['colour']=_0x4fb552[_0x1a6c6e(0x32a,0x367)]==='height',this[_0x1a6c6e(0x33f,0x2d7)](_0x375745,_0x18c8c1,_0x4fb552[_0xf22a59(-0x1f,0x48)]);function _0x1a6c6e(_0x5995bb,_0x4ae8b0){return _0x413bec(_0x5995bb-0x1a,_0x4ae8b0);}this['createRenderingFramebuffers'](_0x375745);function _0xf22a59(_0x4d6d7e,_0xadbc3c){return _0x413bec(_0xadbc3c- -0x2c8,_0x4d6d7e);}this[_0xf22a59(0x2f,-0x4)](_0x375745,_0x18c8c1,_0x4fb552,_0x274bda,_0x319fa4);}['createRenderingTextures'](_0x5028a0,_0x3c729f,_0x4c575b){const _0x5e0055={};_0x5e0055['context']=_0x5028a0,_0x5e0055[_0x2cb005(0x196,0x183)]=_0x5028a0['drawingBufferWidth'],_0x5e0055[_0x2cb005(0xed,0x158)]=_0x5028a0[_0x2cb005(0x17d,0x1bb)];function _0x2cb005(_0x29a800,_0x27709e){return _0x92c83a(_0x29a800,_0x27709e-0x2fc);}_0x5e0055['pixelFormat']=Cesium$4['PixelFormat']['RGBA'],_0x5e0055['pixelDatatype']=Cesium$4[_0x4ca2eb(0x8d,0x52)]['UNSIGNED_BYTE'];function _0x4ca2eb(_0xd98e85,_0x4e7de6){return _0x92c83a(_0x4e7de6,_0xd98e85-0x1f4);}const _0x1785fb=_0x5e0055,_0x48322a={};_0x48322a['context']=_0x5028a0,_0x48322a[_0x4ca2eb(0x7b,0x37)]=_0x5028a0['drawingBufferWidth'],_0x48322a['height']=_0x5028a0[_0x2cb005(0x1c4,0x1bb)],_0x48322a['pixelFormat']=Cesium$4['PixelFormat'][_0x4ca2eb(0x3f,-0x2b)],_0x48322a[_0x4ca2eb(0x101,0x184)]=Cesium$4['PixelDatatype'][_0x2cb005(0xa2,0xff)];const _0x1c20d3=_0x48322a,_0x27a846=_0x4c575b['length'],_0x347e8d=new Float32Array(_0x27a846*0x3);for(let _0x39034c=0x0;_0x39034c<_0x27a846;_0x39034c++){const _0x25d8dc=Cesium$4['Color']['fromCssColorString'](_0x4c575b[_0x39034c]);_0x347e8d[0x3*_0x39034c]=_0x25d8dc['red'],_0x347e8d[0x3*_0x39034c+0x1]=_0x25d8dc['green'],_0x347e8d[0x3*_0x39034c+0x2]=_0x25d8dc['blue'];}const _0x67410f={'context':_0x5028a0,'width':_0x27a846,'height':0x1,'pixelFormat':Cesium$4['PixelFormat']['RGB'],'pixelDatatype':Cesium$4['PixelDatatype'][_0x4ca2eb(0x6a,0x40)],'sampler':new Cesium$4[(_0x4ca2eb(0xd4,0x164))]({'minificationFilter':Cesium$4['TextureMinificationFilter'][_0x2cb005(0x184,0x17c)],'magnificationFilter':Cesium$4['TextureMagnificationFilter'][_0x2cb005(0x17e,0x17c)]})};this[_0x2cb005(0x217,0x187)]={'segmentsColor':Util[_0x2cb005(0xc5,0x153)](_0x1785fb),'segmentsDepth':Util[_0x2cb005(0x19f,0x153)](_0x1c20d3),'currentTrailsColor':Util[_0x2cb005(0x138,0x153)](_0x1785fb),'currentTrailsDepth':Util[_0x2cb005(0x16f,0x153)](_0x1c20d3),'nextTrailsColor':Util['createTexture'](_0x1785fb),'nextTrailsDepth':Util['createTexture'](_0x1c20d3),'colorTable':Util[_0x4ca2eb(0x4b,0x5b)](_0x67410f,_0x347e8d)};}[_0x413bec(0x2f8,0x34f)](_0x362b9a){function _0x3058e0(_0x35e45e,_0x4da86b){return _0x92c83a(_0x4da86b,_0x35e45e-0x13e);}function _0x47e290(_0x158411,_0x448964){return _0x413bec(_0x158411- -0x31d,_0x448964);}this[_0x47e290(-0x5,-0x6b)]={'segments':Util['createFramebuffer'](_0x362b9a,this[_0x3058e0(-0x37,-0x62)]['segmentsColor'],this[_0x3058e0(-0x37,-0x7e)]['segmentsDepth']),'currentTrails':Util[_0x3058e0(0x37,-0x21)](_0x362b9a,this[_0x47e290(-0x20,0x1d)]['currentTrailsColor'],this[_0x3058e0(-0x37,-0x5d)]['currentTrailsDepth']),'nextTrails':Util['createFramebuffer'](_0x362b9a,this['textures']['nextTrailsColor'],this['textures']['nextTrailsDepth'])};}['createSegmentsGeometry'](_0x685ddf){const _0x49c0f4=0x4;let _0xfc8c66=[];for(let _0x3209b5=0x0;_0x3209b5<_0x685ddf[_0x566841(-0x2a0,-0x27c)];_0x3209b5++){for(let _0x75488c=0x0;_0x75488c<_0x685ddf[_0x566841(-0x233,-0x27c)];_0x75488c++){for(let _0x522beb=0x0;_0x522beb<_0x49c0f4;_0x522beb++){_0xfc8c66['push'](_0x3209b5/_0x685ddf[_0x566841(-0x278,-0x27c)]),_0xfc8c66['push'](_0x75488c/_0x685ddf['particlesTextureSize']);}}}function _0x3edc9d(_0x59d035,_0x116a1f){return _0x92c83a(_0x116a1f,_0x59d035-0x37f);}function _0x566841(_0x2b1742,_0x1a66b3){return _0x92c83a(_0x2b1742,_0x1a66b3- -0x87);}_0xfc8c66=new Float32Array(_0xfc8c66);let _0x1b6bd0=[];for(let _0x2109e3=0x0;_0x2109e3<_0x685ddf[_0x3edc9d(0x16d,0x1f0)];_0x2109e3++){_0x1b6bd0[_0x3edc9d(0x1ba,0x238)](-0x1,-0x1,0x0,-0x1,0x1,0x0,0x1,-0x1,0x0,0x1,0x1,0x0);}_0x1b6bd0=new Float32Array(_0x1b6bd0);let _0x31613c=[];for(let _0x51c979=0x0,_0x50ec9d=0x0;_0x51c979<_0x685ddf[_0x3edc9d(0x16d,0x1f3)];_0x51c979++){_0x31613c['push'](_0x50ec9d+0x0,_0x50ec9d+0x1,_0x50ec9d+0x2,_0x50ec9d+0x2,_0x50ec9d+0x1,_0x50ec9d+0x3),_0x50ec9d+=_0x49c0f4;}_0x31613c=new Uint32Array(_0x31613c);const _0x40d72d=new Cesium$4[(_0x3edc9d(0x1c1,0x169))]({'attributes':new Cesium$4[(_0x3edc9d(0x28d,0x264))]({'st':new Cesium$4[(_0x566841(-0x232,-0x28a))]({'componentDatatype':Cesium$4['ComponentDatatype'][_0x566841(-0x1eb,-0x211)],'componentsPerAttribute':0x2,'values':_0xfc8c66}),'normal':new Cesium$4[(_0x3edc9d(0x17c,0x172))]({'componentDatatype':Cesium$4['ComponentDatatype']['FLOAT'],'componentsPerAttribute':0x3,'values':_0x1b6bd0})}),'indices':_0x31613c});return _0x40d72d;}[_0x92c83a(-0x1b6,-0x1ae)](_0x20bf5d,_0x39f76a,_0x5221f7,_0x22a140,_0x33d91a){const _0x349abf=this,_0x57f411={};_0x57f411['st']=0x0,_0x57f411['normal']=0x1;const _0x2917a5={};_0x2917a5[_0x5d2cb2(-0xb1,-0x47)]=[segmentDrawVert];const _0x28deca={};_0x28deca['sources']=[segmentDrawFrag];const _0x252b1c={};_0x252b1c[_0x5d2cb2(-0xc6,-0x4d)]=!![];const _0x281460={};_0x281460[_0x5d2cb2(-0xd1,-0x14e)]=undefined,_0x281460['depthTest']=_0x252b1c,_0x281460['depthMask']=!![];const _0x5cb4f5={};_0x5cb4f5['position']=0x0,_0x5cb4f5['st']=0x1;const _0x10a56a={};_0x10a56a[_0x5d2cb2(-0xa6,-0x73)]=['DISABLE_GL_POSITION_LOG_DEPTH'],_0x10a56a['sources']=[fullscreenVert];const _0x8f2e9b={};_0x8f2e9b[_0x5d2cb2(-0xa6,-0x82)]=[_0x5d2cb2(-0xc1,-0xc2)],_0x8f2e9b[_0x5d2cb2(-0xb1,-0xaf)]=[trailDrawFrag];const _0xa566a5={};_0xa566a5[_0x240a43(0x2cd,0x2bd)]=0x0,_0xa566a5['st']=0x1;const _0xa37cd2={};_0xa37cd2[_0x240a43(0x280,0x2b0)]=['DISABLE_GL_POSITION_LOG_DEPTH'];function _0x240a43(_0x15ba27,_0x406f25){return _0x92c83a(_0x406f25,_0x15ba27-0x466);}_0xa37cd2[_0x240a43(0x275,0x2ff)]=[fullscreenVert];const _0x5c8459={};_0x5c8459[_0x5d2cb2(-0xa6,-0xa0)]=['DISABLE_LOG_DEPTH_FRAGMENT_WRITE'],_0x5c8459['sources']=[screenDrawFrag];function _0x5d2cb2(_0x21a988,_0x4b478d){return _0x92c83a(_0x4b478d,_0x21a988-0x140);}const _0x239f2b={};_0x239f2b[_0x5d2cb2(-0xc6,-0xeb)]=![];const _0x319169={};_0x319169['enabled']=!![],this['primitives']={'segments':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0x57f411,'geometry':this[_0x240a43(0x36f,0x2e4)](_0x5221f7),'primitiveType':Cesium$4['PrimitiveType']['TRIANGLES'],'uniformMap':{'previousParticlesPosition':function(){function _0x25ba2b(_0x528b29,_0x42c10e){return _0x240a43(_0x42c10e- -0x187,_0x528b29);}return _0x33d91a['particlesTextures'][_0x25ba2b(0x17f,0x128)];},'currentParticlesPosition':function(){function _0xf56904(_0x211a8b,_0x2692ec){return _0x5d2cb2(_0x2692ec- -0x12d,_0x211a8b);}return _0x33d91a[_0xf56904(-0xf2,-0x163)]['currentParticlesPosition'];},'postProcessingPosition':function(){return _0x33d91a['particlesTextures']['postProcessingPosition'];},'particlesSpeed':function(){return _0x33d91a['particlesTextures']['particlesSpeed'];},'colorTable':function(){function _0x5465d9(_0x447f77,_0xac96a){return _0x5d2cb2(_0xac96a-0x1c9,_0x447f77);}return _0x349abf['textures'][_0x5465d9(0x178,0x166)];},'aspect':function(){function _0x483711(_0x11c9d3,_0x4d7232){return _0x5d2cb2(_0x4d7232-0x3d7,_0x11c9d3);}return _0x20bf5d['drawingBufferWidth']/_0x20bf5d[_0x483711(0x3e1,0x3d6)];},'H':function(){return _0x39f76a['H']['array'];},'hRange':function(){function _0x35f055(_0x319af3,_0x360891){return _0x240a43(_0x319af3- -0x37,_0x360891);}return new Cesium$4['Cartesian2'](_0x39f76a['H'][_0x35f055(0x275,0x293)],_0x39f76a['H']['max']);},'uSpeedRange':function(){function _0x47ad4e(_0x41b5d7,_0x1ca8d4){return _0x240a43(_0x41b5d7-0x1eb,_0x1ca8d4);}function _0x466289(_0x49e38b,_0x208bad){return _0x240a43(_0x208bad- -0x2a5,_0x49e38b);}return new Cesium$4['Cartesian2'](_0x39f76a['U'][_0x466289(0x95,0x7)],_0x39f76a['U'][_0x47ad4e(0x4a4,0x4ce)]);},'vSpeedRange':function(){function _0x11683d(_0x40c751,_0x241d30){return _0x240a43(_0x40c751-0x222,_0x241d30);}function _0x3fd9c0(_0x154559,_0x2e8ac3){return _0x240a43(_0x2e8ac3- -0x10a,_0x154559);}return new Cesium$4[(_0x3fd9c0(0x1bc,0x17e))](_0x39f76a['V']['min'],_0x39f76a['V'][_0x11683d(0x4db,0x492)]);},'wSpeedRange':function(){function _0x3046da(_0x303801,_0x6ed1b2){return _0x5d2cb2(_0x6ed1b2-0x28c,_0x303801);}function _0x446a51(_0x268a2d,_0x1c7197){return _0x240a43(_0x268a2d- -0xe,_0x1c7197);}return new Cesium$4[(_0x446a51(0x27a,0x2b0))](_0x39f76a['W']['min'],_0x39f76a['W'][_0x446a51(0x2ab,0x287)]);},'pixelSize':function(){function _0x5a7992(_0x1b6348,_0x2dc587){return _0x240a43(_0x1b6348- -0x162,_0x2dc587);}return _0x22a140[_0x5a7992(0x131,0x16a)];},'lineWidth':function(){function _0x541f41(_0x1e6af3,_0x19dfdd){return _0x5d2cb2(_0x19dfdd-0xa9,_0x1e6af3);}return _0x5221f7[_0x541f41(0xaf,0x7a)];},'particleHeight':function(){return _0x5221f7['particleHeight'];},'colour':function(){return _0x349abf['colour'];}},'vertexShaderSource':new Cesium$4[(_0x5d2cb2(-0xe,0x21))](_0x2917a5),'fragmentShaderSource':new Cesium$4[(_0x240a43(0x318,0x36b))](_0x28deca),'rawRenderState':Util[_0x5d2cb2(-0x41,-0x18)](_0x281460),'framebuffer':this[_0x240a43(0x30c,0x2ae)]['segments'],'autoClear':!![]}),'trails':new CustomPrimitive({'commandType':_0x5d2cb2(-0xc5,-0x53),'attributeLocations':_0x5cb4f5,'geometry':Util['getFullscreenQuad'](),'primitiveType':Cesium$4[_0x240a43(0x282,0x310)][_0x5d2cb2(-0xaa,-0x40)],'uniformMap':{'segmentsColorTexture':function(){function _0x220dce(_0x1cb860,_0x289ba4){return _0x240a43(_0x289ba4- -0x3ec,_0x1cb860);}return _0x349abf['textures'][_0x220dce(-0x188,-0x102)];},'segmentsDepthTexture':function(){function _0x210c0f(_0x36c848,_0x158351){return _0x240a43(_0x36c848-0x1da,_0x158351);}return _0x349abf[_0x210c0f(0x4cb,0x489)]['segmentsDepth'];},'currentTrailsColor':function(){function _0x252bf8(_0x32b8f2,_0x34d1c2){return _0x5d2cb2(_0x34d1c2- -0x17a,_0x32b8f2);}function _0xe7670f(_0xcfbe38,_0x5e4c2d){return _0x5d2cb2(_0x5e4c2d-0xcd,_0xcfbe38);}return _0x349abf['framebuffers'][_0x252bf8(-0xba,-0x13a)][_0x252bf8(-0x20c,-0x196)](0x0);},'trailsDepthTexture':function(){return _0x349abf['framebuffers']['currentTrails']['depthTexture'];},'fadeOpacity':function(){return _0x5221f7['fadeOpacity'];}},'vertexShaderSource':new Cesium$4[(_0x5d2cb2(-0xe,0x4c))](_0x10a56a),'fragmentShaderSource':new Cesium$4[(_0x5d2cb2(-0xe,0x5d))](_0x8f2e9b),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':{'enabled':!![],'func':Cesium$4['DepthFunction']['ALWAYS']},'depthMask':!![]}),'framebuffer':this['framebuffers']['nextTrails'],'autoClear':!![],'preExecute':function(){if(_0x5221f7[_0x27d06a(-0x126,-0x111)]){const _0x41d417=_0x349abf[_0x5d3b08(0x47b,0x482)]['currentTrails'];_0x349abf[_0x27d06a(-0x82,-0xc5)]['currentTrails']=_0x349abf['framebuffers'][_0x27d06a(-0x1b4,-0x131)],_0x349abf[_0x5d3b08(0x410,0x482)][_0x5d3b08(0x48c,0x416)]=_0x41d417;}function _0x5d3b08(_0x58e182,_0xa85f8c){return _0x5d2cb2(_0xa85f8c-0x49c,_0x58e182);}_0x349abf['primitives']['trails']['commandToExecute'][_0x5d3b08(0x4b4,0x4bf)]=_0x349abf['framebuffers']['nextTrails'];function _0x27d06a(_0x468b2d,_0x90ef12){return _0x5d2cb2(_0x90ef12- -0xab,_0x468b2d);}_0x349abf[_0x5d3b08(0x3d0,0x405)][_0x27d06a(-0x3f,-0xc0)][_0x5d3b08(0x38b,0x3c9)][_0x27d06a(-0xa8,-0x88)]=_0x349abf[_0x5d3b08(0x42c,0x482)][_0x27d06a(-0x1bb,-0x131)];}}),'screen':new CustomPrimitive({'commandType':'Draw','attributeLocations':_0xa566a5,'geometry':Util[_0x5d2cb2(0x25,0x96)](),'primitiveType':Cesium$4[_0x5d2cb2(-0xa4,-0x94)][_0x240a43(0x27c,0x2c7)],'uniformMap':{'trailsColorTexture':function(){function _0x66b39(_0x80ec0a,_0x46611e){return _0x240a43(_0x80ec0a- -0x303,_0x46611e);}function _0x37474a(_0x3d2426,_0x1b679b){return _0x240a43(_0x1b679b- -0x296,_0x3d2426);}return _0x349abf['framebuffers'][_0x37474a(-0x68,0xa)][_0x37474a(0x48,0x74)](0x0);},'trailsDepthTexture':function(){return _0x349abf['framebuffers']['nextTrails']['depthTexture'];}},'vertexShaderSource':new Cesium$4[(_0x5d2cb2(-0xe,0x5e))](_0xa37cd2),'fragmentShaderSource':new Cesium$4['ShaderSource'](_0x5c8459),'rawRenderState':Util['createRawRenderState']({'viewport':undefined,'depthTest':_0x239f2b,'depthMask':!![],'blending':_0x319169}),'framebuffer':undefined})};}}var CalculateSpeedShader=_0x413bec(0x2ee,0x2f3),PostProcessingPositionShader='#version\x20300\x20es\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20nextParticlesPosition;\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x0a\x0auniform\x20sampler2D\x20H;\x20//\x20particles\x20height\x20textures\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20range\x20(min,\x20max)\x0auniform\x20vec2\x20lonRange;\x0auniform\x20vec2\x20latRange;\x0auniform\x20vec2\x20viewerLonRange;\x0auniform\x20vec2\x20viewerLatRange;\x0a\x0aconst\x20float\x20randomCoefficient\x20=\x200.1f;\x20//\x20use\x20to\x20improve\x20the\x20pseudo-random\x20generator\x0aconst\x20float\x20dropRate\x20=\x200.1f;\x20//\x20drop\x20rate\x20is\x20a\x20chance\x20a\x20particle\x20will\x20restart\x20at\x20random\x20position\x20to\x20avoid\x20degeneration\x0aconst\x20float\x20dropRateBump\x20=\x200.1f;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0avec4\x20getTextureValue(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20vec4\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D);\x0a\x20\x20return\x20result;\x0a}\x0a\x0a//\x20pseudo-random\x20generator\x0aconst\x20vec3\x20randomConstants\x20=\x20vec3(12.9898f,\x2078.233f,\x204375.85453f);\x0aconst\x20vec2\x20normalRange\x20=\x20vec2(0.0f,\x201.0f);\x0afloat\x20rand(vec2\x20seed,\x20vec2\x20range)\x20{\x0a\x20\x20vec2\x20randomSeed\x20=\x20randomCoefficient\x20*\x20seed;\x0a\x20\x20float\x20temp\x20=\x20dot(randomConstants.xy,\x20randomSeed);\x0a\x20\x20temp\x20=\x20fract(sin(temp)\x20*\x20(randomConstants.z\x20+\x20temp));\x0a\x20\x20return\x20temp\x20*\x20(range.y\x20-\x20range.x)\x20+\x20range.x;\x0a}\x0a\x0abool\x20particleNoSpeed(vec3\x20particle)\x20{\x0a\x20\x20vec4\x20speed\x20=\x20getTextureValue(particlesSpeed,\x20particle);\x0a\x20\x20return\x20speed.r\x20==\x200.0f\x20&&\x20speed.g\x20==\x200.0f;\x0a}\x0a\x0avec3\x20generateRandomParticle(vec2\x20seed,\x20float\x20lev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20longitude\x20is\x20in\x20[0,\x20360]\x0a\x20\x20float\x20randomLon\x20=\x20mod(rand(seed,\x20lonRange),\x20360.0f);\x0a\x20\x20float\x20randomLat\x20=\x20rand(-seed,\x20latRange);\x0a\x0a\x20\x20float\x20height\x20=\x20getTextureValue(H,\x20vec3(randomLon,\x20randomLat,\x20lev)).r;\x0a\x0a\x20\x20return\x20vec3(randomLon,\x20randomLat,\x20height);\x0a}\x0a\x0abool\x20particleOutbound(vec3\x20particle)\x20{\x0a\x20\x20return\x20particle.y\x20<\x20viewerLatRange.x\x20||\x20particle.y\x20>\x20viewerLatRange.y\x20||\x20particle.x\x20<\x20viewerLonRange.x\x20||\x20particle.x\x20>\x20viewerLonRange.y;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20vec3\x20nextParticle\x20=\x20texture(nextParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec4\x20nextSpeed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates);\x0a\x20\x20float\x20speedNorm\x20=\x20nextSpeed.a;\x0a\x20\x20float\x20particleDropRate\x20=\x20dropRate\x20+\x20dropRateBump\x20*\x20speedNorm;\x0a\x0a\x20\x20vec2\x20seed1\x20=\x20nextParticle.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec2\x20seed2\x20=\x20nextSpeed.xy\x20+\x20v_textureCoordinates;\x0a\x20\x20vec3\x20randomParticle\x20=\x20generateRandomParticle(seed1,\x20nextParticle.z);\x0a\x20\x20float\x20randomNumber\x20=\x20rand(seed2,\x20normalRange);\x0a\x0a\x20\x20if(randomNumber\x20<\x20particleDropRate\x20||\x20particleOutbound(nextParticle))\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(randomParticle,\x201.0f);\x20//\x201.0\x20means\x20this\x20is\x20a\x20random\x20particle\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x0a}\x0a',UpdatePositionShader=_0x92c83a(-0x214,-0x1f2);function _0x413bec(_0x1c1f0c,_0x3beb87){return _0x8444(_0x1c1f0c-0x1ba,_0x3beb87);}const Cesium$3=mars3d__namespace['Cesium'];class ParticlesComputing{constructor(_0x449949,_0x51aaf2,_0x2d083a,_0x77dcd6){function _0x3bd22e(_0x5d0bff,_0x274f32){return _0x413bec(_0x5d0bff- -0x16e,_0x274f32);}this[_0x4ddeb2(0x14,0x8c)]=_0x51aaf2;function _0x4ddeb2(_0x45add7,_0x5f42e6){return _0x92c83a(_0x45add7,_0x5f42e6-0x1d8);}this[_0x4ddeb2(0x17,0x9e)](_0x449949,_0x51aaf2),this[_0x4ddeb2(0x87,0x33)](_0x449949,_0x2d083a,_0x77dcd6),this[_0x4ddeb2(0x4f,0x7d)](_0x51aaf2,_0x2d083a,_0x77dcd6);}['createWindTextures'](_0x5addc4,_0x1b0ef3){function _0x234403(_0x4e9411,_0x242663){return _0x413bec(_0x242663-0xa0,_0x4e9411);}var _0x4152f2;const _0x4ea216={'context':_0x5addc4,'width':_0x1b0ef3[_0x3d6645(0x370,0x37e)][_0x3d6645(0x452,0x3d5)],'height':_0x1b0ef3['dimensions']['lat']*(_0x1b0ef3[_0x234403(0x392,0x37f)]['lev']||0x1),'pixelFormat':Cesium$3['PixelFormat']['RED'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3['Sampler']({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3[_0x3d6645(0x2dc,0x355)]['NEAREST']})};function _0x3d6645(_0x110c6b,_0x5342a0){return _0x413bec(_0x5342a0-0x9f,_0x110c6b);}this['windTextures']={'U':Util['createTexture'](_0x4ea216,_0x1b0ef3['U'][_0x234403(0x2a5,0x322)]),'V':Util['createTexture'](_0x4ea216,_0x1b0ef3['V'][_0x3d6645(0x2d2,0x321)]),'W':Util[_0x234403(0x396,0x369)](_0x4ea216,((_0x4152f2=_0x1b0ef3['W'])===null||_0x4152f2===void 0x0?void 0x0:_0x4152f2[_0x3d6645(0x37e,0x321)])??_0x1b0ef3['U'][_0x3d6645(0x298,0x321)]),'H':Util['createTexture'](_0x4ea216,_0x1b0ef3['H']['array'])};}['createParticlesTextures'](_0x15b209,_0x3a905e,_0x477701){const _0x276ac9={'context':_0x15b209,'width':_0x3a905e['particlesTextureSize'],'height':_0x3a905e[_0x2e66b1(0x3ee,0x45d)],'pixelFormat':Cesium$3[_0x2b0ee6(0x17b,0x101)]['RGBA'],'pixelDatatype':Cesium$3['PixelDatatype']['FLOAT'],'flipY':![],'sampler':new Cesium$3[(_0x2b0ee6(0xf6,0x125))]({'minificationFilter':Cesium$3['TextureMinificationFilter']['NEAREST'],'magnificationFilter':Cesium$3['TextureMagnificationFilter'][_0x2e66b1(0x426,0x4a8)]})};function _0x2e66b1(_0x498165,_0x1deadc){return _0x413bec(_0x1deadc-0x1e0,_0x498165);}const _0x50c192=this[_0x2e66b1(0x519,0x52f)](_0x3a905e[_0x2b0ee6(0x4f,0x33)],_0x477701);function _0x2b0ee6(_0x7dff59,_0x1c7c90){return _0x413bec(_0x1c7c90- -0x22d,_0x7dff59);}const _0x249eb0=new Float32Array(0x4*_0x3a905e['maxParticles'])['fill'](0x0);this['particlesTextures']={'previousParticlesPosition':Util[_0x2b0ee6(0xd0,0x9c)](_0x276ac9,_0x50c192),'currentParticlesPosition':Util['createTexture'](_0x276ac9,_0x50c192),'nextParticlesPosition':Util['createTexture'](_0x276ac9,_0x50c192),'postProcessingPosition':Util['createTexture'](_0x276ac9,_0x50c192),'particlesSpeed':Util['createTexture'](_0x276ac9,_0x249eb0)};}[_0x413bec(0x34f,0x32c)](_0x39cbe4,_0x2e0b79){function _0x390f0a(_0x66b871,_0xf4339f){return _0x413bec(_0x66b871- -0x3c3,_0xf4339f);}const _0x4652eb=new Float32Array(0x4*_0x39cbe4);for(let _0x45b276=0x0;_0x45b276<_0x39cbe4;_0x45b276++){_0x4652eb[0x4*_0x45b276]=Cesium$3[_0x3b988a(-0x8c,-0x80)][_0x390f0a(-0x147,-0x14c)](_0x2e0b79['lonRange']['x'],_0x2e0b79['lonRange']['y']),_0x4652eb[0x4*_0x45b276+0x1]=Cesium$3['Math']['randomBetween'](_0x2e0b79[_0x390f0a(-0x4f,-0xd6)]['x'],_0x2e0b79['latRange']['y']),_0x4652eb[0x4*_0x45b276+0x2]=Cesium$3['Math'][_0x390f0a(-0x147,-0xb7)](this[_0x390f0a(-0x9d,-0x115)][_0x3b988a(-0x5e,-0x58)]['min'],this['data'][_0x3b988a(-0xe,-0x58)][_0x3b988a(-0x8f,-0x63)]),_0x4652eb[0x4*_0x45b276+0x3]=0x0;}function _0x3b988a(_0x45afc0,_0x215dfd){return _0x413bec(_0x215dfd- -0x328,_0x45afc0);}return _0x4652eb;}[_0x92c83a(-0x177,-0xfb)](_0xb61dbf){function _0x1fa775(_0x43b74f,_0x24540d){return _0x413bec(_0x43b74f- -0x344,_0x24540d);}const _0x30bf76=[_0xb61dbf['dimensions']['lon'],_0xb61dbf[_0x431eb9(0x212,0x241)][_0x1fa775(-0x50,-0x9c)],_0xb61dbf[_0x431eb9(0x212,0x1b2)][_0x431eb9(0x203,0x1d2)]],_0x14a695=[_0xb61dbf['lon']['min'],_0xb61dbf['lat'][_0x431eb9(0x1eb,0x1ca)],_0xb61dbf['lev']['min']],_0xcada52=[_0xb61dbf[_0x1fa775(-0xe,-0x2f)][_0x431eb9(0x1f8,0x1ef)],_0xb61dbf['lat'][_0x431eb9(0x1f8,0x171)],_0xb61dbf['lev']['max']],_0x5bdd33=[(_0xcada52[0x0]-_0x14a695[0x0])/(_0x30bf76[0x0]-0x1),(_0xcada52[0x1]-_0x14a695[0x1])/(_0x30bf76[0x1]-0x1),_0x30bf76[0x2]>0x1?(_0xcada52[0x2]-_0x14a695[0x2])/(_0x30bf76[0x2]-0x1):0x1],_0x271f66=Math['floor'](Math[_0x431eb9(0x284,0x274)]()*_0xb61dbf['U'][_0x1fa775(-0xc2,-0x85)]['length']),_0x216198=_0x271f66%(_0x30bf76[0x0]*_0x30bf76[0x1]);function _0x431eb9(_0x4ac309,_0x23fcd2){return _0x413bec(_0x4ac309- -0xcd,_0x23fcd2);}const _0x5ce0a7=Math['floor'](_0x216198/_0x30bf76[0x0]),_0x2e63b3=_0x216198%_0x30bf76[0x0],_0x55db91=Cesium$3['Math']['randomBetween'](_0x14a695[0x0]+_0x2e63b3*_0x5bdd33[0x0],_0x14a695[0x0]+(_0x2e63b3+0x1)*_0x5bdd33[0x0]),_0x3f6bcb=Cesium$3['Math'][_0x1fa775(-0xc8,-0x66)](_0x14a695[0x1]+(_0x5ce0a7-0x1)*_0x5bdd33[0x1],_0x14a695[0x1]+_0x5ce0a7*_0x5bdd33[0x1]),_0x243c88=_0xb61dbf['H'][_0x431eb9(0x1b5,0x1a3)][_0x271f66]||0x0;return[_0x55db91,_0x3f6bcb,_0x243c88];}['destroyParticlesTextures'](){function _0x4ddd0a(_0xb1b88,_0x2787ca){return _0x413bec(_0xb1b88- -0x584,_0x2787ca);}function _0x1454bd(_0x5dcadb,_0x110864){return _0x92c83a(_0x110864,_0x5dcadb-0x287);}Object['keys'](this[_0x4ddd0a(-0x288,-0x2f0)])[_0x4ddd0a(-0x29e,-0x218)](_0xa8f1fc=>{function _0x16c943(_0x35c280,_0x5acb90){return _0x4ddd0a(_0x35c280-0x3b9,_0x5acb90);}this[_0x16c943(0x131,0xf7)][_0xa8f1fc]['destroy']();});}[_0x413bec(0x317,0x370)](_0x539a3b,_0x2ba3d5,_0x59b956){const _0x3dc96b=new Cesium$3['Cartesian3'](_0x539a3b['dimensions'][_0x236f73(0x214,0x273)],_0x539a3b[_0x30960b(0x199,0x215)][_0x30960b(0x1ac,0x22a)],_0x539a3b[_0x236f73(0x263,0x21c)]['lev']);function _0x236f73(_0x3af4ad,_0x2cb249){return _0x413bec(_0x2cb249- -0xc3,_0x3af4ad);}const _0x2e6765=new Cesium$3['Cartesian3'](_0x539a3b['lon']['min'],_0x539a3b['lat']['min'],_0x539a3b[_0x236f73(0x1c9,0x20d)]['min']),_0xc8d2ea=new Cesium$3['Cartesian3'](_0x539a3b['lon'][_0x236f73(0x268,0x202)],_0x539a3b[_0x30960b(0x212,0x22a)]['max'],_0x539a3b['lev']['max']),_0x22bdb7=new Cesium$3['Cartesian3']((_0xc8d2ea['x']-_0x2e6765['x'])/(_0x3dc96b['x']-0x1),(_0xc8d2ea['y']-_0x2e6765['y'])/(_0x3dc96b['y']-0x1),_0x3dc96b['z']>0x1?(_0xc8d2ea['z']-_0x2e6765['z'])/(_0x3dc96b['z']-0x1):0x1),_0x4fddf8=new Cesium$3[(_0x236f73(0x222,0x1d1))](_0x539a3b[_0x236f73(0x2b2,0x273)][_0x30960b(0x209,0x1ee)],_0x539a3b['lon'][_0x236f73(0x187,0x202)]),_0xaf08f1=new Cesium$3['Cartesian2'](_0x539a3b[_0x236f73(0x1af,0x231)]['min'],_0x539a3b[_0x236f73(0x2a3,0x231)][_0x30960b(0x180,0x1fb)]),_0x13d50d=new Cesium$3['Cartesian2'](_0x539a3b['U'][_0x236f73(0x1c9,0x1f5)],_0x539a3b['U']['max']),_0x3b0411=new Cesium$3['Cartesian2'](_0x539a3b['V']['min'],_0x539a3b['V'][_0x30960b(0x24e,0x1fb)]),_0x535abd=new Cesium$3['Cartesian2'](_0x539a3b['W'][_0x236f73(0x1e3,0x1f5)],_0x539a3b['W'][_0x236f73(0x1f4,0x202)]),_0x433c9b=this,_0x166d1f={};_0x166d1f['U']=function(){function _0x2e21fa(_0x5bbf8c,_0x586960){return _0x30960b(_0x586960,_0x5bbf8c- -0x168);}return _0x433c9b[_0x2e21fa(0x79,0x7d)]['U'];},_0x166d1f['V']=function(){function _0x12ed80(_0x5aad3e,_0x34dafa){return _0x30960b(_0x5aad3e,_0x34dafa- -0xbe);}return _0x433c9b[_0x12ed80(0x156,0x123)]['V'];};function _0x30960b(_0x3adf13,_0x52c5c8){return _0x92c83a(_0x3adf13,_0x52c5c8-0x3a8);}_0x166d1f['W']=function(){function _0x596940(_0x2db279,_0x1a3384){return _0x236f73(_0x2db279,_0x1a3384-0x22);}return _0x433c9b[_0x596940(0x296,0x20a)]['W'];},_0x166d1f[_0x30960b(0x30b,0x296)]=function(){return _0x433c9b['particlesTextures']['currentParticlesPosition'];},_0x166d1f['dimension']=function(){return _0x3dc96b;},_0x166d1f['minimum']=function(){return _0x2e6765;},_0x166d1f['maximum']=function(){return _0xc8d2ea;},_0x166d1f[_0x30960b(0x1b9,0x218)]=function(){return _0x22bdb7;},_0x166d1f[_0x236f73(0x278,0x214)]=function(){return _0x13d50d;},_0x166d1f['vSpeedRange']=function(){return _0x3b0411;},_0x166d1f[_0x30960b(0x218,0x1c5)]=function(){return _0x535abd;},_0x166d1f['speedScaleFactor']=function(){function _0x5a8fab(_0x13c863,_0x1974eb){return _0x30960b(_0x1974eb,_0x13c863- -0x34a);}return _0x59b956[_0x5a8fab(-0x175,-0x12e)]*_0x2ba3d5['speedFactor'];};const _0x3a324f={};_0x3a324f['sources']=[CalculateSpeedShader];const _0x3ef068={};_0x3ef068['sources']=[UpdatePositionShader];const _0x34c045={};_0x34c045[_0x30960b(0x138,0x1b7)]=[PostProcessingPositionShader],this['primitives']={'calculateSpeed':new CustomPrimitive({'commandType':_0x30960b(0x2ae,0x273),'uniformMap':_0x166d1f,'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x3a324f),'outputTexture':this['particlesTextures'][_0x30960b(0x1b4,0x1e9)],'preExecute':function(){if(_0x2ba3d5!==undefined&&_0x2ba3d5[_0x2573bd(-0x267,-0x20d)]){const _0x3ff531=_0x433c9b[_0x31cf33(-0x2f7,-0x2a2)]['previousParticlesPosition'];_0x433c9b[_0x31cf33(-0x29b,-0x2a2)]['previousParticlesPosition']=_0x433c9b['particlesTextures'][_0x2573bd(-0x1d3,-0x265)],_0x433c9b[_0x31cf33(-0x308,-0x2a2)]['currentParticlesPosition']=_0x433c9b['particlesTextures']['postProcessingPosition'],_0x433c9b[_0x2573bd(-0x237,-0x240)]['postProcessingPosition']=_0x3ff531;}function _0x2573bd(_0x260813,_0x599072){return _0x30960b(_0x599072,_0x260813- -0x469);}function _0x31cf33(_0x37bc90,_0x5c859a){return _0x30960b(_0x37bc90,_0x5c859a- -0x4d4);}_0x433c9b['primitives']['calculateSpeed']['commandToExecute'][_0x31cf33(-0x2f3,-0x2c4)]=_0x433c9b[_0x2573bd(-0x237,-0x288)]['particlesSpeed'];}}),'updatePosition':new CustomPrimitive({'commandType':_0x236f73(0x22a,0x27a),'uniformMap':{'currentParticlesPosition':function(){return _0x433c9b['particlesTextures']['currentParticlesPosition'];},'particlesSpeed':function(){function _0x5cd9b4(_0x3e7482,_0xf5b533){return _0x30960b(_0x3e7482,_0xf5b533- -0x15b);}return _0x433c9b['particlesTextures'][_0x5cd9b4(0x25,0x8e)];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x3ef068),'outputTexture':this[_0x236f73(0x1e9,0x239)]['nextParticlesPosition'],'preExecute':function(){function _0x3377f0(_0x543820,_0x4d3a30){return _0x236f73(_0x543820,_0x4d3a30-0x87);}function _0x16bfff(_0x114c04,_0x20e002){return _0x236f73(_0x114c04,_0x20e002-0x3c);}_0x433c9b['primitives']['updatePosition']['commandToExecute'][_0x16bfff(0x2b3,0x253)]=_0x433c9b[_0x3377f0(0x31f,0x2c0)]['nextParticlesPosition'];}}),'postProcessingPosition':new CustomPrimitive({'commandType':'Compute','uniformMap':{'nextParticlesPosition':function(){return _0x433c9b['particlesTextures']['nextParticlesPosition'];},'particlesSpeed':function(){return _0x433c9b['particlesTextures']['particlesSpeed'];},'viewerLonRange':function(){return _0x59b956['lonRange'];},'viewerLatRange':function(){return _0x59b956['latRange'];},'lonRange':function(){return _0x4fddf8;},'latRange':function(){return _0xaf08f1;},'dimension':function(){return _0x3dc96b;},'minimum':function(){return _0x2e6765;},'maximum':function(){return _0xc8d2ea;},'interval':function(){return _0x22bdb7;},'H':function(){return _0x433c9b['windTextures']['H'];},'randomCoefficient':function(){const _0x510dab=Math['random']();return _0x510dab;},'dropRate':function(){function _0x1c462b(_0x4342dd,_0x25e3c9){return _0x30960b(_0x4342dd,_0x25e3c9- -0xe2);}return _0x2ba3d5[_0x1c462b(0x170,0x1a0)];},'dropRateBump':function(){return _0x2ba3d5['dropRateBump'];}},'fragmentShaderSource':new Cesium$3['ShaderSource'](_0x34c045),'outputTexture':this[_0x236f73(0x25a,0x239)]['postProcessingPosition'],'preExecute':function(){function _0x21989b(_0x20d5fd,_0xb8fdbe){return _0x30960b(_0x20d5fd,_0xb8fdbe-0x4c);}function _0x407e79(_0x55f41c,_0x49f1bb){return _0x30960b(_0x49f1bb,_0x55f41c-0x24f);}_0x433c9b[_0x21989b(0x206,0x21d)]['postProcessingPosition']['commandToExecute']['outputTexture']=_0x433c9b[_0x21989b(0x2ab,0x27e)]['postProcessingPosition'];}})};}}const Cesium$2=mars3d__namespace['Cesium'];class ParticleSystem{constructor(_0xbb6bc4,_0x420644,_0xfc65a,_0x3c1bb1){this['context']=_0xbb6bc4;function _0xbd39e(_0x57cbe6,_0xfc6cf3){return _0x92c83a(_0xfc6cf3,_0x57cbe6-0x3a6);}_0x420644={..._0x420644};_0x420644['udata']&&_0x420644['vdata']&&(_0x420644[_0x296226(0x195,0x206)]={},_0x420644['dimensions']['lon']=_0x420644['cols'],_0x420644['dimensions']['lat']=_0x420644['rows'],_0x420644[_0xbd39e(0x213,0x297)][_0xbd39e(0x204,0x1bd)]=_0x420644[_0xbd39e(0x204,0x22d)]||0x1,_0x420644['lon']={},_0x420644['lon']['min']=_0x420644[_0x296226(0x152,0x1d9)],_0x420644['lon']['max']=_0x420644[_0xbd39e(0x220,0x18f)],_0x420644['lat']={},_0x420644['lat']['min']=_0x420644['ymin'],_0x420644[_0x296226(0x1aa,0x21b)][_0x296226(0x26f,0x1ec)]=_0x420644['ymax'],_0x420644['lev']={},_0x420644['lev']['min']=_0x420644[_0xbd39e(0x253,0x299)]??0x1,_0x420644['lev']['max']=_0x420644[_0xbd39e(0x27c,0x24b)]??0x1,_0x420644['U']={},_0x420644['U'][_0x296226(0x146,0x1a9)]=new Float32Array(_0x420644[_0x296226(0x1c5,0x1cd)]),_0x420644['U']['min']=_0x420644['umin']??Math['min'](..._0x420644[_0x296226(0x20e,0x1cd)]),_0x420644['U']['max']=_0x420644['umax']??Math[_0x296226(0x235,0x1ec)](..._0x420644[_0xbd39e(0x1da,0x1c9)]),_0x420644['V']={},_0x420644['V']['array']=new Float32Array(_0x420644['vdata']),_0x420644['V'][_0x296226(0x255,0x1df)]=_0x420644['vmin']??Math['min'](..._0x420644[_0x296226(0x1a5,0x1ce)]),_0x420644['V'][_0xbd39e(0x1f9,0x179)]=_0x420644['vmax']??Math['max'](..._0x420644['vdata']));!_0x420644['W']&&(_0x420644['W']={'array':new Float32Array(_0x420644['U']['array'][_0x296226(0x28c,0x259)]),'min':0x0,'max':0x0});if(!_0x420644['H']){var _0x2c24a3;_0x420644['H']={'array':new Float32Array(_0x420644['U']['array']['length']),'min':0x0,'max':0x0};if((_0x2c24a3=_0x420644['lev'])!==null&&_0x2c24a3!==void 0x0&&_0x2c24a3['array']){const {lon:_0x4a6388,lat:_0xb4f95b,lev:_0x3688d1}=_0x420644['dimensions'];for(let _0x273d9e=0x0;_0x273d9e<_0x3688d1;_0x273d9e++){for(let _0x1efa1e=0x0;_0x1efa1e<_0xb4f95b;_0x1efa1e++){for(let _0x2cf948=0x0;_0x2cf948<_0x4a6388;_0x2cf948++){const _0x5d0a53=_0x273d9e*(_0x4a6388*_0xb4f95b)+_0x1efa1e*_0x4a6388+_0x2cf948;_0x420644['H']['array'][_0x5d0a53]=_0x420644[_0x296226(0x22f,0x1f7)]['array'][_0x273d9e];}}}_0x420644['H'][_0x296226(0x14e,0x1df)]=Math[_0x296226(0x169,0x1df)](..._0x420644['lev']['array']),_0x420644['H']['max']=Math['max'](..._0x420644['lev']['array']);}}this['data']=_0x420644,this['options']=_0xfc65a,this['viewerParameters']=_0x3c1bb1;function _0x296226(_0x4cbc7b,_0x328f0f){return _0x413bec(_0x328f0f- -0xd9,_0x4cbc7b);}this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this['options'],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this[_0x296226(0x2b2,0x24d)],this[_0xbd39e(0x29d,0x2f9)],this[_0xbd39e(0x1ba,0x210)],this['particlesComputing']);}['canvasResize'](_0x34a80e){this[_0x30b07e(0x272,0x204)][_0x30b07e(0x238,0x245)](),Object[_0x30b07e(0x223,0x272)](this[_0x30b07e(0x272,0x274)][_0x144456(-0x2ae,-0x262)])[_0x144456(-0x273,-0x288)](_0x2d9c02=>{function _0x298186(_0x11fda7,_0xe55f86){return _0x30b07e(_0xe55f86- -0x2c3,_0x11fda7);}this['particlesComputing']['windTextures'][_0x2d9c02][_0x298186(-0x11,0xe)]();}),this['particlesRendering']['textures']['colorTable']['destroy']();function _0x144456(_0x5bd849,_0x4b99a1){return _0x92c83a(_0x4b99a1,_0x5bd849- -0xe7);}Object['keys'](this['particlesRendering'][_0x30b07e(0x286,0x2cd)])[_0x144456(-0x273,-0x2df)](_0x35c7cc=>{function _0x35f493(_0x25de79,_0x2a6edb){return _0x144456(_0x25de79-0x73d,_0x2a6edb);}this['particlesRendering'][_0x35f493(0x4fc,0x49e)][_0x35c7cc]['destroy']();});function _0x30b07e(_0x38b756,_0x4914c0){return _0x413bec(_0x38b756- -0x92,_0x4914c0);}this[_0x144456(-0x23b,-0x2a1)]=_0x34a80e,this['particlesComputing']=new ParticlesComputing(this['context'],this['data'],this[_0x30b07e(0x2d7,0x34f)],this['viewerParameters']),this['particlesRendering']=new ParticlesRendering(this['context'],this['data'],this[_0x30b07e(0x2d7,0x32a)],this['viewerParameters'],this[_0x144456(-0x255,-0x1e8)]);}['clearFramebuffers'](){const _0x41664f=new Cesium$2[(_0x22527e(-0xd5,-0x5c))]({'color':new Cesium$2['Color'](0x0,0x0,0x0,0x0),'depth':0x1,'framebuffer':undefined,'pass':Cesium$2['Pass']['OPAQUE']});function _0x397e0f(_0x37bc06,_0x3365d8){return _0x92c83a(_0x3365d8,_0x37bc06-0x3a4);}function _0x22527e(_0x2f1ed5,_0x4ecc05){return _0x413bec(_0x4ecc05- -0x2c7,_0x2f1ed5);}Object['keys'](this['particlesRendering'][_0x397e0f(0x24a,0x20b)])[_0x397e0f(0x218,0x23f)](_0x268b69=>{function _0x53be29(_0xd577a0,_0x2f80e7){return _0x397e0f(_0x2f80e7-0x39,_0xd577a0);}function _0x32dadd(_0x7b08e3,_0x30011f){return _0x397e0f(_0x30011f- -0x1d,_0x7b08e3);}_0x41664f[_0x53be29(0x318,0x2c0)]=this['particlesRendering'][_0x32dadd(0x1cf,0x22d)][_0x268b69],_0x41664f['execute'](this[_0x53be29(0x24f,0x289)]);});}['refreshParticles'](_0xc32cc4,_0x2dc4c8=!![]){_0x2dc4c8&&(this[_0x48859d(0x4c9,0x469)](),this[_0x48859d(0x4dd,0x4dc)]['destroyParticlesTextures'](),this[_0x48859d(0x4c3,0x4dc)][_0x8cac2a(-0x16b,-0x14a)](this['context'],this[_0x48859d(0x56c,0x541)],this[_0x48859d(0x415,0x45e)]));function _0x8cac2a(_0x117d0d,_0x40ca29){return _0x92c83a(_0x40ca29,_0x117d0d-0x3a);}function _0x48859d(_0x2d254b,_0x58c8af){return _0x92c83a(_0x2d254b,_0x58c8af-0x64a);}if(_0xc32cc4){var _0x17ffb5;const _0x5c0d96=this['particlesRendering'][_0x8cac2a(-0xbd,-0xef)](this['options']);this['particlesRendering']['primitives'][_0x8cac2a(-0xef,-0x14c)][_0x48859d(0x45d,0x47c)]=_0x5c0d96;const _0x37055f=Cesium$2[_0x8cac2a(-0x188,-0x1c4)]['fromGeometry']({'context':this[_0x8cac2a(-0x11a,-0x14e)],'geometry':_0x5c0d96,'attributeLocations':this[_0x8cac2a(-0xed,-0x118)]['primitives']['segments'][_0x48859d(0x495,0x526)],'bufferUsage':Cesium$2[_0x8cac2a(-0xf9,-0x164)]['STATIC_DRAW']});(_0x17ffb5=this[_0x8cac2a(-0xed,-0x84)][_0x8cac2a(-0x19d,-0x190)])!==null&&_0x17ffb5!==void 0x0&&(_0x17ffb5=_0x17ffb5['segments'])!==null&&_0x17ffb5!==void 0x0&&_0x17ffb5['commandToExecute']&&(this['particlesRendering'][_0x8cac2a(-0x19d,-0x110)][_0x8cac2a(-0xef,-0x61)]['commandToExecute'][_0x8cac2a(-0x157,-0xef)]=_0x37055f);}}['setOptions'](_0xe4b5d9){function _0x190d4b(_0x5f4519,_0x40ff0e){return _0x413bec(_0x40ff0e- -0x95,_0x5f4519);}let _0x1fa1db=![];this[_0x53b464(0x56f,0x595)][_0x53b464(0x4db,0x48c)]!==_0xe4b5d9['maxParticles']&&(_0x1fa1db=!![]);function _0x53b464(_0x3a1ddf,_0x2fab31){return _0x413bec(_0x2fab31-0x22c,_0x3a1ddf);}Object[_0x190d4b(0x1ef,0x220)](_0xe4b5d9)['forEach'](_0x11f427=>{function _0x121cb2(_0x4fcd39,_0x2c44d1){return _0x190d4b(_0x2c44d1,_0x4fcd39- -0x16c);}this[_0x121cb2(0x168,0x171)][_0x11f427]=_0xe4b5d9[_0x11f427];}),this[_0x190d4b(0x1fe,0x1d5)](_0x1fa1db,_0xe4b5d9[_0x190d4b(0x22b,0x237)]);}['applyViewerParameters'](_0x1e46fc){Object['keys'](_0x1e46fc)[_0xd5ca53(0x128,0x137)](_0x4db38c=>{function _0x48c7fa(_0x91032b,_0x5eec42){return _0xd5ca53(_0x91032b-0x50,_0x5eec42);}this[_0x48c7fa(0x118,0x159)][_0x4db38c]=_0x1e46fc[_0x4db38c];}),this['refreshParticles'](![]);function _0xd5ca53(_0x529452,_0x506a18){return _0x413bec(_0x529452- -0x1be,_0x506a18);}function _0x15f245(_0x3b893c,_0x59d0a1){return _0x413bec(_0x59d0a1- -0x47f,_0x3b893c);}!this['options']['dynamic']&&(this['options']['dynamic']=!![],this[_0xd5ca53(0xba,0x88)](this['options']),setTimeout(()=>{this['options']['dynamic']=![];function _0x4b1b31(_0x291041,_0x1601f1){return _0x15f245(_0x1601f1,_0x291041-0x44d);}this['setOptions'](this[_0x4b1b31(0x337,0x392)]);},0x1f4));}['destroy'](){clearTimeout(this[_0x26d2f7(-0x4f,-0x9a)]),this['particlesComputing'][_0x26d2f7(-0x8b,-0xc4)](),Object['keys'](this[_0x4d2cd7(-0x3,0x64)]['windTextures'])['forEach'](_0x20f26a=>{function _0x2ed102(_0x2cee59,_0x3ebd07){return _0x4d2cd7(_0x3ebd07,_0x2cee59- -0xf1);}this['particlesComputing']['windTextures'][_0x20f26a][_0x2ed102(-0x2e,-0x2a)]();});function _0x26d2f7(_0x1cb0bc,_0x881374){return _0x413bec(_0x1cb0bc- -0x355,_0x881374);}this['particlesRendering']['textures']['colorTable'][_0x4d2cd7(0xce,0xc3)]();function _0x4d2cd7(_0x5bac1c,_0x392e73){return _0x92c83a(_0x5bac1c,_0x392e73-0x1d2);}Object[_0x26d2f7(-0xa0,-0x85)](this[_0x26d2f7(-0xa,-0x2f)]['framebuffers'])['forEach'](_0x4e5654=>{function _0x37ac66(_0x2b5c15,_0x47743e){return _0x4d2cd7(_0x47743e,_0x2b5c15-0x243);}function _0x3c33c7(_0xdc1a0c,_0x1cc5d8){return _0x26d2f7(_0xdc1a0c-0x237,_0x1cc5d8);}this[_0x3c33c7(0x22d,0x200)]['framebuffers'][_0x4e5654][_0x37ac66(0x306,0x328)]();});for(const _0x3627aa in this){delete this[_0x3627aa];}}}function _0x3e68(){const _0x5989b3=['407440bbBQWG','particlesRendering','dropRate','_calcUV','attributeLocations','randomizeParticles','Cesium','random','Sampler','getV','computeViewRectangle','framebuffer','drawingBufferWidth','getFullscreenQuad','removeAll','fragmentShaderSource','moveTo','_onMouseUpEvent','east','setDate','IDENTITY','dropRateBump','currentParticlesPosition','_onMouseDownEvent','getUVByXY','destroy','wheel','CanvasWindField','particlesNumber','clientWidth','scene','options','toWindowCoordinates','createFramebuffer','shaderProgram','off','redraw','uniformMap','windField','removeEventListener','currentTrails','removeChild','latRange','style','getParticles','getValidRange','CanvasWindLayer','_onMapWhellEvent','getRandomLatLng','createSegmentsGeometry','clientHeight','mars3d-canvasWind','clear','pixelDatatype','GeometryAttributes','3085019OdrSAZ','clearCommand','maxParticles','viewport','commandToExecute','now','mode','show','0px','sqrt','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0ain\x20vec2\x20textureCoordinate;\x0a\x0auniform\x20sampler2D\x20segmentsColorTexture;\x0auniform\x20sampler2D\x20segmentsDepthTexture;\x0a\x0auniform\x20sampler2D\x20currentTrailsColor;\x0auniform\x20sampler2D\x20trailsDepthTexture;\x0a\x0auniform\x20float\x20fadeOpacity;\x0a\x0aout\x20vec4\x20fragColor;\x0avoid\x20main()\x20{\x0a\x20\x20vec4\x20pointsColor\x20=\x20texture(segmentsColorTexture,\x20textureCoordinate);\x0a\x20\x20vec4\x20trailsColor\x20=\x20texture(currentTrailsColor,\x20textureCoordinate);\x0a\x20\x20trailsColor\x20=\x20floor(fadeOpacity\x20*\x20255.0f\x20*\x20trailsColor)\x20/\x20255.0f;\x20//\x20make\x20sure\x20the\x20trailsColor\x20will\x20be\x20strictly\x20decreased\x0a\x0a\x20\x20float\x20pointsDepth\x20=\x20texture(segmentsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20trailsDepth\x20=\x20texture(trailsDepthTexture,\x20textureCoordinate).r;\x0a\x20\x20float\x20globeDepth\x20=\x20czm_unpackDepth(texture(czm_globeDepthTexture,\x20textureCoordinate));\x0a\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20if(pointsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20pointsColor;\x0a\x20\x20}\x0a\x20\x20if(trailsDepth\x20<\x20globeDepth)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20fragColor\x20+\x20trailsColor;\x0a\x20\x20}\x0a\x20\x20gl_FragDepth\x20=\x20min(pointsDepth,\x20trailsDepth);\x0a}\x0a','_updateIng2','refreshParticles','ClearCommand','enabled','Draw','PI_OVER_TWO','GeometryAttribute','mouseUp','DISABLE_LOG_DEPTH_FRAGMENT_WRITE','frameTime','preRender','lineTo','UNSIGNED_INT','_updateIng','depthMask','setOptions','BoundingSphere','WindLayer','globeBoundingSphere','randomBetween','particlesTextureSize','globalAlpha','defined','#version\x20300\x20es\x0a\x0aprecision\x20highp\x20float;\x0a\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20sampler2D\x20particlesSpeed;\x20//\x20(u,\x20v,\x20w,\x20norm)\x20Unit\x20converted\x20to\x20degrees\x20of\x20longitude\x20and\x20latitude\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speed\x20=\x20texture(particlesSpeed,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20nextParticle\x20=\x20lonLatLev\x20+\x20speed;\x0a\x20\x20if(length(speed.rgb)\x20>\x200.0f)\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(nextParticle,\x200.0f);\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20fragColor\x20=\x20vec4(0.0f);\x0a\x20\x20}\x0a}\x0a','sources','array','_map','_canvasParticles','_randomParticle','viewerParameters','create','TRIANGLES','preExecute','BaseLayer','tlng','defines','commandType','PrimitiveType','wSpeedRange','canvasContext','clearFramebuffers','grid','getUVByPoint','Cartesian2','#ffffff','THREE_PI_OVER_TWO','_tomap','clampToLatitudeRange','getOptions','bindEvent','primitives','autoClear','toDegrees','setData','pixelSize','postMessage','_canrefresh','blending','register','geometry','sin','udata','vdata','Math','45895yLWNra','Pass','windTextures','nextTrails','push','SCENE3D','ellipsoid','VertexArray','getPixelSize','xmin','particlesSpeed','Geometry','keys','TextureMagnificationFilter','color','min','speedFactor','Rectangle','previousParticlesPosition','mouse_down','DEPTH_COMPONENT','_setOptionsHook','addEventListener','EventType','depthTexture','round','speed','createRenderingPrimitives','max','toGridXY','layer','NEAREST','createTexture','destroyParticlesTextures','worker','dynamic','createParticlesTextures','height','colorTable','lev','default','globe','rawRenderState','canvasWidth','visibility','pointerEvents','uSpeedRange','beginPath','position','outputTexture','lng','WindUtil','auto','1021887GhHqyO','dimensions','speedRate','vertexArray','interval','467823ECVqje','SceneMode','fromDegrees','forEach','refreshTimer','FLOAT','windData','342qawobd','tlat','xmax','particles','#version\x20300\x20es\x0a\x0a//\x20the\x20size\x20of\x20UV\x20textures:\x20width\x20=\x20lon,\x20height\x20=\x20lat*lev\x0auniform\x20sampler2D\x20U;\x20//\x20eastward\x20wind\x0auniform\x20sampler2D\x20V;\x20//\x20northward\x20wind\x0auniform\x20sampler2D\x20W;\x20//\x20upward\x20wind\x0auniform\x20sampler2D\x20currentParticlesPosition;\x20//\x20(lon,\x20lat,\x20lev)\x0a\x0auniform\x20vec3\x20dimension;\x20//\x20(lon,\x20lat,\x20lev)\x0auniform\x20vec3\x20minimum;\x20//\x20minimum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20maximum;\x20//\x20maximum\x20of\x20each\x20dimension\x0auniform\x20vec3\x20interval;\x20//\x20interval\x20of\x20each\x20dimension\x0a\x0a//\x20used\x20to\x20calculate\x20the\x20wind\x20norm\x0auniform\x20vec2\x20uSpeedRange;\x20//\x20(min,\x20max);\x0auniform\x20vec2\x20vSpeedRange;\x0auniform\x20vec2\x20wSpeedRange;\x0auniform\x20float\x20speedScaleFactor;\x0a\x0ain\x20vec2\x20v_textureCoordinates;\x0a\x0avec2\x20mapPositionToNormalizedIndex2D(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20ensure\x20the\x20range\x20of\x20longitude\x20and\x20latitude\x0a\x20\x20lonLatLev.x\x20=\x20clamp(lonLatLev.x,\x20minimum.x,\x20maximum.x);\x0a\x20\x20lonLatLev.y\x20=\x20clamp(lonLatLev.y,\x20minimum.y,\x20maximum.y);\x0a\x20\x20lonLatLev.z\x20=\x20clamp(lonLatLev.z,\x20minimum.z,\x20maximum.z);\x0a\x0a\x20\x20vec3\x20index3D\x20=\x20vec3(0.0f);\x0a\x20\x20index3D.x\x20=\x20(lonLatLev.x\x20-\x20minimum.x)\x20/\x20interval.x;\x0a\x20\x20index3D.y\x20=\x20(lonLatLev.y\x20-\x20minimum.y)\x20/\x20interval.y;\x0a\x20\x20\x20\x20//\x20map\x20the\x20z-axis\x20value\x20to\x20the\x20nearest\x20bit\x20plane\x20to\x20ensure\x20that\x20the\x20result\x20is\x20an\x20integer\x0a\x20\x20index3D.z\x20=\x20ceil((lonLatLev.z\x20-\x20minimum.z)\x20/\x20interval.z);\x0a\x0a\x20\x20\x20\x20//\x20the\x20st\x20texture\x20coordinate\x20corresponding\x20to\x20(col,\x20row)\x20index\x0a\x20\x20\x20\x20//\x20example\x0a\x20\x20\x20\x20//\x20data\x20array\x20is\x20[0,\x201,\x202,\x203,\x204,\x205,\x207,\x208,\x209],\x20width\x20=\x202,\x20height\x20=\x202,\x20level\x20=\x202\x0a\x20\x20\x20\x20//\x20the\x20content\x20of\x20texture\x20will\x20be\x0a\x20\x20\x20\x20//\x20t\x201.0\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x206\x207\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x204\x205\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x202\x203\x0a\x20\x20\x20\x20//\x20\x20\x20\x20|\x20\x200\x201\x0a\x20\x20\x20\x20//\x20\x20\x200.0------1.0\x20s\x0a\x0a\x20\x20vec2\x20index2D\x20=\x20vec2(index3D.x,\x20index3D.z\x20*\x20dimension.y\x20+\x20index3D.y);\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20vec2(index2D.x\x20/\x20dimension.x,\x20index2D.y\x20/\x20(dimension.y\x20*\x20dimension.z));\x0a\x20\x20return\x20normalizedIndex2D;\x0a}\x0a\x0afloat\x20getWindComponent(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20vec2\x20normalizedIndex2D\x20=\x20mapPositionToNormalizedIndex2D(lonLatLev);\x0a\x20\x20float\x20result\x20=\x20texture(componentTexture,\x20normalizedIndex2D).r;\x0a\x20\x20return\x20result;\x0a}\x0a\x0afloat\x20interpolateTexture(sampler2D\x20componentTexture,\x20vec3\x20lonLatLev)\x20{\x0a\x20\x20float\x20lon\x20=\x20lonLatLev.x;\x0a\x20\x20float\x20lat\x20=\x20lonLatLev.y;\x0a\x20\x20float\x20lev\x20=\x20lonLatLev.z;\x0a\x0a\x20\x20float\x20lon0\x20=\x20floor(lon\x20/\x20interval.x)\x20*\x20interval.x;\x0a\x20\x20float\x20lon1\x20=\x20lon0\x20+\x201.0f\x20*\x20interval.x;\x0a\x20\x20float\x20lat0\x20=\x20floor(lat\x20/\x20interval.y)\x20*\x20interval.y;\x0a\x20\x20float\x20lat1\x20=\x20lat0\x20+\x201.0f\x20*\x20interval.y;\x0a\x0a\x20\x20float\x20lon0_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon1_lat0\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat0,\x20lev));\x0a\x20\x20float\x20lon0_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon0,\x20lat1,\x20lev));\x0a\x20\x20float\x20lon1_lat1\x20=\x20getWindComponent(componentTexture,\x20vec3(lon1,\x20lat1,\x20lev));\x0a\x0a\x20\x20float\x20lon_lat0\x20=\x20mix(lon0_lat0,\x20lon1_lat0,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat1\x20=\x20mix(lon0_lat1,\x20lon1_lat1,\x20lon\x20-\x20lon0);\x0a\x20\x20float\x20lon_lat\x20=\x20mix(lon_lat0,\x20lon_lat1,\x20lat\x20-\x20lat0);\x0a\x20\x20return\x20lon_lat;\x0a}\x0a\x0avec3\x20linearInterpolation(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20https://en.wikipedia.org/wiki/Bilinear_interpolation\x0a\x20\x20float\x20u\x20=\x20interpolateTexture(U,\x20lonLatLev);\x0a\x20\x20float\x20v\x20=\x20interpolateTexture(V,\x20lonLatLev);\x0a\x20\x20float\x20w\x20=\x20interpolateTexture(W,\x20lonLatLev);\x0a\x20\x20return\x20vec3(u,\x20v,\x20w);\x0a}\x0a\x0avec2\x20lengthOfLonLat(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20unit\x20conversion:\x20meters\x20->\x20longitude\x20latitude\x20degrees\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Geographic_coordinate_system#Length_of_a_degree\x20for\x20detail\x0a\x0a\x20\x20\x20\x20//\x20Calculate\x20the\x20length\x20of\x20a\x20degree\x20of\x20latitude\x20and\x20longitude\x20in\x20meters\x0a\x20\x20float\x20latitude\x20=\x20radians(lonLatLev.y);\x0a\x0a\x20\x20float\x20term1\x20=\x20111132.92f;\x0a\x20\x20float\x20term2\x20=\x20559.82f\x20*\x20cos(2.0f\x20*\x20latitude);\x0a\x20\x20float\x20term3\x20=\x201.175f\x20*\x20cos(4.0f\x20*\x20latitude);\x0a\x20\x20float\x20term4\x20=\x200.0023f\x20*\x20cos(6.0f\x20*\x20latitude);\x0a\x20\x20float\x20latLength\x20=\x20term1\x20-\x20term2\x20+\x20term3\x20-\x20term4;\x0a\x0a\x20\x20float\x20term5\x20=\x20111412.84f\x20*\x20cos(latitude);\x0a\x20\x20float\x20term6\x20=\x2093.5f\x20*\x20cos(3.0f\x20*\x20latitude);\x0a\x20\x20float\x20term7\x20=\x200.118f\x20*\x20cos(5.0f\x20*\x20latitude);\x0a\x20\x20float\x20longLength\x20=\x20term5\x20-\x20term6\x20+\x20term7;\x0a\x0a\x20\x20return\x20vec2(longLength,\x20latLength);\x0a}\x0a\x0avec3\x20convertSpeedUnitToLonLat(vec3\x20lonLatLev,\x20vec3\x20speed)\x20{\x0a\x20\x20vec2\x20lonLatLength\x20=\x20lengthOfLonLat(lonLatLev);\x0a\x20\x20float\x20u\x20=\x20speed.x\x20/\x20lonLatLength.x;\x0a\x20\x20float\x20v\x20=\x20speed.y\x20/\x20lonLatLength.y;\x0a\x20\x20float\x20w\x20=\x20speed.z;\x0a\x20\x20vec3\x20windVectorInLonLatLev\x20=\x20vec3(u,\x20v,\x20w);\x0a\x0a\x20\x20return\x20windVectorInLonLatLev;\x0a}\x0a\x0avec3\x20calculateSpeedByRungeKutta2(vec3\x20lonLatLev)\x20{\x0a\x20\x20\x20\x20//\x20see\x20https://en.wikipedia.org/wiki/Runge%E2%80%93Kutta_methods#Second-order_methods_with_two_stages\x20for\x20detail\x0a\x20\x20const\x20float\x20h\x20=\x200.5f;\x0a\x0a\x20\x20vec3\x20y_n\x20=\x20lonLatLev;\x0a\x20\x20vec3\x20f_n\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20midpoint\x20=\x20y_n\x20+\x200.5f\x20*\x20h\x20*\x20convertSpeedUnitToLonLat(y_n,\x20f_n)\x20*\x20speedScaleFactor;\x0a\x20\x20vec3\x20speed\x20=\x20h\x20*\x20linearInterpolation(midpoint)\x20*\x20speedScaleFactor;\x0a\x0a\x20\x20return\x20speed;\x0a}\x0a\x0avec2\x20getRange(vec2\x20range)\x20{\x0a\x20\x20float\x20x1\x20=\x200.0f\x20-\x20range.x;\x0a\x20\x20float\x20x2\x20=\x20range.y\x20-\x200.0f;\x0a\x20\x20if(x1\x20<\x200.0f\x20||\x20x2\x20<\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x20vec2(abs(x1),\x20abs(x2));\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20return\x20vec2(0.0f,\x20abs(max(x1,\x20x2)));\x0a\x20\x20}\x0a}\x0a\x0afloat\x20calculateWindNorm(vec3\x20speed)\x20{\x0a\x20\x20vec3\x20percent\x20=\x20vec3(0.0f);\x0a\x20\x20vec2\x20uRange\x20=\x20getRange(uSpeedRange);\x0a\x20\x20vec2\x20vRange\x20=\x20getRange(vSpeedRange);\x0a\x20\x20vec2\x20wRange\x20=\x20getRange(wSpeedRange);\x0a\x20\x20if(length(speed.xyz)\x20==\x200.0f)\x20{\x0a\x20\x20\x20\x20return\x200.0f;\x0a\x20\x20}\x0a\x0a\x20\x20percent.x\x20=\x20(abs(speed.x)\x20-\x20uRange.x)\x20/\x20(uRange.y\x20-\x20uRange.x);\x0a\x20\x20percent.y\x20=\x20(abs(speed.y)\x20-\x20vRange.x)\x20/\x20(vRange.y\x20-\x20vRange.x);\x0a\x20\x20if(wSpeedRange.y\x20==\x20wSpeedRange.x)\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x200.0f;\x0a\x20\x20}\x20else\x20{\x0a\x20\x20\x20\x20percent.z\x20=\x20(abs(speed.z)\x20-\x20wRange.x)\x20/\x20(wRange.y\x20-\x20wRange.x);\x0a\x20\x20}\x0a\x20\x20float\x20norm\x20=\x20length(percent);\x0a\x0a\x20\x20return\x20norm;\x0a}\x0a\x0aout\x20vec4\x20fragColor;\x0a\x0avoid\x20main()\x20{\x0a\x20\x20\x20\x20//\x20texture\x20coordinate\x20must\x20be\x20normalized\x0a\x20\x20vec3\x20lonLatLev\x20=\x20texture(currentParticlesPosition,\x20v_textureCoordinates).rgb;\x0a\x20\x20vec3\x20speedOrigin\x20=\x20linearInterpolation(lonLatLev);\x0a\x20\x20vec3\x20speed\x20=\x20calculateSpeedByRungeKutta2(lonLatLev);\x0a\x20\x20vec3\x20speedInLonLat\x20=\x20convertSpeedUnitToLonLat(lonLatLev,\x20speed);\x0a\x0a\x20\x20vec4\x20particleSpeed\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speed\x20/\x20speedScaleFactor));\x0a\x20\x20\x20\x20//\x20gl_FragColor\x20=\x20particleSpeed;\x0a\x20\x20fragColor\x20=\x20vec4(speedInLonLat,\x20calculateWindNorm(speedOrigin));\x0a}\x0a','cols','bind','createRawRenderState','LINEAR','_onMap_preRenderEvent','lat','_onMouseMoveEvent','segmentsColor','remove','createRenderingFramebuffers','width','applyViewerParameters','_mountedHook','particlesTextures','textures','requestAnimationFrame','strokeStyle','_animateFrame','4jHPkKM','10boSZzM','lineWidth','particlesComputing','steps','canrefresh','createCommand','updateViewerParameters','STATIC_DRAW','mouseMove','PixelDatatype','254216aypyPa','visible','lonRange','resize','colors','arrayBufferView','_removedHook','top','destroyObject','isInExtent','getColorTexture','createComputingPrimitives','framebuffers','wind','_data','mouse_move','ymin','trails','context','levmin','ymax','screen','add','particleSystem','ShaderSource','createRenderingTextures','data','cancelAnimationFrame','_addedHook','_calc_speedRate','fromGeometry','primitiveType','maxAge','rectangle','PixelFormat','_drawLines','globalCompositeOperation','drawingBufferHeight','length','rows','getColor','update','lon','ComponentDatatype','createWindTextures','_maxAge','__esModule','floor','alt','Compute','282108OYBQFD','BufferUsage','LayerUtil','depthTest','canvasWind','unbindEvent','ColorRamp','_pointerEvents','positionWC','canvas','levmax','segments'];_0x3e68=function(){return _0x5989b3;};return _0x3e68();}const Cesium$1=mars3d__namespace['Cesium'],BaseLayer$1=mars3d__namespace['layer'][_0x92c83a(-0x182,-0x1e8)],_0x568681={};_0x568681[_0x413bec(0x366,0x31f)]=0x1000,_0x568681['fixedHeight']=0x0,_0x568681['fadeOpacity']=0.996,_0x568681['dropRate']=0.003,_0x568681['dropRateBump']=0.01,_0x568681[_0x92c83a(-0x1b0,-0x1b9)]=0.5,_0x568681['lineWidth']=0x2,_0x568681[_0x92c83a(-0x11d,-0x162)]=['rgb(206,255,255)'],_0x568681['dynamic']=!![];const DEF_OPTIONS=_0x568681;function _0x92c83a(_0x4d781d,_0x9ce9c1){return _0x8444(_0x9ce9c1- -0x2b8,_0x4d781d);}class WindLayer extends BaseLayer$1{constructor(_0xb86718={}){_0xb86718={...DEF_OPTIONS,..._0xb86718},super(_0xb86718),this['_setOptionsHook'](_0xb86718);}get['layer'](){function _0x4703dd(_0x57244b,_0x1397f9){return _0x92c83a(_0x1397f9,_0x57244b-0x4f2);}return this[_0x4703dd(0x31b,0x39c)];}get['data'](){return this['_data'];}set['data'](_0x42d47c){this['setData'](_0x42d47c);}get['colors'](){function _0xecf33e(_0x54d3fb,_0x37f3d8){return _0x413bec(_0x37f3d8-0x4f,_0x54d3fb);}function _0x29ab12(_0x4b3df4,_0x5bbaa4){return _0x92c83a(_0x5bbaa4,_0x4b3df4-0x569);}return this[_0xecf33e(0x338,0x3b8)][_0xecf33e(0x381,0x35f)];}set[_0x92c83a(-0x1bc,-0x162)](_0x151e69){function _0x25348d(_0x508bbd,_0x8365f8){return _0x92c83a(_0x508bbd,_0x8365f8-0x3e5);}this['options']['colors']=_0x151e69;if(this[_0x25348d(0x300,0x296)]){const _0x294015={};_0x294015[_0x52f820(-0x88,0x9)]=_0x151e69,this['particleSystem']['setOptions'](_0x294015);}function _0x52f820(_0x1f9bd5,_0x445cec){return _0x92c83a(_0x1f9bd5,_0x445cec-0x16b);}this['resize']();}[_0x413bec(0x2fb,0x30a)](){}['_addedHook'](){this['scene']=this['_map']['scene'],this['camera']=this['_map']['camera'];function _0x35bcc8(_0x5f328e,_0x170c53){return _0x92c83a(_0x5f328e,_0x170c53-0x548);}this['primitives']=new Cesium$1['PrimitiveCollection'](),this['_map']['scene'][_0x35bcc8(0x3e4,0x371)]['add'](this['primitives']),this[_0x35bcc8(0x2f3,0x35c)]={'lonRange':new Cesium$1['Cartesian2'](),'latRange':new Cesium$1['Cartesian2'](),'pixelSize':0x0,'lonDisplayRange':new Cesium$1[(_0x35bcc8(0x3a5,0x36a))](),'latDisplayRange':new Cesium$1[(_0x90bfed(-0x357,-0x2ed))]()},this['globeBoundingSphere']=new Cesium$1[(_0x90bfed(-0x29a,-0x308))](Cesium$1['Cartesian3']['ZERO'],Cesium$1['Ellipsoid']['WGS84']['minimumRadius']),this['updateViewerParameters'](),window['addEventListener']('resize',this['resize'][_0x35bcc8(0x34f,0x3c6)](this),![]),this['mouse_down']=![];function _0x90bfed(_0xbf0fc9,_0x259c72){return _0x92c83a(_0xbf0fc9,_0x259c72- -0x10f);}this['mouse_move']=![],this['_map']['on'](mars3d__namespace['EventType']['wheel'],this[_0x90bfed(-0x262,-0x208)],this),this['_map']['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this['_map']['on'](mars3d__namespace[_0x35bcc8(0x3b8,0x396)]['mouseUp'],this['_onMouseUpEvent'],this),this['_map']['on'](mars3d__namespace[_0x35bcc8(0x31c,0x396)][_0x90bfed(-0x2a6,-0x277)],this['_onMouseMoveEvent'],this),this['_data']&&this[_0x90bfed(-0x2e3,-0x2e3)](this['_data']);}['_removedHook'](){window['removeEventListener'](_0x51031b(-0xe3,-0x10a),this[_0x37a36d(-0x217,-0x1ea)]),this['_map']['off'](mars3d__namespace['EventType']['preRender'],this[_0x51031b(-0xff,-0x133)],this),this[_0x51031b(-0x16f,-0x189)]['off'](mars3d__namespace['EventType'][_0x37a36d(-0x1fb,-0x195)],this['_onMapWhellEvent'],this),this['_map']['off'](mars3d__namespace[_0x51031b(-0x132,-0xac)]['mouseDown'],this['_onMouseDownEvent'],this);function _0x37a36d(_0x148b50,_0x41af33){return _0x413bec(_0x41af33- -0x4f9,_0x148b50);}this['_map']['off'](mars3d__namespace['EventType'][_0x37a36d(-0x23c,-0x289)],this[_0x51031b(-0x97,-0xef)],this);function _0x51031b(_0x2d9035,_0x1f451a){return _0x413bec(_0x2d9035- -0x3f2,_0x1f451a);}this[_0x51031b(-0x16f,-0x131)][_0x37a36d(-0x1c7,-0x18c)](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this),this['primitives']['removeAll'](),this[_0x51031b(-0x16f,-0xfa)]['scene'][_0x51031b(-0x157,-0xf0)][_0x37a36d(-0x204,-0x202)](this['primitives']);}[_0x92c83a(-0x145,-0x163)](){if(!this['show']||!this['particleSystem'])return;function _0x552ff8(_0x43afab,_0x406250){return _0x413bec(_0x43afab- -0x4de,_0x406250);}this['primitives']['show']=![];function _0x593e30(_0x2c8b2d,_0x8050b2){return _0x413bec(_0x2c8b2d- -0x29e,_0x8050b2);}this['primitives'][_0x593e30(0xba,0x107)](),this['_map']['once'](mars3d__namespace['EventType'][_0x552ff8(-0x26b,-0x2d1)],this['_onMap_preRenderEvent'],this);}[_0x413bec(0x2f3,0x267)](_0x35fd25){this['particleSystem']['canvasResize'](this['scene']['context']),this['addPrimitives'](),this['primitives']['show']=!![];}['_onMapWhellEvent'](_0x296c8c){clearTimeout(this[_0x32102a(0x457,0x419)]);if(!this['show']||!this[_0x32102a(0x493,0x4fe)])return;function _0x32102a(_0x36eba6,_0x33d3b0){return _0x92c83a(_0x33d3b0,_0x36eba6-0x5e2);}function _0x3645e9(_0xd63ef0,_0x4f000d){return _0x92c83a(_0x4f000d,_0xd63ef0-0x442);}this['primitives']['show']=![],this[_0x32102a(0x457,0x4d7)]=setTimeout(()=>{function _0x51386c(_0xa078e,_0xfb85e){return _0x3645e9(_0xfb85e- -0x168,_0xa078e);}if(!this['show'])return;this[_0x51386c(0x189,0x1d6)]();},0xc8);}[_0x92c83a(-0x13b,-0x111)](_0x13c335){this['mouse_down']=!![];}['_onMouseMoveEvent'](_0x4e1079){function _0x36a96c(_0xde6813,_0x53f6a3){return _0x413bec(_0xde6813- -0xad,_0x53f6a3);}if(!this[_0x36a96c(0x1b8,0x14d)]||!this[_0x28688f(0x46e,0x4e6)])return;function _0x28688f(_0x161918,_0x335e37){return _0x413bec(_0x161918-0x14b,_0x335e37);}this['mouse_down']&&(this[_0x28688f(0x3e6,0x431)]['show']=![],this[_0x36a96c(0x26e,0x224)]=!![]);}['_onMouseUpEvent'](_0x38182c){function _0x36e53c(_0x16dce6,_0x2a3337){return _0x92c83a(_0x16dce6,_0x2a3337-0x5d4);}if(!this['show']||!this['particleSystem'])return;this['mouse_down']&&this[_0x45f3db(0x18a,0x1a7)]&&this['redraw']();function _0x45f3db(_0x15b56d,_0x4c8909){return _0x413bec(_0x4c8909- -0x174,_0x15b56d);}this['primitives']['show']=!![],this[_0x45f3db(0xe5,0x148)]=![],this['mouse_move']=![];}['redraw'](){if(!this[_0x9f0c41(0x270,0x2a9)]||!this[_0x5dca71(-0x2df,-0x29e)])return;this['updateViewerParameters']();function _0x9f0c41(_0x25c6f0,_0x58d292){return _0x92c83a(_0x25c6f0,_0x58d292-0x498);}this['particleSystem'][_0x5dca71(-0x24a,-0x200)](this['viewerParameters']);function _0x5dca71(_0x22c970,_0x4af288){return _0x413bec(_0x22c970- -0x544,_0x4af288);}this[_0x5dca71(-0x2a9,-0x2cd)][_0x9f0c41(0x21d,0x28b)]=!![];}[_0x92c83a(-0x18a,-0x1d4)](_0x3069ff){function _0x325e36(_0x4fe338,_0x4435ea){return _0x92c83a(_0x4435ea,_0x4fe338-0x235);}this['_data']=_0x3069ff;function _0x5c7c0a(_0x4fb8f0,_0x369e23){return _0x413bec(_0x4fb8f0- -0x2e0,_0x369e23);}this['particleSystem']&&this[_0x5c7c0a(0x43,0x23)]['destroy'](),this['particleSystem']=new ParticleSystem(this['scene'][_0x325e36(0xe1,0x75)],_0x3069ff,this['getOptions'](),this[_0x5c7c0a(-0x5a,-0xd4)]),this['addPrimitives']();}[_0x413bec(0x2be,0x2fd)](_0x53f0a8,_0x42a0b5){if(_0x53f0a8)for(const _0x1999dd in _0x53f0a8){this[_0x1999dd]=_0x53f0a8[_0x1999dd];}function _0x4ed84c(_0x5d4ead,_0xfe0b37){return _0x92c83a(_0xfe0b37,_0x5d4ead-0x255);}function _0x497e55(_0x546a97,_0x169edc){return _0x413bec(_0x169edc- -0x3ce,_0x546a97);}this['particleSystem']&&this[_0x497e55(-0x11e,-0xab)]['setOptions'](this[_0x497e55(-0x1c4,-0x135)]());}[_0x92c83a(-0x21c,-0x1d9)](){const _0x2b0380=Math['ceil'](Math['sqrt'](this[_0x2729d3(-0xfa,-0xe1)]));this['particlesNumber']=_0x2b0380*_0x2b0380;const _0x43430f={};_0x43430f['particlesTextureSize']=_0x2b0380;function _0x2729d3(_0x2b6757,_0x5cf1e5){return _0x413bec(_0x2b6757- -0x460,_0x5cf1e5);}function _0x27d506(_0x236dfa,_0x48dcaf){return _0x413bec(_0x236dfa- -0xd1,_0x48dcaf);}return _0x43430f['maxParticles']=this[_0x2729d3(-0xfa,-0xfa)],_0x43430f['colors']=this[_0x2729d3(-0x150,-0x11d)],_0x43430f['particleHeight']=this['fixedHeight'],_0x43430f['fadeOpacity']=this['fadeOpacity'],_0x43430f['dropRate']=this[_0x27d506(0x27b,0x1ed)],_0x43430f[_0x27d506(0x28e,0x2a3)]=this['dropRateBump'],_0x43430f[_0x2729d3(-0x1a7,-0x1df)]=this['speedFactor'],_0x43430f['lineWidth']=this[_0x27d506(0x232,0x25c)],_0x43430f['dynamic']=this['dynamic'],_0x43430f;}['addPrimitives'](){function _0x4b8dfd(_0x31f670,_0x56165f){return _0x413bec(_0x56165f-0x15c,_0x31f670);}this[_0x4b8dfd(0x464,0x3f7)]['add'](this['particleSystem']['particlesComputing'][_0x4b8dfd(0x37a,0x3f7)]['calculateSpeed']);function _0x44571a(_0x2ba9d4,_0x44768b){return _0x413bec(_0x44768b-0x7f,_0x2ba9d4);}this[_0x44571a(0x3ab,0x31a)][_0x44571a(0x347,0x3a1)](this[_0x4b8dfd(0x494,0x47f)]['particlesComputing'][_0x44571a(0x339,0x31a)]['updatePosition']),this[_0x4b8dfd(0x36f,0x3f7)]['add'](this[_0x4b8dfd(0x50d,0x47f)]['particlesComputing'][_0x4b8dfd(0x3d4,0x3f7)]['postProcessingPosition']),this['primitives'][_0x4b8dfd(0x48e,0x47e)](this[_0x44571a(0x3cf,0x3a2)]['particlesRendering'][_0x4b8dfd(0x37d,0x3f7)][_0x4b8dfd(0x495,0x4a5)]),this['primitives']['add'](this[_0x44571a(0x329,0x3a2)]['particlesRendering']['primitives']['trails']),this['primitives']['add'](this[_0x44571a(0x31c,0x3a2)]['particlesRendering'][_0x4b8dfd(0x37f,0x3f7)][_0x4b8dfd(0x40a,0x47d)]);}[_0x413bec(0x308,0x334)](){function _0x17d30d(_0x2a0fc1,_0x2223e4){return _0x413bec(_0x2a0fc1- -0x4fc,_0x2223e4);}let _0xfc60c7=this['camera'][_0x17d30d(-0x1a8,-0x237)](this[_0x17971f(-0x1fe,-0x21b)][_0x17971f(-0x294,-0x305)][_0x17971f(-0x2b7,-0x268)]);if(!_0xfc60c7){const _0x49fe17=this['_map']['getExtent']();_0xfc60c7=Cesium$1[_0x17d30d(-0x242,-0x277)]['fromDegrees'](_0x49fe17['xmin'],_0x49fe17[_0x17971f(-0x24a,-0x1c9)],_0x49fe17['xmax'],_0x49fe17['ymax']);}const _0x54eb51=Util['viewRectangleToLonLatRange'](_0xfc60c7);this[_0x17971f(-0x24c,-0x210)]?(this['viewerParameters']['lonRange']['x']=Math['max'](_0x54eb51['lon'][_0x17971f(-0x2ae,-0x33e)],this['_data']['xmin']),this['viewerParameters'][_0x17d30d(-0x1ee,-0x1e7)]['y']=Math['min'](_0x54eb51['lon']['max'],this[_0x17d30d(-0x1e2,-0x188)][_0x17d30d(-0x210,-0x28e)]),this['viewerParameters'][_0x17971f(-0x1f2,-0x27c)]['x']=Math['max'](_0x54eb51['lat'][_0x17d30d(-0x244,-0x28b)],this['_data']['ymin']),this[_0x17d30d(-0x276,-0x2e4)][_0x17971f(-0x1f2,-0x22b)]['y']=Math['min'](_0x54eb51['lat']['max'],this['_data']['ymax'])):(this['viewerParameters'][_0x17971f(-0x258,-0x234)]['x']=_0x54eb51['lon']['min'],this[_0x17d30d(-0x276,-0x2a3)]['lonRange']['y']=_0x54eb51[_0x17971f(-0x230,-0x1ce)]['max'],this[_0x17d30d(-0x276,-0x228)][_0x17d30d(-0x188,-0x196)]['x']=_0x54eb51[_0x17d30d(-0x208,-0x27d)][_0x17d30d(-0x244,-0x205)],this[_0x17971f(-0x2e0,-0x348)]['latRange']['y']=_0x54eb51['lat']['max']);function _0x17971f(_0x4b8802,_0x34dfab){return _0x92c83a(_0x34dfab,_0x4b8802- -0xf4);}let _0xfed35d=this['camera'][_0x17971f(-0x2b5,-0x2fa)](this[_0x17971f(-0x2eb,-0x35e)],this['scene'][_0x17d30d(-0x1a6,-0x180)],this['scene']['drawingBufferHeight']);const _0x206093=this['scene'][_0x17d30d(-0x1cb,-0x226)]*0.3;_0xfed35d<_0x206093&&(_0xfed35d=_0x206093),this['viewerParameters'][_0x17971f(-0x2c7,-0x274)]=_0xfed35d;}}mars3d__namespace[_0x413bec(0x340,0x376)]['register'](_0x92c83a(-0xe0,-0x159),WindLayer),mars3d__namespace['layer'][_0x92c83a(-0x1a1,-0x1f8)]=WindLayer;class CanvasParticle{constructor(){function _0x25f4df(_0x385a98,_0x5837a3){return _0x413bec(_0x5837a3-0x1e3,_0x385a98);}this[_0x3126ea(0x3a4,0x3d9)]=null,this['lat']=null,this['tlng']=null;function _0x3126ea(_0x2e5815,_0x875675){return _0x413bec(_0x2e5815-0xc9,_0x875675);}this[_0x25f4df(0x51b,0x4ce)]=null,this['age']=null,this[_0x3126ea(0x38c,0x35f)]=null;}[_0x92c83a(-0xfe,-0x10f)](){for(const _0x2a7290 in this){delete this[_0x2a7290];}}}class CanvasWindField{constructor(_0xfbc2b4){this['setOptions'](_0xfbc2b4);}get[_0x413bec(0x2e0,0x312)](){return this['_speedRate'];}set[_0x92c83a(-0x14f,-0x192)](_0xb13921){function _0x314560(_0x5d0b84,_0x5ec299){return _0x413bec(_0x5d0b84-0xb2,_0x5ec299);}function _0x58a559(_0x26551c,_0x3d09b7){return _0x92c83a(_0x3d09b7,_0x26551c-0x4ca);}this['_speedRate']=(0x64-(_0xb13921>0x63?0x63:_0xb13921))*0x64,this[_0x58a559(0x381,0x40d)]=[(this[_0x314560(0x39e,0x41d)]-this[_0x58a559(0x30a,0x362)])/this['_speedRate'],(this['ymax']-this['ymin'])/this['_speedRate']];}get['maxAge'](){function _0x59057c(_0x7a57fa,_0x52b8ed){return _0x92c83a(_0x52b8ed,_0x7a57fa-0x4a);}return this[_0x59057c(-0xef,-0x139)];}set['maxAge'](_0xbdef75){function _0x3b427b(_0x4902b8,_0x53060c){return _0x413bec(_0x53060c- -0x90,_0x4902b8);}this[_0x3b427b(0x268,0x2a9)]=_0xbdef75;}[_0x413bec(0x278,0x204)](_0x4f9c37){function _0x24f33f(_0x521dc2,_0x1547f1){return _0x413bec(_0x521dc2- -0x1e5,_0x1547f1);}this['options']=_0x4f9c37,this['maxAge']=_0x4f9c37[_0x46ebc2(0x90,0xf7)]||0x78,this['speedRate']=_0x4f9c37[_0x24f33f(0xfb,0xcb)]||0x32,this['particles']=[];function _0x46ebc2(_0x1e2013,_0x56f753){return _0x413bec(_0x1e2013- -0x29c,_0x56f753);}const _0x411011=_0x4f9c37[_0x46ebc2(0xca,0xdf)]||0x1000;for(let _0x343fef=0x0;_0x343fef<_0x411011;_0x343fef++){const _0x34a5db=this[_0x24f33f(0xa0,0xe4)](new CanvasParticle());this['particles']['push'](_0x34a5db);}}['setDate'](_0x5454a2){function _0x108a0f(_0x7db45f,_0xdb3a7e){return _0x413bec(_0x7db45f- -0x14e,_0xdb3a7e);}this['rows']=_0x5454a2['rows'],this[_0x108a0f(0x1a1,0x11a)]=_0x5454a2['cols'],this['xmin']=_0x5454a2['xmin'],this[_0x108a0f(0x19e,0x19b)]=_0x5454a2[_0x108a0f(0x19e,0x1aa)],this['ymin']=_0x5454a2[_0x108a0f(0x1ce,0x234)],this[_0xbb2bea(0x485,0x424)]=_0x5454a2['ymax'],this['grid']=[];const _0x505869=_0x5454a2[_0x108a0f(0x158,0xea)],_0x4e757d=_0x5454a2['vdata'];let _0x34f2f9=![];_0x505869['length']===this['rows']&&_0x505869[0x0]['length']===this['cols']&&(_0x34f2f9=!![]);function _0xbb2bea(_0x1674fc,_0x936e14){return _0x92c83a(_0x1674fc,_0x936e14-0x576);}let _0x3c5e11=0x0,_0x1da638=null,_0x1596b1=null;for(let _0x4fa378=0x0;_0x4fa378<this[_0xbb2bea(0x4c2,0x437)];_0x4fa378++){_0x1da638=[];for(let _0x57504f=0x0;_0x57504f<this[_0xbb2bea(0x416,0x3f3)];_0x57504f++,_0x3c5e11++){_0x34f2f9?_0x1596b1=this['_calcUV'](_0x505869[_0x4fa378][_0x57504f],_0x4e757d[_0x4fa378][_0x57504f]):_0x1596b1=this['_calcUV'](_0x505869[_0x3c5e11],_0x4e757d[_0x3c5e11]),_0x1da638[_0xbb2bea(0x323,0x3b1)](_0x1596b1);}this['grid']['push'](_0x1da638);}this[_0x108a0f(0x21b,0x256)]['reverseY']&&this['grid']['reverse']();}['clear'](){delete this['rows'],delete this['cols'];function _0x2af6c9(_0x483ce3,_0x40c21b){return _0x413bec(_0x40c21b- -0x35d,_0x483ce3);}delete this[_0x37d76f(-0x226,-0x1dd)];function _0x37d76f(_0x34ef9f,_0xfcfd09){return _0x92c83a(_0x34ef9f,_0xfcfd09- -0x1d);}delete this['xmax'],delete this['ymin'],delete this['ymax'],delete this[_0x2af6c9(-0x92,-0xcb)],delete this['particles'];}[_0x413bec(0x2c6,0x293)](_0x3b5759,_0x20f0c1){function _0x172a2e(_0x4b80d8,_0x3f6d52){return _0x413bec(_0x4b80d8- -0x51a,_0x3f6d52);}function _0x467452(_0x2f6ff7,_0x247549){return _0x413bec(_0x247549- -0x2fb,_0x2f6ff7);}const _0xe6a62=(_0x3b5759-this['xmin'])/(this['xmax']-this[_0x172a2e(-0x268,-0x253)])*(this['cols']-0x1),_0x54a9cb=(this[_0x467452(0x31,0x25)]-_0x20f0c1)/(this['ymax']-this['ymin'])*(this[_0x172a2e(-0x1e7,-0x1f4)]-0x1);return[_0xe6a62,_0x54a9cb];}['getUVByXY'](_0x3e1337,_0x32b30a){if(_0x3e1337<0x0||_0x3e1337>=this['cols']||_0x32b30a>=this['rows'])return[0x0,0x0,0x0];const _0x4b1bc8=Math[_0x3e16aa(-0x264,-0x299)](_0x3e1337),_0x39d484=Math[_0x28b4fa(0x3ca,0x410)](_0x32b30a);if(_0x4b1bc8===_0x3e1337&&_0x39d484===_0x32b30a)return this[_0x28b4fa(0x2fe,0x367)][_0x32b30a][_0x3e1337];const _0x30e6fc=_0x4b1bc8+0x1;function _0x28b4fa(_0x2bf025,_0x25dea5){return _0x413bec(_0x25dea5-0xd5,_0x2bf025);}const _0x255cbb=_0x39d484+0x1,_0x213a59=this['getUVByXY'](_0x4b1bc8,_0x39d484),_0x3b7cbf=this['getUVByXY'](_0x30e6fc,_0x39d484),_0x2056ed=this['getUVByXY'](_0x4b1bc8,_0x255cbb),_0x4443e2=this['getUVByXY'](_0x30e6fc,_0x255cbb);function _0x3e16aa(_0x10461f,_0x5b25c1){return _0x413bec(_0x10461f- -0x59f,_0x5b25c1);}let _0x1c7ad5=null;try{_0x1c7ad5=this['_bilinearInterpolation'](_0x3e1337-_0x4b1bc8,_0x32b30a-_0x39d484,_0x213a59,_0x3b7cbf,_0x2056ed,_0x4443e2);}catch(_0x3b33a6){console['log'](_0x3e1337,_0x32b30a);}return _0x1c7ad5;}['_bilinearInterpolation'](_0xcd4a32,_0x1ec4be,_0x11c529,_0x65e2a0,_0x5ec4f4,_0x298bcf){const _0x46f0b1=0x1-_0xcd4a32,_0x20fc17=0x1-_0x1ec4be,_0xcf50a4=_0x46f0b1*_0x20fc17,_0x34d6e1=_0xcd4a32*_0x20fc17,_0x39886f=_0x46f0b1*_0x1ec4be,_0x2fbd66=_0xcd4a32*_0x1ec4be,_0x5f40a2=_0x11c529[0x0]*_0xcf50a4+_0x65e2a0[0x0]*_0x34d6e1+_0x5ec4f4[0x0]*_0x39886f+_0x298bcf[0x0]*_0x2fbd66,_0x4e5240=_0x11c529[0x1]*_0xcf50a4+_0x65e2a0[0x1]*_0x34d6e1+_0x5ec4f4[0x1]*_0x39886f+_0x298bcf[0x1]*_0x2fbd66;return this['_calcUV'](_0x5f40a2,_0x4e5240);}[_0x92c83a(-0x124,-0x125)](_0x3a0c13,_0x4c655c){return[+_0x3a0c13,+_0x4c655c,Math['sqrt'](_0x3a0c13*_0x3a0c13+_0x4c655c*_0x4c655c)];}[_0x413bec(0x293,0x2f7)](_0x390043,_0x374cc9){if(!this[_0x3f36b9(0xcc,0xa9)](_0x390043,_0x374cc9))return null;function _0x3f36b9(_0x3d147c,_0x5e3029){return _0x92c83a(_0x5e3029,_0x3d147c-0x229);}const _0x5b2e1d=this['toGridXY'](_0x390043,_0x374cc9);function _0x4cff91(_0x21cab7,_0x537180){return _0x92c83a(_0x537180,_0x21cab7-0x124);}const _0x1ed9ca=this[_0x3f36b9(0x119,0xd6)](_0x5b2e1d[0x0],_0x5b2e1d[0x1]);return _0x1ed9ca;}['isInExtent'](_0x2ae9f5,_0x469867){function _0x65ce49(_0x355cc7,_0x40164e){return _0x413bec(_0x40164e- -0x31e,_0x355cc7);}return _0x2ae9f5>=this['xmin']&&_0x2ae9f5<=this[_0x65ce49(-0x35,-0x32)]&&_0x469867>=this['ymin']&&_0x469867<=this['ymax']?!![]:![];}['getRandomLatLng'](){const _0x1ab6c1=fRandomByfloat(this['xmin'],this[_0x2dd3f2(0x32a,0x3b4)]);function _0x2dd3f2(_0x5a33c0,_0x194eb2){return _0x92c83a(_0x194eb2,_0x5a33c0-0x4b0);}const _0x227050=fRandomByfloat(this['ymin'],this[_0x2dd3f2(0x35e,0x307)]),_0x1a82dd={};function _0x27f089(_0xc088e5,_0x563bfc){return _0x413bec(_0xc088e5- -0x303,_0x563bfc);}return _0x1a82dd[_0x27f089(-0xf,-0x3)]=_0x227050,_0x1a82dd[_0x2dd3f2(0x319,0x2ff)]=_0x1ab6c1,_0x1a82dd;}['getParticles'](){function _0x26747(_0x4eb2fc,_0x537731){return _0x92c83a(_0x537731,_0x4eb2fc-0x649);}let _0x316229,_0x35c669,_0x472783;for(let _0x3bdcd5=0x0,_0x4975ae=this['particles']['length'];_0x3bdcd5<_0x4975ae;_0x3bdcd5++){let _0x1ab30d=this[_0x26747(0x4c4,0x4d0)][_0x3bdcd5];_0x1ab30d['age']<=0x0&&(_0x1ab30d=this[_0x321db6(0xca,0xdc)](_0x1ab30d));if(_0x1ab30d['age']>0x0){const _0x5e98d9=_0x1ab30d[_0x26747(0x462,0x4c4)],_0x307d0b=_0x1ab30d[_0x26747(0x4c2,0x456)];_0x472783=this[_0x321db6(0xd8,0x99)](_0x5e98d9,_0x307d0b),_0x472783?(_0x316229=_0x5e98d9+this[_0x321db6(0x16e,0x196)][0x0]*_0x472783[0x0],_0x35c669=_0x307d0b+this['_calc_speedRate'][0x1]*_0x472783[0x1],_0x1ab30d['lng']=_0x5e98d9,_0x1ab30d[_0x26747(0x4cb,0x545)]=_0x307d0b,_0x1ab30d[_0x321db6(0xd0,0x52)]=_0x316229,_0x1ab30d['tlat']=_0x35c669,_0x1ab30d[_0x26747(0x49a,0x4e1)]=_0x472783[0x2],_0x1ab30d['age']--):_0x1ab30d['age']=0x0;}}function _0x321db6(_0x562f00,_0x4802e0){return _0x413bec(_0x562f00- -0x1bb,_0x4802e0);}return this[_0x321db6(0x132,0x19a)];}['_randomParticle'](_0x4ac1e2){let _0x499cb3,_0x132b66;for(let _0x64263e=0x0;_0x64263e<0x1e;_0x64263e++){_0x499cb3=this[_0xfff302(0x4f5,0x552)](),_0x132b66=this['getUVByPoint'](_0x499cb3['lng'],_0x499cb3['lat']);if(_0x132b66&&_0x132b66[0x2]>0x0)break;}if(!_0x132b66)return _0x4ac1e2;function _0x1cea8a(_0xda6847,_0xd3d79b){return _0x413bec(_0xda6847-0x1e1,_0xd3d79b);}const _0x3e74f1=_0x499cb3['lng']+this['_calc_speedRate'][0x0]*_0x132b66[0x0];function _0xfff302(_0x3ea098,_0x537f32){return _0x92c83a(_0x3ea098,_0x537f32-0x64a);}const _0x44b9cf=_0x499cb3[_0x1cea8a(0x4d5,0x445)]+this[_0x1cea8a(0x50a,0x49b)][0x1]*_0x132b66[0x1];return _0x4ac1e2['lng']=_0x499cb3[_0xfff302(0x42c,0x4b3)],_0x4ac1e2['lat']=_0x499cb3[_0x1cea8a(0x4d5,0x463)],_0x4ac1e2['tlng']=_0x3e74f1,_0x4ac1e2['tlat']=_0x44b9cf,_0x4ac1e2['age']=Math[_0x1cea8a(0x4a3,0x426)](Math['random']()*this['maxAge']),_0x4ac1e2['speed']=_0x132b66[0x2],_0x4ac1e2;}[_0x92c83a(-0x11d,-0x10f)](){for(const _0x5a25bd in this){delete this[_0x5a25bd];}}}function fRandomByfloat(_0x25b235,_0x5313f6){function _0x169eb1(_0x193e0b,_0x24b7cb){return _0x413bec(_0x24b7cb- -0x254,_0x193e0b);}return _0x25b235+Math[_0x169eb1(0xb3,0xfd)]()*(_0x5313f6-_0x25b235);}const Cesium=mars3d__namespace['Cesium'],BaseLayer=mars3d__namespace[_0x92c83a(-0x13c,-0x1ab)]['BaseLayer'];class CanvasWindLayer extends BaseLayer{constructor(_0x5dc00d={}){function _0x32b39a(_0x420508,_0x8d5736){return _0x413bec(_0x8d5736- -0x158,_0x420508);}function _0x36c6d8(_0x453a41,_0x8399bc){return _0x92c83a(_0x8399bc,_0x453a41-0x2a7);}super(_0x5dc00d),this[_0x36c6d8(0xf3,0x114)](_0x5dc00d),this['canvas']=null,_0x5dc00d['colors']&&_0x5dc00d[_0x32b39a(0x14f,0x1ad)]&&(this['_colorRamp']=new mars3d__namespace[(_0x36c6d8(0x179,0x14d))](_0x5dc00d));}['_setOptionsHook'](_0x5a1511,_0xfe18b){this['frameTime']=0x3e8/(_0x5a1511['frameRate']||0xa),this[_0x3893ff(-0x176,-0x114)]=this['options']['pointerEvents']??![];function _0x3893ff(_0x4786be,_0x4a71ae){return _0x413bec(_0x4a71ae- -0x459,_0x4786be);}this[_0x27bd63(-0x28f,-0x242)]=_0x5a1511['color']||_0x3893ff(-0x1fd,-0x1c4),this['lineWidth']=_0x5a1511['lineWidth']||0x1;function _0x27bd63(_0x659ed,_0x42adc8){return _0x92c83a(_0x42adc8,_0x659ed- -0xd4);}this['fixedHeight']=_0x5a1511['fixedHeight']??0x0,this['reverseY']=_0x5a1511['reverseY']??![],this['windField']&&this[_0x3893ff(-0xea,-0xe9)][_0x27bd63(-0x2ce,-0x336)](_0x5a1511);}get[_0x413bec(0x2c7,0x2ae)](){return this['canvas'];}get[_0x92c83a(-0x11f,-0x19e)](){function _0x585efa(_0x3f7b1f,_0x431be3){return _0x413bec(_0x431be3- -0x200,_0x3f7b1f);}function _0x232bcd(_0x3a6247,_0x27596a){return _0x92c83a(_0x27596a,_0x3a6247-0x3fc);}return this[_0x585efa(0xf9,0x83)]['scene']['canvas'][_0x232bcd(0x2f1,0x2c0)];}get['canvasHeight'](){function _0x1d8f80(_0x11d5cf,_0x72fa49){return _0x413bec(_0x11d5cf- -0x22e,_0x72fa49);}return this['_map'][_0x1d8f80(0x13a,0x150)]['canvas']['clientHeight'];}get['pointerEvents'](){return this['_pointerEvents'];}set[_0x413bec(0x2d6,0x2b7)](_0x4c6857){this[_0x3dcb2b(-0x280,-0x237)]=_0x4c6857;function _0x3dcb2b(_0x56a4a6,_0x51a136){return _0x92c83a(_0x56a4a6,_0x51a136- -0x10a);}function _0x244a2b(_0x5e725e,_0x128cee){return _0x92c83a(_0x5e725e,_0x128cee- -0x5c);}if(!this['canvas'])return;_0x4c6857?this[_0x3dcb2b(-0x2b7,-0x235)]['style']['pointer-events']='all':this['canvas'][_0x244a2b(-0x146,-0x159)]['pointer-events']='none';}get[_0x92c83a(-0x9c,-0x10c)](){return this['options']['particlesNumber'];}set['particlesNumber'](_0x3309b6){this[_0x47f78b(0x372,0x333)][_0x646c96(-0x136,-0x1a5)]=_0x3309b6,clearTimeout(this[_0x646c96(-0x1fb,-0x1a9)]);function _0x646c96(_0x4181c3,_0x58d531){return _0x92c83a(_0x58d531,_0x4181c3- -0x2a);}function _0x47f78b(_0x287f4e,_0x2dea51){return _0x413bec(_0x2dea51- -0x36,_0x287f4e);}this[_0x47f78b(0x2c0,0x26b)]=setTimeout(()=>{this['redraw']();},0x1f4);}get[_0x92c83a(-0x209,-0x192)](){return this['options']['speedRate'];}set[_0x413bec(0x2e0,0x2f8)](_0x2544b4){function _0x4f1ed5(_0xba9ab9,_0x5b7487){return _0x92c83a(_0x5b7487,_0xba9ab9-0x3f6);}this[_0x4f1ed5(0x2ed,0x36f)]['speedRate']=_0x2544b4;function _0x2436ec(_0x36b02d,_0x47ffba){return _0x413bec(_0x36b02d- -0xeb,_0x47ffba);}this[_0x2436ec(0x285,0x2ba)]&&(this[_0x2436ec(0x285,0x203)][_0x4f1ed5(0x264,0x283)]=_0x2544b4);}get['maxAge'](){return this['options']['maxAge'];}set['maxAge'](_0x2ae427){this[_0x42cfb8(0x3fd,0x467)]['maxAge']=_0x2ae427;function _0x14ac8b(_0x191f99,_0x44c16c){return _0x92c83a(_0x44c16c,_0x191f99-0x25e);}function _0x42cfb8(_0x418360,_0x11c6fa){return _0x92c83a(_0x418360,_0x11c6fa-0x570);}this[_0x14ac8b(0x15c,0x1b9)]&&(this['windField'][_0x14ac8b(0x118,0x104)]=_0x2ae427);}get[_0x413bec(0x326,0x29f)](){function _0x1a6736(_0x359635,_0x5412bb){return _0x413bec(_0x359635-0x19e,_0x5412bb);}return this[_0x1a6736(0x487,0x505)];}set[_0x413bec(0x326,0x395)](_0x1bf3d3){this['setData'](_0x1bf3d3);}get[_0x92c83a(-0xd6,-0x145)](){let _0x4f5c5b=this['windData']['xmin'],_0x1a4288=this['windData']['xmax'],_0x4224f6=this[_0x49908b(0x3bf,0x3d1)][_0x49908b(0x490,0x404)],_0x142565=this[_0x125b98(0x3a6,0x36a)]['ymax'];_0x1a4288>=0x167&&_0x4f5c5b===0x0&&(_0x4f5c5b=-0xb4,_0x1a4288=0xb4);_0x4f5c5b=Math[_0x49908b(0x340,0x3ad)](_0x4f5c5b,-0xb4);function _0x49908b(_0x19bddd,_0x5cc1ec){return _0x413bec(_0x5cc1ec-0xe8,_0x19bddd);}_0x1a4288=Math['min'](_0x1a4288,0xb4),_0x4224f6=Math['max'](_0x4224f6,-0x5a),_0x142565=Math['min'](_0x142565,0x5a);function _0x125b98(_0x18f5af,_0x3a06ab){return _0x413bec(_0x18f5af-0xbd,_0x3a06ab);}return Cesium[_0x125b98(0x377,0x3c2)]['fromDegrees'](_0x4f5c5b,_0x4224f6,_0x1a4288,_0x142565);}['_showHook'](_0x19d3ee){function _0x5d18f2(_0x3cbf54,_0x4577cd){return _0x413bec(_0x3cbf54-0xb2,_0x4577cd);}function _0x4cb8a9(_0x497817,_0x59e487){return _0x413bec(_0x59e487- -0x518,_0x497817);}_0x19d3ee?this[_0x5d18f2(0x3da,0x38a)]():(this['windData']&&(this[_0x4cb8a9(-0x13e,-0x1af)][_0x5d18f2(0x3d8,0x45e)]=this['windData']),this['_removedHook']());}[_0x92c83a(-0x201,-0x177)](){function _0x29f7e4(_0x26f0a5,_0x5d922d){return _0x413bec(_0x5d922d- -0x40b,_0x26f0a5);}function _0x3ccd56(_0x5cdfe6,_0x5171ee){return _0x92c83a(_0x5171ee,_0x5cdfe6-0x129);}this['options'][_0x29f7e4(-0x1c2,-0x140)]?this['initWorker']():this[_0x29f7e4(-0xb4,-0x9b)]=new CanvasWindField(this[_0x3ccd56(0x20,-0xe)]);}[_0x413bec(0x328,0x2c1)](){this[_0x53f818(0xbf,0x100)]=this['_createCanvas']();const _0x257e61={};_0x257e61['willReadFrequently']=!![],this['canvasContext']=this['canvas']['getContext']('2d',_0x257e61);function _0x176d45(_0x3046db,_0x7fb421){return _0x413bec(_0x3046db- -0x366,_0x7fb421);}function _0x53f818(_0x396ad9,_0x27fa94){return _0x92c83a(_0x27fa94,_0x396ad9-0x1ea);}this[_0x53f818(0x12,0x13)](),this[_0x53f818(0xe1,0x9e)][_0x176d45(-0x40,-0x21)]&&this[_0x176d45(-0xc8,-0xc6)](this['options']['data']);}[_0x413bec(0x312,0x38a)](){this['clear']();function _0x37c67b(_0x4b5b13,_0x1e5aa3){return _0x92c83a(_0x4b5b13,_0x1e5aa3-0x4c9);}function _0x42fcd4(_0x58e61f,_0x38bd5c){return _0x413bec(_0x38bd5c-0x14d,_0x58e61f);}this['unbindEvent'](),this[_0x42fcd4(0x4a0,0x494)]&&(this['_map']['container'][_0x37c67b(0x33d,0x3ca)](this['canvas']),delete this[_0x42fcd4(0x47e,0x494)]);}['_createCanvas'](){const _0x2ca42a=mars3d__namespace['DomUtil'][_0x567ada(-0x1f4,-0x279)](_0x3ece4a(0x528,0x53d),_0x3ece4a(0x55e,0x51e),this['_map']['container']);_0x2ca42a['style']['position']='absolute',_0x2ca42a[_0x3ece4a(0x556,0x5ca)][_0x3ece4a(0x4f4,0x515)]='0px';function _0x567ada(_0x463fb3,_0x29d7c2){return _0x92c83a(_0x29d7c2,_0x463fb3- -0x9);}_0x2ca42a[_0x567ada(-0x106,-0x177)]['left']=_0x567ada(-0x215,-0x1a7),_0x2ca42a['style'][_0x567ada(-0x182,-0x1ca)]=this[_0x3ece4a(0x464,0x481)]['scene'][_0x3ece4a(0x528,0x4e2)][_0x567ada(-0x114,-0x16a)]+'px';function _0x3ece4a(_0x205f5d,_0x308159){return _0x92c83a(_0x308159,_0x205f5d-0x653);}return _0x2ca42a[_0x567ada(-0x106,-0x173)]['height']=this['_map']['scene']['canvas']['clientHeight']+'px',_0x2ca42a['style']['pointerEvents']=this[_0x3ece4a(0x526,0x520)]?_0x567ada(-0x19e,-0x1bd):'none',_0x2ca42a['style']['zIndex']=this['options']['zIndex']??0x9,_0x2ca42a[_0x567ada(-0x182,-0x1fb)]=this['_map']['scene']['canvas']['clientWidth'],_0x2ca42a[_0x3ece4a(0x4af,0x474)]=this[_0x3ece4a(0x464,0x477)]['scene']['canvas']['clientHeight'],_0x2ca42a;}['resize'](){function _0x36d97e(_0x5411d5,_0x552909){return _0x92c83a(_0x5411d5,_0x552909- -0x120);}function _0xa40f11(_0x210711,_0xf44255){return _0x92c83a(_0x210711,_0xf44255-0x3d8);}this['canvas']&&(this['canvas']['style'][_0xa40f11(0x213,0x25f)]=this['_map']['scene'][_0xa40f11(0x29d,0x2ad)][_0xa40f11(0x2cb,0x2cd)]+'px',this[_0x36d97e(-0x23b,-0x24b)]['style']['height']=this[_0x36d97e(-0x351,-0x30f)]['scene'][_0xa40f11(0x2cd,0x2ad)][_0x36d97e(-0x285,-0x216)]+'px',this['canvas']['width']=this['_map']['scene'][_0x36d97e(-0x1be,-0x24b)][_0xa40f11(0x2ed,0x2cd)],this[_0x36d97e(-0x2b7,-0x24b)]['height']=this['_map'][_0xa40f11(0x250,0x2ce)][_0x36d97e(-0x1e3,-0x24b)]['clientHeight']);}['bindEvent'](){function _0x2b9a96(_0x29f103,_0x386768){return _0x92c83a(_0x29f103,_0x386768-0x5a6);}const _0x421615=this;function _0x2e114a(_0x526f77,_0x4a9634){return _0x92c83a(_0x526f77,_0x4a9634- -0x8a);}let _0x461796=Date[_0x2e114a(-0x257,-0x299)]();(function _0x209ce2(){function _0x4a9c50(_0x4cf64c,_0x5c4b25){return _0x2e114a(_0x5c4b25,_0x4cf64c-0x726);}function _0x12fc86(_0x3e9d63,_0x50c978){return _0x2e114a(_0x50c978,_0x3e9d63-0x33c);}if(_0x421615['isDestroy'])return;_0x421615['_animateFrame']=window[_0x4a9c50(0x528,0x4f2)](_0x209ce2);if(_0x421615['show']&&_0x421615['windField']){const _0x2227f0=Date['now'](),_0x3dec93=_0x2227f0-_0x461796;_0x3dec93>_0x421615[_0x4a9c50(0x49c,0x4bc)]&&(_0x461796=_0x2227f0-_0x3dec93%_0x421615['frameTime'],_0x421615[_0x12fc86(0x175,0x151)]());}}(),window[_0x2b9a96(0x474,0x3f3)]('resize',this['resize']['bind'](this),![]),this['mouse_down']=![],this[_0x2e114a(-0x222,-0x1e1)]=![],this['options']['mouseHidden']&&(this[_0x2b9a96(0x346,0x3b7)]['on'](mars3d__namespace['EventType'][_0x2e114a(-0x171,-0x198)],this['_onMapWhellEvent'],this),this[_0x2b9a96(0x336,0x3b7)]['on'](mars3d__namespace['EventType']['mouseDown'],this['_onMouseDownEvent'],this),this[_0x2b9a96(0x3ee,0x3b7)]['on'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this)));}[_0x92c83a(-0x19f,-0x12f)](){function _0x1b681a(_0x8b3185,_0xf7ec8d){return _0x413bec(_0xf7ec8d- -0xf2,_0x8b3185);}window[_0x1b681a(0x29b,0x235)](this[_0x1b681a(0x250,0x20e)]);function _0x38154c(_0x5439b2,_0x123631){return _0x92c83a(_0x123631,_0x5439b2-0x61a);}delete this['_animateFrame'],window[_0x1b681a(0x2ca,0x27f)](_0x1b681a(0x27e,0x21d),this[_0x38154c(0x4b7,0x491)]),this['options']['mouseHidden']&&(this['_map']['off'](mars3d__namespace[_0x38154c(0x468,0x4b6)][_0x38154c(0x50c,0x4e3)],this[_0x1b681a(0x267,0x287)],this),this[_0x38154c(0x42b,0x477)][_0x38154c(0x515,0x501)](mars3d__namespace[_0x38154c(0x468,0x45e)]['mouseDown'],this[_0x38154c(0x509,0x47c)],this),this['_map']['off'](mars3d__namespace['EventType']['mouseUp'],this['_onMouseUpEvent'],this),this[_0x1b681a(0x14a,0x191)][_0x1b681a(0x22b,0x27b)](mars3d__namespace['EventType'][_0x38154c(0x4b2,0x4e6)],this['_onMouseMoveEvent'],this));}[_0x413bec(0x379,0x31b)](_0x53acd7){clearTimeout(this['refreshTimer']);if(!this['show']||!this['canvas'])return;this['canvas']['style']['visibility']='hidden',this['refreshTimer']=setTimeout(()=>{if(!this['show'])return;function _0x1b5b87(_0x4f5fdd,_0x1dd71b){return _0x8444(_0x1dd71b- -0xce,_0x4f5fdd);}function _0x5ea510(_0x3abc61,_0xd8ec54){return _0x8444(_0xd8ec54-0x2ee,_0x3abc61);}this['redraw'](),this[_0x1b5b87(0xee,0xbf)]['style']['visibility']=_0x5ea510(0x48e,0x441);},0xc8);}[_0x92c83a(-0xc3,-0x111)](_0x4588fb){this['mouse_down']=!![];function _0x1a0e56(_0x3f8d7b,_0x59f476){return _0x413bec(_0x3f8d7b- -0x4f7,_0x59f476);}function _0x698a53(_0x347fbe,_0x22686f){return _0x92c83a(_0x22686f,_0x347fbe-0x552);}this['_map']['off'](mars3d__namespace['EventType']['mouseMove'],this[_0x698a53(0x3d5,0x35f)],this),this[_0x1a0e56(-0x274,-0x286)]['on'](mars3d__namespace['EventType']['mouseMove'],this['_onMouseMoveEvent'],this);}['_onMouseMoveEvent'](_0x4d680d){function _0x3db6c8(_0x230198,_0x201240){return _0x92c83a(_0x230198,_0x201240-0x41e);}function _0x3a96e8(_0x54b89b,_0xf3cf16){return _0x92c83a(_0x54b89b,_0xf3cf16-0x411);}if(!this['show']||!this['canvas'])return;this[_0x3a96e8(0x2ab,0x25b)]&&(this[_0x3a96e8(0x29d,0x2e6)][_0x3a96e8(0x314,0x314)][_0x3db6c8(0x307,0x281)]='hidden',this['mouse_move']=!![]);}['_onMouseUpEvent'](_0x3c20b3){if(!this['show']||!this['canvas'])return;this['_map']['off'](mars3d__namespace[_0xcf893d(-0xcd,-0x66)]['mouseMove'],this['_onMouseMoveEvent'],this);this['mouse_down']&&this['mouse_move']&&this[_0xcf893d(-0x1f,0x8)]();this[_0xcf893d(-0x46,-0x57)][_0x24a093(0x420,0x414)][_0xcf893d(-0xb8,-0x89)]='visible',this[_0x24a093(0x342,0x35b)]=![];function _0xcf893d(_0x480fd4,_0x21c5c3){return _0x413bec(_0x480fd4- -0x38d,_0x21c5c3);}function _0x24a093(_0x416181,_0x1b7485){return _0x92c83a(_0x416181,_0x1b7485-0x511);}this[_0xcf893d(-0x72,-0xa5)]=![];}['setData'](_0x146315){function _0x2caeba(_0x21b36e,_0x293f60){return _0x413bec(_0x293f60- -0x2a6,_0x21b36e);}this[_0x2caeba(0xd8,0xd8)](),this['windData']=_0x146315,this['windField']['setDate'](_0x146315),this['redraw']();}['redraw'](){function _0x47d2a3(_0x4346dd,_0x3e5875){return _0x413bec(_0x3e5875- -0x401,_0x4346dd);}if(!this['show'])return;this['windField']['setOptions'](this[_0x47d2a3(-0x60,-0x98)]),this['update']();}['update'](){if(this['_updateIng'])return;function _0x139a32(_0x505088,_0x2a035e){return _0x413bec(_0x2a035e- -0x94,_0x505088);}function _0x1e771d(_0x59d737,_0x3c4e68){return _0x413bec(_0x3c4e68- -0x1cf,_0x59d737);}this['_updateIng']=!![];if(this['worker'])this['windField'][_0x1e771d(0xed,0x166)]();else{const _0x5b0092=this[_0x1e771d(0x165,0x1a1)][_0x1e771d(0x16f,0x1a7)]();this['_drawLines'](_0x5b0092);}this[_0x139a32(0x17d,0x1e2)]=![];}[_0x413bec(0x32f,0x321)](_0x4249b8){function _0x63164c(_0xed850d,_0x36c44d){return _0x413bec(_0xed850d- -0x65,_0x36c44d);}this[_0x63164c(0x21f,0x1ea)]=_0x4249b8,this['canvasContext']['globalCompositeOperation']='destination-in',this['canvasContext']['fillRect'](0x0,0x0,this['canvasWidth'],this['canvasHeight']),this['canvasContext'][_0x63164c(0x2cb,0x317)]='lighter',this['canvasContext'][_0x63164c(0x219,0x20f)]=0.9;function _0x3031a2(_0x117c1a,_0x51f908){return _0x92c83a(_0x117c1a,_0x51f908-0xfe);}const _0x342f1b=this['_map'][_0x3031a2(-0x89,-0xc)][_0x63164c(0x1ff,0x181)]!==Cesium[_0x3031a2(-0xaf,-0x90)][_0x63164c(0x249,0x2ae)],_0x2e01f8=this[_0x3031a2(-0xa4,-0xa0)]*0.25;if(this['_colorRamp'])for(let _0x28ef9b=0x0,_0x1245d2=_0x4249b8['length'];_0x28ef9b<_0x1245d2;_0x28ef9b++){const _0x123803=_0x4249b8[_0x28ef9b],_0x140ab8=this['_tomap'](_0x123803,_0x123803[_0x3031a2(-0xab,-0x99)],_0x123803['lat'],_0x123803[_0x63164c(0x2d7,0x2cb)]),_0x56902c=this[_0x3031a2(-0x84,-0xdd)](_0x123803,_0x123803[_0x63164c(0x226,0x253)],_0x123803[_0x3031a2(-0xbb,-0x89)],_0x123803['talt']);if(!_0x140ab8||!_0x56902c)continue;if(_0x342f1b&&Math['abs'](_0x140ab8[0x0]-_0x56902c[0x0])>=_0x2e01f8)continue;this[_0x63164c(0x22b,0x1dc)][_0x3031a2(-0x12a,-0x9c)](),this[_0x3031a2(-0xfb,-0xe4)][_0x3031a2(-0x57,-0x71)]=this['lineWidth'],this['canvasContext']['strokeStyle']=this['_colorRamp'][_0x63164c(0x2cf,0x34d)](_0x123803['speed']),this[_0x3031a2(-0x7a,-0xe4)][_0x63164c(0x2f5,0x31c)](_0x140ab8[0x0],_0x140ab8[0x1]),this['canvasContext'][_0x63164c(0x20f,0x181)](_0x56902c[0x0],_0x56902c[0x1]),this['canvasContext']['stroke']();}else{this[_0x3031a2(-0x164,-0xe4)][_0x3031a2(-0x23,-0x9c)](),this['canvasContext']['lineWidth']=this['lineWidth'],this[_0x63164c(0x22b,0x28d)][_0x3031a2(-0xd,-0x75)]=this['color'];for(let _0x2efbac=0x0,_0x1060c0=_0x4249b8['length'];_0x2efbac<_0x1060c0;_0x2efbac++){const _0x44810e=_0x4249b8[_0x2efbac],_0x9dd43b=this[_0x63164c(0x232,0x1a6)](_0x44810e,_0x44810e['lng'],_0x44810e['lat'],_0x44810e[_0x63164c(0x2d7,0x2d1)]),_0x387503=this[_0x3031a2(-0x100,-0xdd)](_0x44810e,_0x44810e['tlng'],_0x44810e['tlat'],_0x44810e['talt']);if(!_0x9dd43b||!_0x387503)continue;if(_0x342f1b&&Math['abs'](_0x9dd43b[0x0]-_0x387503[0x0])>=_0x2e01f8)continue;this['canvasContext'][_0x3031a2(0x55,-0x1a)](_0x9dd43b[0x0],_0x9dd43b[0x1]),this['canvasContext']['lineTo'](_0x387503[0x0],_0x387503[0x1]);}this['canvasContext']['stroke']();}}['_tomap'](_0x4fa97f,_0x37e144,_0xdfdae9,_0x130ff6){function _0x40e8b5(_0x3e031e,_0x1c27c8){return _0x92c83a(_0x1c27c8,_0x3e031e-0x427);}const _0x56b0ba=Cesium['Cartesian3'][_0x40e8b5(0x29a,0x26d)](_0x37e144,_0xdfdae9,_0x130ff6??this['fixedHeight']),_0x20590b=this['_map']['scene'];if(_0x20590b[_0xf62865(0x2ff,0x319)]===Cesium['SceneMode']['SCENE3D']){const _0x38294f=new Cesium['EllipsoidalOccluder'](_0x20590b[_0xf62865(0x3a6,0x387)]['ellipsoid'],_0x20590b['camera'][_0x40e8b5(0x2fb,0x34e)]),_0x5a2929=_0x38294f['isPointVisible'](_0x56b0ba);if(!_0x5a2929)return _0x4fa97f['age']=0x0,null;}const _0x25c911=mars3d__namespace['PointTrans'][_0x40e8b5(0x31f,0x2ba)](this[_0x40e8b5(0x238,0x2c2)][_0x40e8b5(0x31d,0x357)],_0x56b0ba);function _0xf62865(_0x20c1cf,_0x425d6b){return _0x413bec(_0x425d6b-0xb5,_0x20c1cf);}return _0x25c911?[_0x25c911['x'],_0x25c911['y']]:null;}['clear'](){function _0x1afff9(_0x4e98c4,_0x1fbad8){return _0x92c83a(_0x1fbad8,_0x4e98c4-0x5aa);}this['windField'][_0x1afff9(0x4b6,0x42f)](),delete this['windData'];}['initWorker'](){function _0x45ed22(_0x3c9273,_0x535913){return _0x413bec(_0x3c9273-0x15a,_0x535913);}this['worker']=new Worker(this['options']['worker']),this[_0x45ed22(0x425,0x3d2)]['onmessage']=_0x1549e9=>{function _0x3ec16a(_0x5b0e24,_0x4a6ca1){return _0x45ed22(_0x4a6ca1- -0x3b7,_0x5b0e24);}this[_0x3ec16a(0x61,0xd2)](_0x1549e9['data'][_0x5c7bbc(0x1fb,0x211)]);function _0x5c7bbc(_0x39ba89,_0x3c3761){return _0x45ed22(_0x3c3761- -0x236,_0x39ba89);}this['_updateIng2']=![];},this['windField']={'init':_0x36692e=>{const _0x528f29={};function _0x4bf655(_0x33c6e7,_0x32cb8c){return _0x45ed22(_0x33c6e7- -0x264,_0x32cb8c);}_0x528f29['type']='init',_0x528f29[_0x4bf655(0x25f,0x281)]=_0x36692e,this['worker']['postMessage'](_0x528f29);},'setOptions':_0x4eeef5=>{const _0x50f242={};function _0x3f4c1d(_0x1147b7,_0x25188a){return _0x45ed22(_0x1147b7- -0x2aa,_0x25188a);}_0x50f242['type']='setOptions';function _0x345ca9(_0x518e79,_0x5e5dad){return _0x45ed22(_0x5e5dad- -0x506,_0x518e79);}_0x50f242['options']=_0x4eeef5,this[_0x3f4c1d(0x17b,0x14f)][_0x3f4c1d(0x150,0x1da)](_0x50f242);},'setDate':_0x3925de=>{const _0x508b0a={};_0x508b0a['type']=_0x576dfc(-0x83,-0x76);function _0x48b8bf(_0x561cef,_0x135e1e){return _0x45ed22(_0x561cef- -0x639,_0x135e1e);}_0x508b0a['data']=_0x3925de;function _0x576dfc(_0xb00535,_0x5142af){return _0x45ed22(_0xb00535- -0x53a,_0x5142af);}this[_0x48b8bf(-0x214,-0x1bb)][_0x48b8bf(-0x23f,-0x2a8)](_0x508b0a);},'update':()=>{if(this[_0x1df318(-0x189,-0x1ae)])return;this[_0x1df318(-0x189,-0x159)]=!![];const _0x1224cb={};_0x1224cb['type']='update';function _0x1df318(_0x21402d,_0x3d5a9f){return _0x45ed22(_0x21402d- -0x54c,_0x3d5a9f);}function _0x6451a8(_0x55d939,_0x4d3c52){return _0x45ed22(_0x55d939- -0x210,_0x4d3c52);}this['worker']['postMessage'](_0x1224cb);},'clear':()=>{const _0x40142f={};_0x40142f['type']='clear';function _0x9c2211(_0x2069b3,_0x424d53){return _0x45ed22(_0x2069b3- -0xea,_0x424d53);}this['worker'][_0x9c2211(0x310,0x37f)](_0x40142f);}},this['windField']['init'](this['options']);}}mars3d__namespace['LayerUtil'][_0x92c83a(-0x22c,-0x1cf)](_0x92c83a(-0xeb,-0x130),CanvasWindLayer),mars3d__namespace[_0x413bec(0x2c7,0x309)][_0x92c83a(-0xe0,-0xfa)]=CanvasWindLayer,mars3d__namespace[_0x92c83a(-0xb8,-0x10d)]=CanvasWindField,mars3d__namespace[_0x92c83a(-0x1fb,-0x196)]=WindUtil,exports['CanvasWindField']=CanvasWindField,exports[_0x413bec(0x378,0x404)]=CanvasWindLayer,exports[_0x413bec(0x27a,0x2d9)]=WindLayer,exports['WindUtil']=WindUtil;const _0x46b49e={};function _0x8444(_0x9e3c87,_0x2e1b88){const _0x3e6853=_0x3e68();return _0x8444=function(_0x8444a,_0x424dd7){_0x8444a=_0x8444a-0xa4;let _0x126ca7=_0x3e6853[_0x8444a];return _0x126ca7;},_0x8444(_0x9e3c87,_0x2e1b88);}_0x46b49e['value']=!![],Object['defineProperty'](exports,'__esModule',_0x46b49e);
15
15
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mars3d-wind",
3
- "version": "3.8.3",
3
+ "version": "3.8.5",
4
4
  "description": "Mars3D平台插件,支持气象 风向图 功能插件",
5
5
  "main": "dist/mars3d-wind.js",
6
6
  "files": [
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "peerDependencies": {},
10
10
  "devDependencies": {
11
- "mars3d": "~3.8.3"
11
+ "mars3d": "~3.8.5"
12
12
  },
13
13
  "scripts": {
14
14
  "lint": "eslint ./src/**/*.{js,ts} --fix"